lightGBMのTypeError: Wrong type(ndarray) for label. It should be list, numpy 1-D array or panda、について
受付中
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,076
lightGBMを使用していて、
TypeError: Wrong type(ndarray) for label.
It should be list, numpy 1-D array or pandas Series
というerrorが出現してしまいます。
print(X_train.shape) #(1000000, 1)
print(y_train.shape) #(1000000, 1)
print(type(X_train)) #<class 'numpy.ndarray'>
print(type(y_train)) #<class 'numpy.ndarray'>
上記の様なX_train,y_trainを使用して、以下の様に書いたところ上記errorが出てしまいます。
cv = KFold(n_splits=5, shuffle=True, random_state=0)
for fold_id, (train_index,valid_index) in enumerate(cv.split(X_train)):
X_tr = X_train[train_index] #⭐️
X_val = X_train[valid_index] #⭐️
y_tr = y_train[train_index] #⭐️
y_val = y_train[valid_index] #⭐️
lgb_train = lgb.Dataset(X_tr,y_tr)
lgb_val = lgb.Dataset(X_val,y_val)
model = lgb.train(params,lgb_train,n_estimators,valid_sets=[lgb_train,lgb_val],
verbose_eval=50, early_stopping_rounds=200, feval=f1_score_calc )
preds = model.predict(X_val, num_iteration=model.best_iteration)
# TypeError: Wrong type(ndarray) for label.
# It should be list, numpy 1-D array or pandas Series
X_train,y_train共にndarrayですが、shapeが(1000000, 1)であるので2-Dかと考え、
⭐️の箇所を、X_tr = X_train[train_index].ravel()として、全て1-Dに変えてみましたが、すると、
ValueError: Input numpy.ndarray must be 2 dimensional
と今度は2-Dでないといけないかの様なerrorが出てしまいます。
調べても良い解決策が見つからず、分かります方がいらっしゃればご教授頂ければと存じます。
よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
It should be list, numpy 1-D array or pandas Series
とあって、numpy arrayだとうまくいかないとのことだったので、list
あるいは panadas Series
で試してみてください。
- リスト
X_train = X_train.tolist()
- Series
import pandas as pd
X_train = pd.Series(X_train)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.33%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kabayan55
2020/06/10 22:28
上のエラーと下のエラー、それぞれエラー文を全部貼るとより適切な回答を得やすくなると思います。
エラー文のみですと、どの関数の何行目でエラーを吐いているかを読み取れません。コードだと model.predict の部分なのかなとは思っているのですが、内部の挙動がわからず問題箇所の原因を探るのが難しいです。