TypeError: unsupported operand type(s) -: 'numpy.ndarray' et 'numpy.ndarray'
Je suis en train de calculer l'Erreur Quadratique Moyenne de prédiction y_train_actual
de ma sci-kit d'apprendre le modèle avec les valeurs d'origine salaries
.
Problème: Cependant avec mean_squared_error(y_train_actual, salaries)
, j'obtiens l'erreur TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
. À l'aide de list(salaries)
au lieu de salaries
que le 2ème paramètre donne la même erreur.
Avec mean_squared_error(y_train_actual, y_valid_actual)
j'obtiens l'erreur Found array with dim 40663. Expected 244768
Comment puis-je convertir à la bonne matrice des types pour les sklearn.netrucs.mean_squared_error()
?
Code
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)
Erreur
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'
Code
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)
Erreur
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
Code
print type(y_train)
print type(y_train_actual)
print type(salaries)
Résultat
<type 'list'>
<type 'list'>
<type 'tuple'>
impression y_train[:10]
[10.126631103850338, 10.308952660644293, 10.308952660644293, 10.221941283654663, 10.126631103850338, 10.126631103850338, 11.225243392518447, 9.9987977323404529, 10.043249494911286, 11.350406535472453]
impression salaires:10]
('25000', '30000', '30000', '27500', '25000', '25000', '75000', '22000', '23000', '85000')
liste d'impression(salaires)[:10]
['25000', '30000', '30000', '27500', '25000', '25000', '75000', '22000', '23000', '85000']
print len(y_train)
244768
print len(salaires)
244768
shape
de y_train? Ma conjecture est que y_train_actual est un list
de ndarrays
, qui pourrait se retrouver dans un conflit au sein de mean_square_error()
.Je reçois le message d'erreur
AttributeError: 'list' object has no attribute 'shape'
Vrai que. Avez-vous une idée des dimensions de y_train?
len(y_train)
donne 244768
OriginalL'auteur Nyxynyx | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
La
TypeError
problème vient du fait que les salaires étant une liste de chaînes pendant y_train_actual est une liste de chars. Celles-ci ne peuvent être soustraits.Pour votre deuxième erreur, vous devriez assurez-vous que les deux tableaux sont de la même taille, sinon il ne peut pas soustraire.
float() argument must be a string or a number
Avez-vous utilisé
np.float()
, qui agit sur lesnumpy.ndarrays
?yup j'ai fait d'utiliser
np.float()
au lieu defloat()
Voir mon fix dans la réponse ci-dessus. Vous avez réellement besoin de fonte de la liste comme un
np.array()
avecnp.float
comme sondtype
.Essayé et obtenu l'erreur
TypeError: unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'
OriginalL'auteur fgb