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

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

作者头像
阿黎逸阳
发布于 2024-04-10 11:37:18
发布于 2024-04-10 11:37:18
59000
代码可运行
举报
运行总次数:0
代码可运行

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

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

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

一、安装scorecardpy

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install scorecardpy

二、split_df函数定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
split_df是scorecardpy库中一个函数,用于将数据集分割成训练集和测试集。其基本调用语法如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
三、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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
XGBoost和LightGBM
这两个模型都属于集成学习中的树模型,每个机器学习模型都有它特定的应用场景,不同的数据集适合用到的模型是不一样的。
算法之名
2021/10/09
1.3K0
XGBoost和LightGBM
Kaggle "$70000奖金池" 竞赛经历分享 — Home Credit 房屋信贷违约风险(一)
推荐导读:本文来源于知识星球中一位星友的投稿,主要分享前不久刚结束的一个Kaggle竞赛 “Home Credit Default Risk” 房屋借贷的违约预测分析。
Python数据科学
2019/07/22
2.6K0
Kaggle "$70000奖金池" 竞赛经历分享 — Home Credit 房屋信贷违约风险(一)
机器学习入门数据集--4.泰坦尼克幸存者预测
最后只选取8个维度 Pclass Age SibSp Parch Sex Cabin Fare Embarked。dummy编码进行维度扩展。
birdskyws
2019/03/04
6280
机器学习入门数据集--4.泰坦尼克幸存者预测
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
在本文中,在数据科学学习之旅中,我经常处理日常工作中的时间序列数据集,并据此做出预测
拓端
2023/03/23
8670
《如何打一场数据挖掘赛事》进阶版
经过上一篇的入门学习,大家已经熟悉如何去打一场比赛,并能训练经典的机器学习算法模型,去解决实际的问题。如果你还不了解,可以先学习《如何打一个数据挖掘比赛》 入门版,然后再进行本节的学习。
Datawhale
2022/10/31
3900
《如何打一场数据挖掘赛事》进阶版
Kaggle经典数据分析项目:泰坦尼克号生存预测!
最近有很多读者留言,希望能有一个完整的数据分析项目练手,这几天收集了组织成员们的推荐。其中泰坦尼克号生存预测作为最经典的启蒙数据分析项目,对于初学者来说是应该是最合适的了,后面将分享更多进阶的数据分析项目。如果已经有基础了,推荐:
Datawhale
2020/08/28
2.7K0
Kaggle经典数据分析项目:泰坦尼克号生存预测!
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
今天要和大家继续讲解机器学习中一个看似枯燥但至关重要的环节——数据预处理。前面已经讲解过数据清洗和数据评质量评估(点击跳转),如果你已看过,那你已经打下了坚实的基础!今天这篇内容会更聚焦于预处理的核心技巧,手把手教你如何将原始数据“打磨”成模型的最爱。
CoovallyAIHub
2025/03/03
2270
数据处理(三)| 深入数据预处理:提升机器学习模型性能的关键步骤
【机器学习实战】kaggle playground最新竞赛,预测贴纸数量--python源码+解析
对于此挑战,你将预测来自不同(真实!)国家/地区的不同虚拟商店的各种 Kaggle 品牌贴纸的多年销售额。该数据集是完全合成的,但包含您在现实世界数据中看到的许多影响,例如周末和假期影响、季节性等。
机器学习司猫白
2025/01/21
1060
【机器学习实战】kaggle playground最新竞赛,预测贴纸数量--python源码+解析
[数据科学] 基于基因表达监测预测肿瘤
通过基因表达监测(DNA微阵列)对新的癌症病例进行分类,从而为鉴定新的癌症类别和将肿瘤分配到已知类别提供了一般方法。这些数据用于对患有急性髓性白血病(AML)和急性淋巴细胞白血病(ALL)的患者进行分类。
DrugAI
2021/01/29
3880
一文搞懂:什么是Stacking堆叠?手把手带你搭建堆叠模型,附有python源码和数据集。
在该文章采用的是Lightgbm模型进行的分类预测,本次分享一个在竞赛中常用的策略,堆叠。
机器学习司猫白
2025/01/21
4970
一文搞懂:什么是Stacking堆叠?手把手带你搭建堆叠模型,附有python源码和数据集。
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
在本文中,在数据科学学习之旅中,我经常处理日常工作中的时间序列数据集,并据此做出预测
拓端
2023/03/21
1.2K0
2018DC大数据赛-住房月租金预测大赛总结
当今社会,房屋租金由装修情况、位置地段、户型格局、交通便利程度、市场供需量等多方面因素综合决定,对于租房这个相对传统的行业来说,信息严重不对称一直存在。一方面,房东不了解租房的市场真实价格,只能忍痛空置高租金的房屋;另一方面,租客也找不到满足自己需求高性价比房屋,这造成了租房资源的极大浪费。
葆宁
2022/01/06
7900
2018DC大数据赛-住房月租金预测大赛总结
余弦相似度算法进行客户流失分类预测
余弦相似性是一种用于计算两个向量之间相似度的方法,常被用于文本分类和信息检索领域。具体来说,假设有两个向量A和B,它们的余弦相似度可以通过以下公式计算:
deephub
2023/08/28
4070
余弦相似度算法进行客户流失分类预测
训练和测试数据的观察
在开始竞赛之前,我们要检查测试数据集的分布与训练数据集的分布,如果可能的话,看看它们之间有多么不同。这对模型的进一步处理有很大帮助.
用户1332428
2018/07/30
1.3K0
训练和测试数据的观察
【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题
使用机器学习模型识别欺诈性信用卡交易,这样可以确保客户不会为未曾购买的商品承担费用。
机器学习司猫白
2025/01/21
1490
【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析|附代码数据
最近我们被客户要求撰写关于销售量时间序列建模预测的研究报告,包括一些图形和统计输出。
拓端
2023/01/09
8030
【机器学习实战】kaggle背包价格预测(堆叠的实战用法)
该竞赛的数据集是学生背包价格预测数据集中训练的深度学习模型生成的。特征分布与原始分布接近但不完全相同。请随意将原始数据集用作本竞赛的一部分,既要探索差异,又要查看将原始内容纳入训练是否可以改善模型性能。
机器学习司猫白
2025/02/15
1380
基于深度学习的文本分类应用!
在基于机器学习的文本分类中,我们介绍了几种常见的文本表示方法:One-hot、Bags of Words、N-gram、TF-IDF。这些方法存在两个共同的问题:一是转换得到的向量维度很高,需要较长的训练实践;二是没有考虑到单词与单词之间的关系,只是进行了统计。
Datawhale
2020/08/17
6200
基于jieba、TfidfVectorizer、LogisticRegression的文档分类
jieba中文叫做结巴,是一款中文分词工具,官方文档链接:https://github.com/fxsjy/jieba TfidfVectorizer中文叫做词袋向量化模型,是用来文章内容向量化的工具,官方文档链接:http://sklearn.apachecn.org/cn/0.19.0/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html LogisticRegression中文叫做逻辑回归模型,是一种基础、常用的分类方法。
潇洒坤
2018/09/10
4.3K0
基于jieba、TfidfVectorizer、LogisticRegression的文档分类
weekly kaggle 练习题解读(House Prices)
今天给大家来讲讲《House Prices: Advanced Regression Techniques》(房价预测模型)的思路:
机械视角
2019/10/23
1.2K0
weekly kaggle 练习题解读(House Prices)
推荐阅读
相关推荐
XGBoost和LightGBM
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验