【问题标题】:How does sklearn cross_val_score use kfold?sklearn cross_val_score如何使用kfold?
【发布时间】:2019-10-11 21:10:36
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    试试这个

    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) 返回一个生成器。遍历生成器会给你所有的折叠

    【讨论】:

    • 我们没有将 k 折传递给 cross_val_score 函数。只是 KFold 对象。我的意思是,如果您想查看由 KFold.split() 函数创建的所有折叠,这确实会有所帮助
    • 谢谢,我得到了 K 折,现在如何将它传递给 cross_val_score?
    【解决方案2】:

    您需要调用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 拆分为2 折。 Y_train 也会被类似地拆分。

    【讨论】:

    • 感谢您分解它让我理解!
    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2021-11-27
    • 2020-05-13
    • 2021-10-21
    • 2017-11-10
    • 2018-03-06
    • 2020-07-28
    • 2018-05-07
    相关资源
    最近更新 更多