大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语—
不温不火
,本意是希望自己性情温和
。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只有csdn这一个平台,博客主页:https://buwenbuhuo.blog.csdn.net/
这篇文章讲述的是数据分组与数据不平衡。希望这篇数据清洗的文章对您有所帮助!如果您有想学习的知识或建议,可以给作者留言~
Chapter05 | 数据分组与数据不平衡
- 一、数据分组
- 1、groupby
- 2、agg()函数
- 二、数据不平衡
- 1、真实场景下的不均衡
- 2、以二分问题为例
- 三、不均衡数据下的模型的评价标准
一、数据分组
数据分组时数据分析过程中的一个重要环节
eg:
对大学生成绩数据求平均,查看大学生的平均水平
对不同专业的学生进行分组,分别计算不同专业学生成绩的平均值
使用Pandas库中的groupby()函数,对数据进行分组
1、groupby
- 1、根据sex进行分组,计算tip列的平均值
import pandas as pd
import seaborn as sns
tips = pd.read_csv('./data/tips.csv')
df = tips
grouped = df['tip'].groupby(df['sex'])
grouped.mean()
- 2、根据sex和time同时进行分组,计算tip列的平均值
means = df['tip'].groupby([df['sex'],df['time']]).mean()
- 3、使用means.unstack()整理输出结果
转换成表格的模式
2、agg()函数
agg()函数可对分组数据应用多个函数计算
- 1、自定义peak_to_peak函数,计算最大值与最小值的差
def peak_to_peak(arr):
return arr.max() - arr.min()
- 2、使用agg()计算分组数据的均值、标准查和最值差
grouped.agg(['mean','std', peak_to_peak])
二、数据不平衡
考虑数据集不均衡,关注数据集的类别所属问题
- 对于分类问题,在本身观测记录X的基础上,数据集还会添加一列字段数据y,表示观测记录的类别,那么该标注数据集表示为(x,y)
- 非标注数据集适用于聚类问题,通过学习算法,来获取事先未知的类别信息
1、真实场景下的不均衡
- 1、分类问题再实际场景中应用广泛
金融领域的欺诈检测
医疗行业的疾病诊断
电信行业的用户流失预测
2、以二分问题为例
理想状态下,标注数据集中属于不同类别的观测记录比例应大致相同
现实情况下,分数两类的数据量差别比较大,这种现象非常普遍
传统的学习算法如决策树,SVM等无法很好地处理不均衡地数据集,给算法的性能带来负面影响
-
下面为解决方法:
-
1、扩大样本容量
数量不均衡的原因多种多样,可能是抽样算法,也可能数据的真实分布就是如此
如果是前者,可以改变抽样方法,扩大现有的数据样本,消除数据集类别的失衡
- 2、欠采样
从多数的负类样本中,随机选择与正类样本数量相当的数据样本,组成新的数据集,这种方法称为欠采样
正类样本数量过少,欠采样会直接导致样本容量大幅度减少,损失过多的有效信息
- 3、过采样
与欠采样不同,过采样随机从少量的正类样本中重采样,来扩充样本正类的数量,
过采样可以让样本数量增加,消除不均衡,但会导致严重的过度拟合
- 4、集成学习
欠采样为了平衡数据,丢弃样本所携带的部分信息
通过集成的方式解决了欠采样方法所带来的弊端
集成学习的过程:
-
有放回抽样负类样本,容量和正类样本相当,连续进行K次
-
与原有的正类样本数据合并,总共得到K个新数据集
-
针对每个新数据集,使用基本分类器进行分类
-
综合K个基分类器的结果,来确定数据的最终类别
-
5、阈值移动
再Logistic回归分类问题中,针对每一个要分类的数据记录,使用Simgod函数作为激励函数,输出一个对应的数值y,作为判定类别的概率
在阈值移动方法中,预先设定阈值a
如果y > a ,数据归属类A
反之,数据归属类B
为解决数据不均衡,可以改变阈值来调节数据集中类别的比例,适当增加少数类样本的数量
- 6、人工合成样本
SMOTE算法通过合成全新的正类样本,来补充原有的数据集
x为一个正类样本,通过聚类找到它的K近邻,选择离x最近的正类样本点q
构成x和q构造新的样本,计算公式如下:
三、不均衡数据下的模型的评价标准
对于类别取值分布均衡的数据集,评价算法的常用评价标准是准确率
在不均衡的数据集上使用准确率,难以反应分类算法的真实性能
归属负类的样本过多,会导致算法在负类样本的正确率很高,而在正类样本的分类效果很差
- 1、引入评价标准F-score
本次的分享就到这里了,
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”
一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注
我哦!