Я бегу на Python 3 с помощью Spyder 2, и при попытке запустить этот код:LabelEncoder ошибка при использовании Sklearn в цикле
from sklearn.preprocessing import LabelEncoder
cv=train.dtypes.loc[train.dtypes=='object'].index
print (cv)
le=LabelEncoder()
for i in cv:
train[i]=le.fit_transform(train[i])
test[i]=le.fit_transform(test[i])
Я получаю эту ошибку:
le=LabelEncoder()
for i in cv:
train[i]=le.fit_transform(train[i])
test[i]=le.fit_transform(test[i])
Traceback (most recent call last):
File "<ipython-input-5-8739984f61b2>", line 3, in <module>
train[i]=le.fit_transform(train[i])
File "C:\Users\myname\Anaconda3\lib\site-packages\sklearn\preprocessing\label.py", line 127, in fit_transform
self.classes_, y = np.unique(y, return_inverse=True)
File "C:\Users\myname\Anaconda3\lib\site-packages\numpy\lib\arraysetops.py", line 195, in unique
perm = ar.argsort(kind='mergesort' if return_index else 'quicksort')
TypeError: unorderable types: str() > float()
достаточно странно , если я вызову кодировщик в указанном столбце в моих данных, результат будет успешным. Например:
le.fit_transform(test['Race'])
Результаты в:
le.fit_transform(test['Race'])
Out[7]: array([2, 4, 4, ..., 4, 1, 4], dtype=int64)
Я пробовал:
float(le.fit_transform(train[i]))
str(le.fit_transform(train[i]))
Оба не работали.
Может кто-нибудь, пожалуйста, помогите мне?