web-dev-qa-db-ja.com

Python RandomForest-不明なラベルエラー

RandomForestフィット関数の使用に問題がある

これは私のトレーニングセットです

         P1      Tp1           IrrPOA     Gz          Drz2
0        0.0     7.7           0.0       -1.4        -0.3
1        0.0     7.7           0.0       -1.4        -0.3
2        ...     ...           ...        ...         ...
3        49.4    7.5           0.0       -1.4        -0.3
4        47.4    7.5           0.0       -1.4        -0.3
... (10k rows)

Sklearn.ensemble RandomForestを使用して、他のすべての変数のおかげでP1を予測したい

colsRes = ['P1']
X_train = train.drop(colsRes, axis = 1)
Y_train = pd.DataFrame(train[colsRes])
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)

ここに私が得るエラーがあります:

ValueError: Unknown label type: array([[  0. ],
       [  0. ],
       [  0. ],
       ..., 
       [ 49.4],
       [ 47.4],

このラベルエラーについては何も見つかりませんでした。Python 3.5を使用します。どんなアドバイスでも大いに役立つでしょう!

16
Dragonfly

ラベル(y)データをrf.fit(X,y)に渡す場合、yが1Dリストであると想定されます。 Pandaフレームをスライスすると、常に2Dリストが作成されます。したがって、ユースケースで対立が発生します。 pandas DataFrameによって提供される2Dリストを、fit関数で期待される1Dリストに変換する必要があります。

最初に1Dリストを使用してみてください。

Y_train = list(train.P1.values)

これで問題が解決しない場合は、 MultinomialNB error: "Unknown Label Type" :に記載されている解決策を試すことができます。

Y_train = np.asarray(train['P1'], dtype="|S6")

あなたのコードは

colsRes = ['P1']
X_train = train.drop(colsRes, axis = 1)
Y_train = np.asarray(train['P1'], dtype="|S6")
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)
22
Gurupad Hegde

this SO post分類子には整数または文字列ラベルが必要です

次のように、代わりに回帰モデルへの切り替えを検討することもできます(各データムがフロートに見えるため、mightデータにより適しています)。

X_train = train.drop('P1', axis=1)
Y_train = train['P1']
rf = RandomForestRegressor(n_estimators=100)
rf.fit(X_train.as_matrix(), Y_train.as_matrix())
9
N. Wouda

パーティーには少し遅れているかもしれませんが、このエラーが発生し、y変数がtype(int)であることを確認して解決しました

 y = df['y_variable'].astype(int) 

電車のテストを分割する前に、他の人が言ったように、問題はRFよりもRFRegの方が適しているようです

1
RunD.M.C.