web-dev-qa-db-ja.com

sklearn cross_val_scoreとkfoldsを使用して、モデルを適合させ、予測するのに役立てる

Sklearn pythonモジュールからkfolds相互検証を使用して理解しようとしています。

私は基本的な流れを理解しています:

  • モデルをインスタンス化します。例: model = LogisticRegression()
  • モデルのフィッティング例: model.fit(xtrain, ytrain)
  • 予測例: model.predict(ytest)
  • 使用例:適合モデルの精度をテストするためのクロスバルブスコア。

私が混乱しているのは、クロスヴァルスコアを持つsklearnkfoldsを使用していることです。私が理解しているように、cross_val_score関数はモデルに適合し、kfoldを予測して、各foldの精度スコアを提供します。

例えば次のようなコードを使用します。

kf = KFold(n=data.shape[0], n_folds=5, shuffle=True, random_state=8)
lr = linear_model.LogisticRegression()
accuracies = cross_val_score(lr, X_train,y_train, scoring='accuracy', cv = kf)

したがって、トレーニングデータとテストデータを含むデータセットがあり、kfoldsでcross_val_score関数を使用して、各フォールドのトレーニングデータのアルゴリズムの精度を決定する場合、modelは適合し、テストデータの予測の準備はできていますか?したがって、上記の場合はlr.predictを使用します

助けてくれてありがとう。

9
hselbie

モデルは適合していません。 cross_val_scoreのソースコード を見てください:

scores=parallel(delayed(_fit_and_score)(clone(estimator),X,y,scorer,
                                        train,test,verbose,None,fit_params)

ご覧のとおり、cross_val_scoreは、フォールドトレーニングデータを推定量に適合させる前に推定量のクローンを作成します。 cross_val_scoreは、データのさまざまなフォールドに対してEstimatorがどのように実行するかを分析して、データに適合しているかどうかを確認できるスコアの配列を出力します。あなたができる ここでそれについてもっと知る

cross_val_scoreの結果に満足したら、予測に使用する前に、トレーニングデータ全体を推定器に適合させる必要がありますテストデータについて。

14
Vivek Kumar