KFold():K折交叉验证

原理:

模型在验证数据中的评估常用的是交叉验证,又称循环验证。它将原始数据分成K组(K-Fold),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型。这K个模型分别在验证集中评估结果,最后的误差MSE(Mean Squared Error)加和平均就得到交叉验证误差。交叉验证有效利用了有限的数据,并且评估结果能够尽可能接近模型在测试集上的表现,可以做为模型优化的指标使用。

KFold(n_splits=’warn’, shuffle=False, random_state=None)
参数:
n_splits 表示划分为几块(至少是2)

shuffle 表示是否打乱划分,默认False,即不打乱

random_state 表示是否固定随机起点,Used when shuffle == True.

方法
1,get_n_splits([X, y, groups]) 返回分的块数
2,split(X[,Y,groups]) 返回分类后数据集的index

例子:

import numpy as np
from sklearn.model_selection import KFold

a = np.arange(27).reshape(9, 3)
print(a)
b = np.arange(9).reshape(9, 1)
kfold = KFold(n_splits=3, shuffle=False)
index = kfold.split(X=a)
print(list(index))
print(type(index))
index = kfold.split(X=a, y=b)
for train_index, test_index in index:
    print("-------------------------------------------------")
    print(a[train_index])  # 注意如果a是datafram类型就得用a.iloc[tain_index], 因为a[train_index]会被认为是访问列
    print(a[test_index])

输出:

[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]
 [15 16 17]
 [18 19 20]
 [21 22 23]
 [24 25 26]]
[(array([3, 4, 5, 6, 7, 8]), array([0, 1, 2])), (array([0, 1, 2, 6, 7, 8]), array([3, 4, 5])), (array([0, 1, 2, 3, 4, 5]), array([6, 7, 8]))]
<class 'generator'>
-------------------------------------------------
[[ 9 10 11]
 [12 13 14]
 [15 16 17]
 [18 19 20]
 [21 22 23]
 [24 25 26]]
[[0 1 2]
 [3 4 5]
 [6 7 8]]
-------------------------------------------------
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [18 19 20]
 [21 22 23]
 [24 25 26]]
[[ 9 10 11]
 [12 13 14]
 [15 16 17]]
-------------------------------------------------
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]
 [12 13 14]
 [15 16 17]]
[[18 19 20]
 [21 22 23]
 [24 25 26]]


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值