sklearn cross_val_score如何使用kfold?

How does sklearn cross_val_score use kfold?

我是机器学习的新手,正在尝试了解 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 如何获得所有折?

你需要调用Kf.split(dataset)来真正拆分数据。

澄清一下,KFold 是一个 class 而不是函数。

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

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

试试这个

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(数据集) returns 生成器。遍历生成器会给你所有的折叠