2017-02-16 90 views
1

我想了解從sklearn python模塊使用kfolds交叉驗證。使用sklearn cross_val_score和kfolds來擬合和幫助預測模型

我明白的基本流程:

  • 實例化的模型例如model = LogisticRegression()
  • 擬合模型例如model.fit(xtrain, ytrain)
  • 預測例如model.predict(ytest)
  • 使用例如通過val值來測試擬合模型的準確性。

我在哪裏困惑是使用sklearn kfolds與交叉val得分。據我瞭解,cross_val_score函數將適合模型並預測kfolds,從而爲您提供每次摺疊的準確性分數。

例如使用這樣的代碼:

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) 

所以,如果我有訓練和測試數據的數據集,我用的是cross_val_score功能與kfolds來確定每個折我的訓練數據的算法的精度,是model現在已經準備好並準備好對測試數據進行預測了? 所以在上面的情況下使用lr.predict

感謝您的任何幫助。

+0

我不這麼認爲,但你應該看看'GridSearchCV'。我幾乎總是用這個來代替'cross_val_score',因爲它基本上就像一個你可以擬合和預測的模型,對於調整模型參數很有用。如果你不想調整任何參數,你可以通過'{}'。 – justincai

回答

6

不是模型不適合。縱觀source code for 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會給你輸出一系列分數,你可以分析這些分數來知道估計器如何針對數據的不同摺疊來檢查數據是否適合數據。您可以know more about it here

需要適應整個訓練數據來估計,一旦你滿意的cross_val_score的結果,然後才能使用它來預測上測試數據。

+0

使用cross_val_score時,有什麼方法可以獲得訓練和測試時間嗎? 就我可以在源代碼中看到的,_fit_and_score返回fit_time和score_time,但我不確定在使用cross_val_score時是否有任何方式檢索這些。 –