【数据处理与分析】 数据集的创建

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【数据处理与分析】 数据集的创建脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

创建测试集

随机选择一些实例,通常是数据集的20%

import numpy as np

def splIT_train_test(data, test_ratio):
    shuffled_indices = np.random.PErmutation(len(data))
    test_set_size = int(len(data)*test_ratio)
    test_indices = shuffled_indices[:test_set_ratio]
    train_indices = shuffled_indices[test_set_ration:]
    return data.iloc[train_indices], data.iloc[test_indices]

上述方法每次运行都会产生不同的数据集,解决方法之一可以在第一次运行程序后保存数据集,随后的运行只是加载。另一种方法在调用np.random.permutation()前设置一个随机数生成器种子,例如np.random.seed(42),从而使它始终生成相同的随机索引。

 

Scikit-Learn提供函数train_test_split(),与前面定义的函数train_test_split()几乎相同。它有random_state参数,用于设置生成随机生成器种子。

From sklearn.model_selection import train_test_split

train_set, test_set = train_test_split(data, test_size=0.2, random_state=42)

 

上述方法在获取更新的数据时会中断,常见的解决方法是每个实例都使用一个标识符决定是否进入测试集。例如计算每个实例标识符的哈希值,若小于等于最大哈希值的20%, 则将该实例放入测试集。

from zlib import crc32

def test_set_check(identifier, test_ratio):
    return crc32(np.int64(identifier)) &amp; 0xffffffff < test_ratio * 2**32

def split_train_test_by_id(data, test_ratio, id_column):
    ids = data[id_column]
    in_test_set = ids.apply(lambda id_: test_set_check(id_, test_ratio))
    return data.loc[~in_test_set], data.loc[in_test_set]

 

有时数据集分为不同类别(如男性52%,女性48%),需要分层抽样,纯随机抽样会导致测试集抽样偏斜。

使用Scikit_Learn的StratifiedShuffleSplit类:

from sklearn.model_selection import StratifiedShuffleSplit

split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
for train_index, test_index in split,split(data, data["some_feature"]):
    strat_train_set = data.loc[train_index]
    strat_test_set = data.loc[test_index]

 

脚本宝典总结

以上是脚本宝典为你收集整理的【数据处理与分析】 数据集的创建全部内容,希望文章能够帮你解决【数据处理与分析】 数据集的创建所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。