5

y_train_actual元の値を使用して、sci-kit 学習モデルからの予測の平均二乗誤差を計算しようとしていますsalaries

問題:ただし、mean_squared_error(y_train_actual, salaries)で、エラーが発生しますTypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'list(salaries)2 番目のパラメーターの代わりに使用するとsalaries、同じエラーが発生します。

mean_squared_error(y_train_actual, y_valid_actual)エラーが発生していますFound array with dim 40663. Expected 244768

の正しい配列型に変換するにはどうすればよいsklearn.netrucs.mean_squared_error()ですか?

コード

from sklearn.metrics import mean_squared_error

y_train_actual = [ np.exp(float(row)) for row in y_train ]
print mean_squared_error(y_train_actual, salaries)

エラー

TypeError                                 Traceback (most recent call last)
<ipython-input-144-b6d4557ba9c5> in <module>()
      3 y_valid_actual = [ np.exp(float(row)) for row in y_valid ]
      4 
----> 5 print mean_squared_error(y_train_actual, salaries)
      6 print mean_squared_error(y_train_actual, y_valid_actual)

C:\Python27\lib\site-packages\sklearn\metrics\metrics.pyc in mean_squared_error(y_true, y_pred)
   1462     """
   1463     y_true, y_pred = check_arrays(y_true, y_pred)
-> 1464     return np.mean((y_pred - y_true) ** 2)
   1465 
   1466 

TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'

コード

y_train_actual = [ np.exp(float(row)) for row in y_train ]
y_valid_actual = [ np.exp(float(row)) for row in y_valid ]

print mean_squared_error(y_train_actual, y_valid_actual)

エラー

ValueError                                Traceback (most recent call last)
<ipython-input-146-7fcd0367c6f1> in <module>()
      4 
      5 #print mean_squared_error(y_train_actual, salaries)
----> 6 print mean_squared_error(y_train_actual, y_valid_actual)

C:\Python27\lib\site-packages\sklearn\metrics\metrics.pyc in mean_squared_error(y_true, y_pred)
   1461 
   1462     """
-> 1463     y_true, y_pred = check_arrays(y_true, y_pred)
   1464     return np.mean((y_pred - y_true) ** 2)
   1465 

C:\Python27\lib\site-packages\sklearn\utils\validation.pyc in check_arrays(*arrays, **options)
    191         if size != n_samples:
    192             raise ValueError("Found array with dim %d. Expected %d"
--> 193                              % (size, n_samples))
    194 
    195         if not allow_lists or hasattr(array, "shape"):

ValueError: Found array with dim 40663. Expected 244768

コード

print type(y_train)
print type(y_train_actual)
print type(salaries)

結果

<type 'list'>
<type 'list'>
<type 'tuple'>

print y_train[:10]

[10.126631103850338, 10.308952660644293, 10.308952660644293, 10.221941283654663, 10.126631103850338, 10.126631103850338, 11.225243392518447, 9.9987977323404529, 10.043249494911286, 11.350406535472453]

給与を印刷する[:10]

('25000', '30000', '30000', '27500', '25000', '25000', '75000', '22000', '23000', '85000')

印刷リスト(給与)[:10]

['25000', '30000', '30000', '27500', '25000', '25000', '75000', '22000', '23000', '85000']

print len(y_train)

244768

プリントレンズ(給与)

244768
4

1 に答える 1

10

このTypeError問題は、給与が文字列のリストであり、y_train_actual が浮動小数点数のリストであることが原因です。それらは差し引くことができません。

2番目のエラーについては、両方の配列が同じサイズであることを確認する必要があります。そうしないと、それらを減算できません。

于 2013-05-02T04:49:05.837 に答える