2017-02-16 49 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时是否有任何方式检索这些。 –