zoukankan      html  css  js  c++  java
  • train_test_split, 关于随机抽样和分层抽样

    https://zhuanlan.zhihu.com/p/49991313

    在将样本数据分成训练集和测试集的时候,应当谨慎地考虑一下是采用纯随机抽样,还是分层抽样。

    通常,数据集如果足够大,纯随机抽样的方式,将样本数据分成两个子集是没有太大的问题。

    如果不是,纯随机抽样肯可能会导致抽样数据偏差,影响训练效果,降低预测模型预测的准确性。

    设想调查公司需要做1000份抽样调查,调查的问题和性别可能有较大的相关性。如果想让调查结果代表全国男性和女性对这些问题的看法,假设全国人口男女比例大致为60:40,那么在1000份问卷也应当尽量保持男女比例达到同样的比例,即参加问卷调查的男女数差不多是600和400。

    这个就是分层抽样。

    如果参加问卷的男女数比例很不一样,比如女性占到了60%或更多,那么调查结伦就会出现重大偏差。

    使用sklearn.model_selection.train_test_split,参数stratify即用来指定按照某一特征进行分层抽样,生成训练集和测试集。

    看一下随机抽样和分层抽样时,按照某一特征的取值,在训练集的占比情况。

    income_count = housing['income_cat'].value_counts().sort_index()
    print('
    After categorized:
    {}'.format(income_count))
    income_count.plot.bar()
    plt.show()
    
    print('Overall dataset, distribution of each category: (%)')
    print(income_count/len(housing)*100)
    
    # random split
    train_set, test_set = train_test_split(housing, random_state=42)
    train_set_income_count = train_set['income_cat'].value_counts().sort_index()
    print('
    Random split train dataset, distribution: (%)')
    print(train_set_income_count/len(train_set)*100)
    
    # stratify split
    train_set, test_set = train_test_split(housing, 
                         stratify=housing['income_cat'], random_state=42)
    train_set_income_count = train_set['income_cat'].value_counts().sort_index()
    print('
    Startify split train dataset, distribution: (%)')
    print(train_set_income_count/len(train_set)*100)
    

    得到结果如下:

    可以看到分层抽样所分出来的训练集(和测试集)数据在关键特征上具有和总体数据集上基本一致的分布。

    因此采用分层抽样来生成训练集和测试集将会更严谨。

  • 相关阅读:
    IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET
    mysql 存储过程 循环
    Mysql 遇到过的自带函数使用
    Mysql:is not allowed to connect to this MySQL server
    mysql 删除或更新时出现 you are usering safe update model 的解决方案
    将一个服务器的表数据插入到另一个服务器的表中
    C#操作Excel无法删除worksheet解决方案
    安装MongoDB数据库的注意事项
    Python爬取小猪短租,用的是lxml解析器
    使用Python爬取腾讯房产的新闻,用的Python库:requests 、re、time、BeautifulSoup ​​​​
  • 原文地址:https://www.cnblogs.com/fengff/p/10008363.html
Copyright © 2011-2022 走看看