决策树决策算法ID3算法、改进算法C4.5算法和CART算法代码实现

决策树决策算法之ID3算法

ID3算法

在决策树各个节点上应用信息增益准则选择特征,每一次都选择是的信息增益最大的特征进行分裂,递归的构建决策树
具体计算可以参考
决策常用算法数学计算过程

ID3代码实现

import numpy as  np
import math
a=[[2,3],[4,],[3,2]]   #  原数据     参考上面链接里面的计算数据
x=np.sum(a[0])+np.sum(a[1])+np.sum(a[2])
# ID3算法计算 
def Id3():
    result_arr=[]
    for i in a:

        c=0
        for j in range(len(i)):
            p=i[j]/np.sum(i)
            pi=p*math.log(p,2)
            c+=pi
        result_arr.append(c)
    return result_arr

def arr_(result_arr):
    d=0
    for k in range(len(result_arr)):
        h=-(np.sum(a[k])/x)*result_arr[k]
        d+=h
    return round(d,3)

id3=arr_(Id3())

C4.5算法 对ID3算法的改进

ID3算法 使用的是信息增益来判断,取值的时候会选择信息增益大的特征,也就是取值多的那些特征,容易过拟合 ,且只能够处理分类变量,不能够处理缺失值,
C4.5算法 是采用的悲观剪枝的方式 比较节点前后的分类错误率来进行判断剪枝
这弥补了ID3算法的偏向性 但由于是递归判断节点的错误率 也导致效率低下,避免过拟合,对缺失值可以处理
具体计算可以参考
决策常用算法数学计算过程

C4.5算法代码实现

#  计算原始的信息熵
def start_h():
    a=y/x
    a_p=a*(math.log(y,2)-math.log(x,2))
    b=((x-y)/x)
    b_p=b*(math.log(x-y,2)-math.log(x,2))
    p=-a_p-b_p
    return round(p,4)
#  C4.5算法   计算信息熵
def  c4_5(d):
    d=0
    for i in a:
        p=np.sum(i)/x

        d+=-p*(math.log(np.sum(i),2)-math.log(np.sum(x),2))
    return  d
c4_5(d)
id3=arr_(Id3())   # id3算法处理后的信息熵   
w=start_h()-id3   #  计算信息增益
z=w/c4_5(d)       #  计算信息增益率

CART算法 gini指数计算

gini指数反应数据的离散程度 越大表示越混乱

具体计算可以参考
决策常用算法数学计算过程

CART算法代码实现

#CART算法  gini 指数计算
def  gini(a):
    arr=[]
    for i in a:
        c=1
        for j in range(len(i)):
            c-=(i[j]/np.sum(i))**2
        arr.append(c)
    return arr

cart=arr_(gini(a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值