SVM中遇到的非均衡数据集



    对于SVM中遇到的非均衡数据集,可以采用以下策略:
假设有4类样本,比如,第一类有500个,第二类有300个,第三类有600个,第四类有200个,那么,可以通过SVM的class_weights(CvSVM中有该参数)来进行均衡,具体如下,
1 求所有样本和,在这里为1600
2 求每一类样本数与总数的比值,如在这里为    500/1600=0.3125,
    300/1400=0.817,
    600/1600=0.375,
    200/1600=0.125,
3 求各个小数的比值,并转化为整数,在这里是
    5:3:6:2,
对于opencv中的SVM可以采用如下的方式给class_weights进行赋值:

CvSVMParams SVM_params;

float a[4]={5,3,6,2};
CvMat mat=cvMat(1,4,CV_32FC1,a);
SVM_params.class_weights=&mat;

    在这里,class_weights是C_SVC中的可选权重,赋给指定的类,乘以C变成
class_weights*C。所以这些权重影响不同类别的错误分类惩罚项。权重越大,某一类的误份类数据的惩罚项就越大。惩罚项越大,代表了其越不能够容忍错误。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值