码迷,mamicode.com
首页 > 其他好文 > 详细

处理样本不均衡数据

时间:2019-01-07 22:43:07      阅读:480      评论:0      收藏:0      [点我收藏+]

标签:sse   结构   分类   fit   假设   建模   bsp   直接   参数形式   

处理样本不均衡数据一般可以有以下方法:

1、人为将样本变为均衡数据。

上采样:重复采样样本量少的部分,以数据量多的一方的样本数量为标准,把样本数量较少的类的样本数量生成和样本数量多的一方相同。

下采样:减少采样样本量多的部分,以数据量少的一方的样本数量为标准。

 

2、调节模型参数(class_weigh,sample_weight,这些参数不是对样本进行上采样下采样等处理,而是在损失函数上对不同的样本加上权重)

(A)逻辑回归中的参数class_weigh;

在逻辑回归中,参数class_weight默认None,此模式表示假设数据集中的所有标签是均衡的,即自动认为标签的比例是1:1。所以当样本不均衡的时候,我们可以使用形如{标签的值1:权重1,标签的值2:权重2}的字典来输入真实的样本标签比例(例如{“违约”:10,“未违约”:1}),来提高违约样本在损失函数中的权重

或者使用”balanced“模式,直接使用n_samples/(n_classes * np.bincount(y)),即样本总数/(类别数量*y0出现频率)作为权重,可以比较好地修正我们的样本不均衡情况。

 

(B)在SVM中使用SVC类的参数class_weigh和接口fit中可以设定的sample_weight:

SVC类的参数class_weigh:

对于class_weight,输入形如{"标签的值1":权重1,"标签的值2":权重2}的字典,则不同类别的C将会自动被设为不同的值:

标签的值1的C:权重1 * C,标签的值2的C:权重2*C 

或者,可以使用“balanced”模式,这个模式使用y的值自动调整与输入数据中的类频率成反比的权重为 n_samples/(n_classes * np.bincount(y)

fit接口参数sample_weight:

参数形式:数组,结构为 (n_samples, ),必须对应输入fit中的特征矩阵的每个样本每个样本在fit时的权重,让每个样本对应的权重 * C值来迫使分类器强调设定的权重更大的样本。通常,较大的权重加在少数类的样本上,以迫使模型向着少数类的方向建模

处理样本不均衡数据

标签:sse   结构   分类   fit   假设   建模   bsp   直接   参数形式   

原文地址:https://www.cnblogs.com/simpleDi/p/10235907.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!