项目开发python-----测试集与训练集划分模块

划分训练集与测试集

在进行划分训练集与测试集时,需要注意两点:

1、新的数据过来,你的划分方法是否仍然有效—唯一标识
解决方法:可以使用哈希规则给每个样本富赋予唯一的标识,也可以对每个样本按照行索引作为标识,但是需要确保新数据放在后面。

2、有时候某个特征对研究对象目标非常的重要,为了使得模型有广泛性,此时划分测试集与训练集的时候需要着重考虑该特征的分布均衡性—分层抽样

随机抽样

1、 利用sklearn中函数train_test_split()
2、自定义模块

 def split_train_test(data,test_ratio):
        np.random.seed(42)
        shuffled_indices = np.random.permutation(len(data))
        test_set_size = int(len(data) * test_ratio)
        test_indices = shuffled_indices[:test_set_size]
        train_indices = shuffled_indices[test_set_size:]
        return data.iloc[train_indices], data.iloc[test_indices]

分层抽样

###这里以housing数据集合中特征median_income作为分层抽样的特征

####先要确定分层
housing["income_cat"] = np.ceil(housing["median_income"] / 1.5)
housing["income_cat"].where(housing["income_cat"] < 5, 5.0, inplace=True)

####再来抽样
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(housing, housing["income_cat"]):
    strat_train_set = housing.loc[train_index]
    strat_test_set = housing.loc[test_index]
    
####删除定义的分层,还原数据
for set_ in (strat_train_set, strat_test_set):
set_.drop("income_cat", axis=1, inplace=True)

当测试集与训练集划分好之后,下一步进行数据预处理工作。

数据下载:https://github.com/yushiyin/handson-ml/tree/master/datasets/housing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值