统计学习方法之信息增益算法

本文算法思路来源于李航的《统计学习方法》,本文实现其算法网上有很多思路,在这里我就不对原理展开论述,下面按照给出算法实现①经验熵//计算经验熵private static double HD(Data datas[],int N){ int iscredit = 0; for(int i = 0 ; i < N ; i++) { if (datas[i...
摘要由CSDN通过智能技术生成

本文算法思路来源于李航的《统计学习方法》,本文实现其算法
网上有很多思路,在这里我就不对原理展开论述,下面按照给出算法实现
①经验熵

//计算经验熵
private static double HD(Data datas[],int N){
    int iscredit = 0;
    for(int i = 0 ; i < N ; i++) {
        if (datas[i].agree==1) {
            iscredit++;
        }
    }
    if(iscredit==N)return 0;
    double p1 = (double)iscredit/N;
    double p2 = 1-p1;
    return ((-p1)*logto2(p1)-p2*logto2(p2));
}

private static double logto2(double i) {//2为底的对数
    return Math.log(i) / Math.log(2);
}

②分别算出信息增益(由经验熵减去条件熵)
因为每一种情况都不一样,为了方便,选择一个参数i来表示其选择哪一个特征值

private static double GDA(int i) {
    double HD = HD(datas, N);
    if (i == 1 ) {
        int N1 = 0, N2 = 0, N3 = 0;
        for (int j = 0; j < N; j++) {
            if (datas[j].year == 1) N1++;
            else if (datas[j].year =&
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值