一个完整的机器学习项目——代码解析(三)

本文详细解析了如何在机器学习项目中划分和优化测试集,包括使用实例ID、行索引以及sklearn函数进行数据划分,并介绍了中位数分层划分的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我又来解析代码了,今天解析的部分是优化测试集。
1、使用每个实例的ID来判定这个实例是否应该放入测试集(假设每个实例都有唯一并且不变的ID)

import hashlib  #提供字符加密功能,将md5和sha模块整合到了一起

def test_set_check(identifier,test_ratio,hash):
    return hash(np.int64(identifier)).digest()[-1] < 256 * test_ratio #求出ID哈希值最后一个字节是否满足<256*ratio

def split_train_test_by_id(data, test_ratio, id_column, hash=hashlib.md5):
    ids = data[id_column] #按索引找出id
    in_test_set = ids.apply(lambda id_:test_set_check(id_, test_ratio, hash)) #对所有数据进行划分
    return data.loc[~in_test_set], data.loc[in_test_set]  #返回满足条件的划分为训练集和测试集

函数说明:

hash.digest() 返回摘要,作为二进制数据字符串值
np.int64()强转为int64类型,和int不是一个类型。
apply()  将函数应用到由各列或行形成的数组上
lambda匿名函数
loc通过标签索引行数据

2、使用行索引作为ID

housing_with_id = housing.reset_index()  #使用行索引做id
housing_with_id["id"] = housing["longitu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值