Ответ 1
Измените эту строку:
model = forest.fit(train_fold, train_y)
в
model = forest.fit(train_fold, train_y.values.ravel())
Мне нужно установить RandomForestRegressor
из sklearn.ensemble
.
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
Этот код всегда работал до тех пор, пока я не сделал некоторую предварительную обработку данных (train_y
).
В сообщении об ошибке говорится:
DataConversionWarning: вектор-столбец y был передан, когда ожидался 1d-массив. Измените форму y на (n_samples), например, используя ravel().
model = forest.fit(train_fold, train_y)
Ранее train_y
был серией, теперь это numpy-массив (это вектор-столбец). Если я применяю train_y.ravel()
, то он становится вектором строки и не появляется сообщение об ошибке, поскольку шаг прогнозирования занимает очень много времени (на самом деле он никогда не заканчивается...).
В документах RandomForestRegressor
я обнаружил, что train_y
должен быть определен как y : array-like, shape = [n_samples] or [n_samples, n_outputs]
Любая идея, как решить эту проблему?
Измените эту строку:
model = forest.fit(train_fold, train_y)
в
model = forest.fit(train_fold, train_y.values.ravel())
Я также столкнулся с этой ситуацией, когда я пытался обучить классификатор KNN. но похоже, что предупреждение исчезло после того, как я изменился: knn.fit(X_train,y_train)
в knn.fit(X_train, np.ravel(y_train,order='C'))
Перед этим я использовал import numpy as np
.
используйте ниже код:
model = forest.fit(train_fold, train_y.ravel())
если вы по-прежнему получаете пощечину по ошибке, как указано ниже?
Unknown label type: %r" % y
используйте этот код:
y = train_y.ravel()
train_y = np.array(y).astype(int)
model = forest.fit(train_fold, train_y)
Еще один способ сделать это - использовать ravel
model = forest.fit(train_fold, train_y.values.reshape(-1,))
У меня такая же проблема. Проблема заключалась в том, что метки были в формате столбца, хотя он ожидал этого подряд. используйте np.ravel()
knn.score(training_set, np.ravel(training_labels))
Надеюсь, это решит это.