Как исправить количество этикеток не совпадает с количеством образцов? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь запустить Классификатор случайного леса, после test_train_split, когда я запускаю, он выдает ошибку, что число выборок не совпадает с выборкой. У меня 960 строк и 26 столбцов.

X=pd.read_csv('csv',delimiter=',',sep=",",quotechar='"',header=None,quoting=2,error_bad_lines=False,na_values="")
X=X.drop([0,2,4,5],axis=1)
X= X.fillna('')
X= X[0:961].astype("int")
features= X.columns
Y= X[27] #my labels
Y= Y[0:961].astype("int") # Converting datatype string to int
Y=Y[np.isfinite(X[27])] # Remove NAN values from my label Y
x_train,y_train,x_test,y_test=train_test_split(X,Y,test_size=0.3)
clf = RandomForestClassifier(n_estimators=50,max_depth=3)
clf.fit(x_train,y_train)

1 Ответ

0 голосов
/ 08 января 2019

С вашим кодом есть две проблемы.

Во-первых, при удалении значений NaN из метки Y:

Y=Y[np.isfinite(X[27])] # Remove NAN values from my label Y

вы не делаете то же самое с вашими функциями X; следовательно, вы получите различное количество выборок для ваших функций X и меток Y, и train_test_split дает ожидаемую ошибку.

Поскольку вы удалили значения NaN из Y, нет смысла сохранять соответствующие строки в вашем X; Итак, вы должны добавить

X=X[np.isfinite(X[27])] # remove rows with NaN labels

Вторая проблема заключается в том, что ваше train_test_split назначение неверно (проверьте docs ); это должно быть

x_train, x_test, y_train, y_test = train_test_split(X,Y,test_size=0.3)
...