数据分组时数据分析过程中的一个重要环节 eg: 对大学生成绩数据求平均,查看大学生的平均水平 对不同专业的学生进行分组,分别计算不同专业学生成绩的平均值
使用Pandas库中的groupby()函数,对数据进行分组
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()
means = df['tip'].groupby([df['sex'],df['time']]).mean()
转换成表格的模式
agg()函数可对分组数据应用多个函数计算
def peak_to_peak(arr):
return arr.max() - arr.min()
grouped.agg(['mean','std', peak_to_peak])
考虑数据集不均衡,关注数据集的类别所属问题
金融领域的欺诈检测
医疗行业的疾病诊断
电信行业的用户流失预测
理想状态下,标注数据集中属于不同类别的观测记录比例应大致相同 现实情况下,分数两类的数据量差别比较大,这种现象非常普遍 传统的学习算法如决策树,SVM等无法很好地处理不均衡地数据集,给算法的性能带来负面影响
数量不均衡的原因多种多样,可能是抽样算法,也可能数据的真实分布就是如此 如果是前者,可以改变抽样方法,扩大现有的数据样本,消除数据集类别的失衡
从多数的负类样本中,随机选择与正类样本数量相当的数据样本,组成新的数据集,这种方法称为欠采样
正类样本数量过少,欠采样会直接导致样本容量大幅度减少,损失过多的有效信息
与欠采样不同,过采样随机从少量的正类样本中重采样,来扩充样本正类的数量,
过采样可以让样本数量增加,消除不均衡,但会导致严重的过度拟合
欠采样为了平衡数据,丢弃样本所携带的部分信息 通过集成的方式解决了欠采样方法所带来的弊端
集成学习的过程:
再Logistic回归分类问题中,针对每一个要分类的数据记录,使用Simgod函数作为激励函数,输出一个对应的数值y,作为判定类别的概率
在阈值移动方法中,预先设定阈值a 如果y > a ,数据归属类A 反之,数据归属类B
为解决数据不均衡,可以改变阈值来调节数据集中类别的比例,适当增加少数类样本的数量
SMOTE算法通过合成全新的正类样本,来补充原有的数据集 x为一个正类样本,通过聚类找到它的K近邻,选择离x最近的正类样本点q 构成x和q构造新的样本,计算公式如下:
对于类别取值分布均衡的数据集,评价算法的常用评价标准是准确率 在不均衡的数据集上使用准确率,难以反应分类算法的真实性能 归属负类的样本过多,会导致算法在负类样本的正确率很高,而在正类样本的分类效果很差
本次的分享就到这里了