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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

解決済

クロスバリデーションのスコアについて

shu214
shu214

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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

1回答

0評価

0クリップ

913閲覧

投稿2020/05/12 17:30

前提・実現したいこと

勾配ブ―スティング(lightGBM)の交差検証でスコアの平均をとりたいのですが、そこでエラーが発生します。

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

ValueError Traceback (most recent call last) <ipython-input-55-f70fb4b38d33> in <module> 14 va_pred = model.predict(train.iloc[valid_index]) 15 va_target = y[valid_index] ---> 16 score += np.sqrt(mean_squared_error(va_pred, va_target)) / NFOLDS 17 y_oof[valid_index] = va_pred 18 print("{:2.0f}分{:2.0f}秒".format((time.time()-fold_start)//60,(time.time()-fold_start)%60)) /usr/anaconda3.7/lib/python3.7/site-packages/sklearn/metrics/regression.py in mean_squared_error(y_true, y_pred, sample_weight, multioutput) 237 """ 238 y_type, y_true, y_pred, multioutput = _check_reg_targets( --> 239 y_true, y_pred, multioutput) 240 check_consistent_length(y_true, y_pred, sample_weight) 241 output_errors = np.average((y_true - y_pred) ** 2, axis=0, /usr/anaconda3.7/lib/python3.7/site-packages/sklearn/metrics/regression.py in _check_reg_targets(y_true, y_pred, multioutput) 75 check_consistent_length(y_true, y_pred) 76 y_true = check_array(y_true, ensure_2d=False) ---> 77 y_pred = check_array(y_pred, ensure_2d=False) 78 79 if y_true.ndim == 1: /usr/anaconda3.7/lib/python3.7/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator) 571 if force_all_finite: 572 _assert_all_finite(array, --> 573 allow_nan=force_all_finite == 'allow-nan') 574 575 shape_repr = _shape_repr(array.shape) /usr/anaconda3.7/lib/python3.7/site-packages/sklearn/utils/validation.py in _assert_all_finite(X, allow_nan) 54 not allow_nan and not np.isfinite(X).all()): 55 type_err = 'infinity' if allow_nan else 'NaN, infinity' ---> 56 raise ValueError(msg_err.format(type_err, X.dtype)) 57 58
Input contains NaN, infinity or a value too large for dtype('float64').

該当のソースコード

Python

NFOLDS = 4 folds = KFold(n_splits=NFOLDS, random_state=777) start = time.time() y_preds = np.zeros(train.shape[0]) y_oof = np.zeros(train.shape[0]) score = 0 splits = folds.split(train, y) for fold_n, (train_index, valid_index) in enumerate(splits): fold_start = time.time() lg_train = lgb.Dataset(train.loc[train_index], label=y[train_index]) lg_test = lgb.Dataset(train.loc[valid_index], label=y[valid_index]) model = lgb.train(params, lg_train, 10000, valid_sets = [lg_train, lg_test], verbose_eval=500, early_stopping_rounds=500) va_pred = model.predict(train.loc[valid_index]) va_target = y[valid_index] score += np.sqrt(mean_squared_error(va_pred, va_target)) / NFOLDS y_oof[valid_index] = va_pred print("{:2.0f}分{:2.0f}秒".format((time.time()-fold_start)//60,(time.time()-fold_start)%60)) print("合計") print("{:2.0f}分{:2.0f}秒".format((time.time()-start)//60,(time.time()-start)%60)) print(f"\nMean RMSLE = {score}") print(f"Out of folds RMSLE = {np.sqrt(mean_squared_error(y_oof, y))}") print() va_pred.mean(axis=0)

試したこと

検証データとその予測値をデータフレームに格納して中身を確認しました。
欠損値や無限大は含まれていないようでした。
予測値に少数はありますが、計算不可能になるほどではないような気がします。(有効桁数が何桁かはわからないです)

ご回答よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

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