sklearn.ensemble
からRandomForestRegressor
に合わせる必要があります。
forest = ensemble.RandomForestRegressor(**RF_tuned_parameters)
model = forest.fit(train_fold, train_y)
yhat = model.predict(test_fold)
このコードは、データの前処理(train_y
)を行うまで常に機能していました。エラーメッセージは言う:
DataConversionWarning:1d配列が予想されるときに列ベクトルyが渡されました。たとえば、ravel()を使用して、yの形状を(n_samples、)に変更してください。
モデル= 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)
同じ問題がありました。問題は、ラベルが行形式であるのに列形式であることでした。 np.ravel()
を使用します
knn.score(training_set, np.ravel(training_labels))
これで解決することを願っています。
これを行う別の方法は、ravel
を使用することです
model = forest.fit(train_fold, train_y.values.reshape(-1,))