我是机器学习的新手,正试图了解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
如何得到所有折?
答案 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)返回一个生成器。遍历生成器将为您提供所有褶皱