sklearn cross_val_score如何使用kfold?

时间:2019-05-25 16:18:58

标签: python python-2.7 scikit-learn cross-validation

我是机器学习的新手,正试图了解cross_val_score使用Kfold将数据拆分为k折。

kf = KFold(n_splits=2)
cv_results =cross_val_score(model, X_train, Y_train, cv=kf)

我知道kfold拆分了数据,但是我尝试将其打印出来

dataset = [[1,1,1],[2,2,2],[3,3,3],[4,4,4],[5,5,5],[6,6,6],[7,7,7],[8,8,8]]
kf =  KFold(n_splits=2)
print kf

>>> KFold(n_splits=2, random_state=None, shuffle=False)

它没有显示k折,但是cross_val_score如何得到所有折?

2 个答案:

答案 0 :(得分:3)

您需要调用Kf.split(dataset)来实际拆分数据。 Click here to see how KFold works

为了明确起见,KFold是一个类而不是一个函数。

kf = KFold(n_splits=2)创建一个KFold对象。 并且print kf只会打印出类对象。

,当您调用cross_val_score(model, X_train, Y_train, cv=kf)时,您会将对象kf传递给cross_val_score函数,其中将调用kf.split(X_train)来将X_train分成两部分。 Y_train也将进行类似的拆分。

答案 1 :(得分:0)

尝试一下

kf = KFold(n_splits=2)
generator = kf.split(dataset)
for train, test in generator:
    print "*" * 20
    print "Training Data:"
    for i in train:
        print dataset[i]
    print "Test Data:"
    for j in test:
        print dataset[j]

kf.split(dataset)返回一个生成器。遍历生成器将为您提供所有褶皱