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
を使用します
助けてくれてありがとう。
モデルは適合していません。 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
の結果に満足したら、予測に使用する前に、トレーニングデータ全体を推定器に適合させる必要がありますテストデータについて。