ikeid
@ikeid

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Learning_curveの挙動

解決したいこと

sklearnのlearning_curveを使おうとしたところ正しいはずの設定を受け入れてもらえません。解決策を教えてください。

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

TypeError: learning_curve() got an unexpected keyword argument 'cv'

例)

NameError (uninitialized constant World)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

from sklearn.model_selection import learning_curve
def learning_curve(X):
    params = {'num_leaves': 213, 'max_depth': 83, 'learning_rate': 0.02389124862359534, 'n_estimators': 252, 'min_child_samples': 96, 'subsample': 0.35136941304074315, 'colsample_bytree': 0.40299266661649324, 'reg_alpha': 27.11897263840057, 'reg_lambda': 1.0900074255522185}
    estimator = lgb.LGBMClassifier(**params)
    train_sizes, train_scores, test_scores = learning_curve(estimator, X, y, cv=10, random_state=42, shuffle=True)
    train_scores_mean = np.mean(train_scores, axis=1)
    train_scores_std = np.std(train_scores, axis=1)
    test_scores_mean = np.mean(test_scores, axis=1)
    test_scores_std = np.std(test_scores, axis=1)
    plt.figure()
    plt.title("Learning Curve")
    plt.xlabel("Training set size")
    plt.ylabel("Score")

    # Traing score と Test score をプロット
    plt.plot(train_sizes, train_scores_mean, 'o-', color="r", label="Training score")
    plt.plot(train_sizes, test_scores_mean, 'o-', color="g", label="Test score")

    # 標準偏差の範囲を色付け
    plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, color="r", alpha=0.2)
    plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, color="g", alpha=0.2)

    plt.ylim(0.2, 1.0)
    plt.legend(loc="best")

    plt.show()
learning_curve(x)

自分で試したこと

試しにcvを消すと今度はrandom_stateやshuffleについて同様のエラーが起きます。
ノートブックをシャットダウンしてもダメでした。
sklearnのバージョンは1.0.2です。

0

1Answer

sklearnからimportしてきたlearning_curveと同じ名前を持つ関数learning_curve(X)を定義して上書きされたため,ikeidさんが定義されたlearning_curve(X)にはキーワード引数cvは無いよという状態です.

learning_curveを使ってグラフをplotする関数なのでplot_learning_curveが適切だと思います.そしてこの変更は今出ているエラーを解決します.

  from sklearn.model_selection import learning_curve
- def learning_curve(X):       # ここで上書きしてしまっているので
+ def plot_learning_curve(X):  # 適宜変更してください
0Like

Comments

  1. @ikeid

    Questioner

    うっかりしていました。。。確かに名前を変えたらうまくいきました。ありがとうございます。

Your answer might help someone💌