• 模型选择---KFold,StratifiedKFold k折交叉切分


    StratifiedKFold用法类似Kfold,但是他是分层采样,确保训练集,测试集中各类别样本的比例与原始数据集中相同。

    例子:

    import numpy as np 
    from sklearn.model_selection import KFold,StratifiedKFold
    
    X=np.array([
        [1,2,3,4],
        [11,12,13,14],
        [21,22,23,24],
        [31,32,33,34],
        [41,42,43,44],
        [51,52,53,54],
        [61,62,63,64],
        [71,72,73,74]
    ])
    
    y=np.array([1,1,0,0,1,1,0,0])
    #n_folds这个参数没有,引入的包不同,
    floder = KFold(n_splits=4,random_state=0,shuffle=False)
    sfolder = StratifiedKFold(n_splits=4,random_state=0,shuffle=False)
    
    for train, test in sfolder.split(X,y):
        print('Train: %s | test: %s' % (train, test))
        print(" ")
    
    for train, test in floder.split(X,y):
        print('Train: %s | test: %s' % (train, test))
        print(" ")
    
    

    结果:

    1. 
    Train: [1 3 4 5 6 7] | test: [0 2]
    
    Train: [0 2 4 5 6 7] | test: [1 3]
    
    Train: [0 1 2 3 5 7] | test: [4 6]
    
    Train: [0 1 2 3 4 6] | test: [5 7]
    
    2. 
    Train: [2 3 4 5 6 7] | test: [0 1]
    
    Train: [0 1 4 5 6 7] | test: [2 3]
    
    Train: [0 1 2 3 6 7] | test: [4 5]
    
    Train: [0 1 2 3 4 5] | test: [6 7]
    

    分析:可以看到StratifiedKFold 分层采样交叉切分,确保训练集,测试集中各类别样本的比例与原始数据集中相同。

  • 相关阅读:
    C#生成唯一值的方法汇总
    Ajax && json在springmvc中的使用
    spring集成mybatis
    mybatis iBatis
    springjdbc
    拦截器
    系统分层
    Java反射(reflect)
    springmvc
    spring 之 使用注解简化配置
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/9781646.html
Copyright © 2020-2023  润新知