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

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

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

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

Q&A

解決済

1回答

3880閲覧

ValueError: Unknown label type 原因がわからないです

kaion

総合スコア1

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

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

0グッド

0クリップ

投稿2020/11/26 03:17

解決したいこと

なぜvalue errorが出たのかがわかりません。解決法を知りたいです。
自動車の走行距離予測をしたのですが、モデル作成して学習する段階でエラーが発生しました。
グーグルで検索はしてみたものの同様のエラーを引き起こしている方が見受けられず、解決方法がよくわからなかったため質問しました。

発生している問題・エラー

--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-48-9e7374166aef> in <module> 1 study = optuna.create_study(sampler=optuna.samplers.RandomSampler(seed=0)) ----> 2 study.optimize(objective, n_trials=20) 3 study.best_params /opt/conda/lib/python3.7/site-packages/optuna/study.py in optimize(self, func, n_trials, timeout, n_jobs, catch, callbacks, gc_after_trial, show_progress_bar) 337 if n_jobs == 1: 338 self._optimize_sequential( --> 339 func, n_trials, timeout, catch, callbacks, gc_after_trial, None 340 ) 341 else: /opt/conda/lib/python3.7/site-packages/optuna/study.py in _optimize_sequential(self, func, n_trials, timeout, catch, callbacks, gc_after_trial, time_start) 680 break 681 --> 682 self._run_trial_and_callbacks(func, catch, callbacks, gc_after_trial) 683 684 self._progress_bar.update((datetime.datetime.now() - time_start).total_seconds()) /opt/conda/lib/python3.7/site-packages/optuna/study.py in _run_trial_and_callbacks(self, func, catch, callbacks, gc_after_trial) 711 # type: (...) -> None 712 --> 713 trial = self._run_trial(func, catch, gc_after_trial) 714 if callbacks is not None: 715 frozen_trial = copy.deepcopy(self._storage.get_trial(trial._trial_id)) /opt/conda/lib/python3.7/site-packages/optuna/study.py in _run_trial(self, func, catch, gc_after_trial) 732 733 try: --> 734 result = func(trial) 735 except exceptions.TrialPruned as e: 736 message = "Setting status of trial#{} as {}. {}".format( <ipython-input-47-cd1aca4a1726> in objective(trial) 48 num_iteration=model.best_iteration) 49 ---> 50 score = log_loss(val_y,y_pred) 51 return score /opt/conda/lib/python3.7/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs) 71 FutureWarning) 72 kwargs.update({k: arg for k, arg in zip(sig.parameters, args)}) ---> 73 return f(**kwargs) 74 return inner_f 75 /opt/conda/lib/python3.7/site-packages/sklearn/metrics/_classification.py in log_loss(y_true, y_pred, eps, normalize, sample_weight, labels) 2192 lb.fit(labels) 2193 else: -> 2194 lb.fit(y_true) 2195 2196 if len(lb.classes_) == 1: /opt/conda/lib/python3.7/site-packages/sklearn/preprocessing/_label.py in fit(self, y) 435 436 self.sparse_input_ = sp.issparse(y) --> 437 self.classes_ = unique_labels(y) 438 return self 439 /opt/conda/lib/python3.7/site-packages/sklearn/utils/multiclass.py in unique_labels(*ys) 95 _unique_labels = _FN_UNIQUE_LABELS.get(label_type, None) 96 if not _unique_labels: ---> 97 raise ValueError("Unknown label type: %s" % repr(ys)) 98 99 ys_labels = set(chain.from_iterable(_unique_labels(y) for y in ys)) ValueError: Unknown label type: (array([22.59451179, 28.90502359, 35.83456984, 35.56561512, 36.3013514 , 35.60750768, 35.86269225, 28.87491295, 35.61716994, 35.20647437, 16.82089019, 26.11941417, 15.78761298, 36.01213921, 17.76725375, 23.40500653, 22.86447728, 26.71916695, 28.45776812, 28.36142444, 22.36496533, 27.68217789, 22.76016449, 36.05522341, 17.36098976, 35.48743429, 28.35037671, 23.01227349, 22.68577205, 44.7184269 , 17.89870707, 34.44463986, 23.08124429, 35.89353561, 35.54715086, 26.64345843, 23.20533902, 28.07958004, 33.67726238, 17.37683043, 22.75968551, 22.55056677, 36.2740012 , 36.34073259, 22.05089714, 17.37782491, 34.66072386, 35.49297302, 17.71885245, 34.66772443, 36.40349381, 35.63239535, 23.37250712, 17.67452124, 17.34427513, 17.25831382, 17.41499331, 23.0056828 , 22.82702594, 17.8254479 , 28.14694394, 26.74093766, 28.31097497, 23.2943741 , 17.30800176, 22.71509557, 16.86599171, 17.69463678, 17.90628397, 17.87201811, 28.20726497, 22.8104364 , 36.07334203, 36.01187998, 23.21599232, 22.73956128, 22.78242384, 22.81369193, 35.64000983, 44.68008394, 17.72888241, 35.67429971, 33.10170317, 23.00288713, 22.56051811, 17.44334087, 28.24218354, 21.93320039, 25.70872862, 17.97721088, 27.93024788, 17.93163347, 23.00870174, 35.76318905, 23.48625637, 17.4500792 , 23.46950582, 28.60920431, 17.90062131, 22.80655247]),)

該当するソースコード

python

1 2# trainの目的変数と説明変数の値を取得 3target = train['mpg'].values 4features = train.drop(['id','mpg'],axis=1).values 5 6# testデータ 7test_X = test.drop(['id'],axis=1).values 8 9# trainを学習データと検証データに分割 10(features , val_X , target , val_y) = train_test_split(features, target , test_size = 0.2) 11 12 13 14def objective(trial): 15 lgb_params = { 16 'task' : 'train', 17 'boosting_type' : 'gbdt', 18 'objective' : 'regression', 19 'metric' : {'l2'}, 20 'num_leaves' : 31, 21 'learning_rate' : 0.1, 22 'feature_fraction' : 0.9, 23 'bagging_fraction' : 0.8, 24 'bagging_freq': 5, 25 'verbose' : 0 26 } 27 lgb_train = lgb.Dataset(features, target) #学習用 28 29 lgb_eval = lgb.Dataset(val_X, val_y,reference=lgb_train) #Boosting用 30 31 #学習 32 model = lgb.train(lgb_params, lgb_train, 33 valid_sets=[lgb_train,lgb_eval], 34 num_boost_round=1000, 35 early_stopping_rounds=10, 36 verbose_eval=10) 37 38 y_pred = model.predict(val_X, 39 num_iteration=model.best_iteration) 40 41 score = log_loss(val_y,y_pred) 42 return score

自分で試したこと

objectiveをmulticlassやregressorにしてパラメーターを変更してはみたもののうまくいかなかった
val_yに対してerrorが発生しているようです

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

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

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

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

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

guest

回答1

0

ベストアンサー

score = log_loss(val_y,y_pred)log_losssklearn.metrics.log_lossであれば、第一引数はラベル(文字列か整数値)にしてください。

※分類問題ですよね?

投稿2020/11/26 04:27

meg_

総合スコア10580

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

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

kaion

2020/11/26 11:52

回答ありがとうございます。  scoreのところを変えたら直りました。 回帰問題なのにlogloss使ってたのが原因でした(^^;) 本当に助かりました!!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問