前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python常用函数】一文让你彻底掌握Python中的scorecardpy.split_df函数

【Python常用函数】一文让你彻底掌握Python中的scorecardpy.split_df函数

作者头像
阿黎逸阳
发布2024-04-10 19:37:18
1680
发布2024-04-10 19:37:18
举报

在scorecardpy库中,split_df函数用于将数据集(通常是包含特征和目标变量的DataFrame)分割成训练集和测试集。

本文和你一起来探索scorecardpy中的split_df函数,让你以最短的时间明白这个函数的原理。

也可以利用碎片化的时间巩固这个函数,让你在处理工作过程中更高效。

一、安装scorecardpy

split_df是scorecardpy库下的函数,调用需先要安装库。打开cmd,安装语句如下:

代码语言:javascript
复制
pip install scorecardpy

二、split_df函数定义

代码语言:javascript
复制
split_df是scorecardpy库中一个函数,用于将数据集分割成训练集和测试集。其基本调用语法如下:
代码语言:javascript
复制
import scorecardpy as sc

sc.split_df(dt, y=None, ratio=0.7, seed=186)

参数详解:

dt:数据框,通常是DataFrame,指需要分割的数据集,通常包含特征变量和目标变量(如果有的话)。

y:目标变量名,即需要预测或分类的列名,默认值为None。如果提供了目标变量,数据将会基于该列进行分割。

ratio:训练集和测试集的分割比例,默认值0.7。可以调整这个比例以确定训练集和测试集的量。

seed:随机数生成器的种子,设置种子可以确保每次调用split_df函数时都能得到相同的分割结果,如果不设置,每次运行的结果可能会有所不同。

函数返回值:

  • split_df函数通常返回两个DataFrame对象:一个用于训练的数据集和一个用于测试的数据集。

注意:参数的具体名称和默认值可能因库的版本不同而有所变化,因此最好查阅你所使用的scorecardpy版本的官方文档以获取最准确的信息。

分割数据集是机器学习和数据分析中非常常见的步骤,它有助于评估模型在未见数据上的性能。通过调整ratio参数,你可以控制用于训练和测试的数据量,以适应你的具体需求。

代码语言:javascript
复制
三、split_df函数实例

1 导入用到的库 首先导入用到的库,具体代码如下:‍ 2 使用默认参数分割数据集 首先创建一个包含特征和目标变量的数据集,具体代码如下: # 创建一个包含特征和目标变量的数据集df data = { 'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 'target': [0, 1, 0, 1, 0, 1, 0, 1, 0, 1] } df = pd.DataFrame(data) display(df) 得到结果:

然后使用默认参数分割数据集,具体代码如下: # 使用默认参数分割数据集 train_df, test_df = split_df(df).values() print('='*10, 'train_df','='*10) display(train_df) print('='*10, 'test_df','='*10) display(test_df) print('='*10, 'train_test_shape','='*10) print(train_df.shape, test_df.shape) 得到结果:

从结果知,按默认值划分训练集占比70%、测试集占比30%。 3 指定分割比例 接着调整训练集和测试集占比,设置80%数据用于训练,20%数据用于测试,具体代码如下: # 假设我们想要将80%的数据用于训练,20%用于测试 train_ratio = 0.8 train_df, test_df = split_df(df, ratio=train_ratio).values() print('='*10, 'train_df','='*10) display(train_df) print('='*10, 'test_df','='*10) display(test_df) print('='*10, 'train_test_shape','='*10) print(train_df.shape, test_df.shape) 得到结果:

‍从结果知,总计10行的数据,训练集有8行,测试集有2行,符合训练集占比80%,测试集占比20%。 4 设置随机数种子 若我们想要确保每次分割的结果一致,我们可以设置随机数种子,具体代码如下:‍ seed_value = 42 train_df, test_df = split_df(df, seed=seed_value).values() 由于设置了种子,多次运行这段代码将会得到相同的分割结果。 5 指定按目标列进行分割 首先来看下指定按目标列分割,具体代码如下:‍ data = { 'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'target': [1, 1, 1, 1, 1, 0, 0, 0, 0, 0], 'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] } df = pd.DataFrame(data) train_df, test_df = split_df(df, y='target', ratio=0.7).values() print('='*10, 'train_df','='*10) display(train_df) print('='*10, 'test_df','='*10) display(test_df) print('='*10, 'train_test_shape','='*10) print(train_df.shape, test_df.shape) 得到结果:

可以发现当指定了按目标列target进行分割时,虽然指定的分割比例是0.7,但是训练集的占比是80%,测试集的占比是20%。 这是由于这时切割是按目标列进行,尽可能保证训练集和测试集中好坏样本比例差距不大时,把训练集和测试集数据划分成指定比例。 为了对比,我们不指定目标列,看下结果,具体代码如下:‍ data = { 'feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 'feature2': [10, 9, 8, 7, 6, 5, 4, 3, 2, 1], 'target': [1, 1, 1, 1, 1, 0, 0, 0, 0, 0], } df = pd.DataFrame(data) train_df, test_df = split_df(df, ratio=0.7).values() print('='*10, 'train_df','='*10) display(train_df) print('='*10, 'test_df','='*10) display(test_df) print('='*10, 'train_test_shape','='*10) print(train_df.shape, test_df.shape) 得到结果:

从结果知,此时训练集和测试集的比例确实占比分别为0.7和0.3,且未考虑目标列中好坏样本的占比,测试集中目标列的值全为1。 至此,Python中的split_df函数已讲解完毕,如想了解更多Python中的函数,可以翻看公众号中“学习Python”模块相关文章。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 阿黎逸阳的代码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档