質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1032閲覧

Pythonで二値分類をする際にエラーメッセージがでる

kumanko25

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/23 06:39

Pythonを使用し、JupiterLab(3.44)でSignateの
【練習問題】健診データによる肝疾患判定を行っています。
LightGBMを使用して二値分類を行おうと思い、モデル作成のところまでは進んだのですが、
モデルを実行した際に以下のエラーメッセージが発生しました。

実現したいこと

ここに実現したいことを箇条書きで書いてください。
エラーが発生せず、モデルを学習することができる

発生している問題・エラーメッセージ

ValueError: DataFrame for label cannot have multiple columns
エラーメッセージ

### 該当のソースコード ValueError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_988\2222427555.py in <module> ----> 1 model = lgb.train(params, 2 train_set = trains, 3 valid_sets = valids, 4 valid_names =["disease"], 5 num_boost_round=1000, ~\anaconda3\lib\site-packages\lightgbm\engine.py in train(params, train_set, num_boost_round, valid_sets, valid_names, fobj, feval, init_model, feature_name, categorical_feature, early_stopping_rounds, evals_result, verbose_eval, learning_rates, keep_training_booster, callbacks) 269 # construct booster 270 try: --> 271 booster = Booster(params=params, train_set=train_set) 272 if is_valid_contain_train: 273 booster.set_train_data_name(train_data_name) ~\anaconda3\lib\site-packages\lightgbm\basic.py in __init__(self, params, train_set, model_file, model_str, silent) 2603 ) 2604 # construct booster object -> 2605 train_set.construct() 2606 # copy the parameters from train_set 2607 params.update(train_set.get_params()) ~\anaconda3\lib\site-packages\lightgbm\basic.py in construct(self) 1813 else: 1814 # create train -> 1815 self._lazy_init(self.data, label=self.label, 1816 weight=self.weight, group=self.group, 1817 init_score=self.init_score, predictor=self._predictor, ~\anaconda3\lib\site-packages\lightgbm\basic.py in _lazy_init(self, data, label, reference, weight, group, init_score, predictor, silent, feature_name, categorical_feature, params) 1476 categorical_feature, 1477 self.pandas_categorical) -> 1478 label = _label_from_pandas(label) 1479 1480 # process for args ~\anaconda3\lib\site-packages\lightgbm\basic.py in _label_from_pandas(label) 609 if isinstance(label, pd_DataFrame): 610 if len(label.columns) > 1: --> 611 raise ValueError('DataFrame for label cannot have multiple columns') 612 if _get_bad_pandas_dtypes(label.dtypes): 613 raise ValueError('DataFrame.dtypes for label must be int, float or bool') ValueError: DataFrame for label cannot have multiple columns ```Python ソースコード import numpy as np import pandas as pd import matplotlib.pyplot as plt import glob import seaborn as sns import csv %matplotlib inline import sklearn.preprocessing as sp from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn import tree import lightgbm as lgb from sklearn.metrics import confusion_matrix from sklearn.metrics import accuracy_score tests = glob.glob("test.csv") train = glob.glob("train.csv") data_list = [] data_list.append(pd.read_csv(train[0],index_col=0)) df = pd.concat(data_list) data_list2 = [] data_list2.append(pd.read_csv(tests[0],index_col=0)) df2 = pd.concat(data_list2) drop_col = ["AG_ratio","Gender","TP","Alb","Age"] y_train = df["disease"] X_train = df.drop(drop_col,axis=1) X_train = X_train.drop("disease",axis=1) X_test = df2.drop(drop_col,axis=1) trains = lgb.Dataset(y_train,X_train) valids = lgb.Dataset(X_test) params = { "task":"train", "boosting_type":"gbdt", "objective":"binary", "metric":"auc", } model = lgb.train(params, train_set = trains, valid_sets = valids, valid_names =["disease"], num_boost_round=1000, early_stopping_rounds=100, ) ↑このモデルのところでエラーが出ます

試したこと

LightGBMのインストールしなおし、コードを一から打ち直す、分類方法をかえてみる

補足情報(FW/ツールのバージョンなど)

Pythonを学習しはじめたばかりで、周りに質問出来る人がおらず困っています。
もし分かる方がいらっしゃったら回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2022/12/23 06:50

ぱっとみて「trains = lgb.Dataset(y_train,X_train)」でデータ(X)とラベル(y)が逆に見えますが、意図したとおりでしょうか?
kumanko25

2022/12/23 07:21

本当ですね…。意図していない、ただの付け間違いです。ご指摘ありがとうございます。
meg_

2022/12/23 23:59

上記でエラーは改善しましたか?
kumanko25

2022/12/24 03:51

いえ、改善しませんでした…。 まだ解決方法模索中です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問