决策树分类与回归 手动实现

决策树离散值分类

path = "xigua.csv"
import pandas as pd
df = pd.read_csv(path,na_values='?')
#计算占比
def calculate_f(feature,value,df):
    data = df[df[feature] == value]
    f = len(data)/len(df)
    return f
#计算熵
import math
def calculate_ent(list_f):
    ent = 0
    for f in list_f:
        ent += f * math.log(f,2)
    return -ent

# #计算根结点中label=0的占比
f1 = calculate_f('label',0,df)
# #计算根结点中label=1的占比
f2 = calculate_f('label',1,df)    
#计算根结点香农熵
ent = calculate_ent([f1,f2])

##获取x1=青绿的样本集合
df1 = df[df['x1']== '青绿']
# 计算x1=青绿的样本集合下label=0的占比
f1 = calculate_f('label',0,df1)
#计算x1=青绿的样本集合下label=1的占比
f2 = calculate_f('label',1,df1)
#计算x1=青绿的样本集合下香农熵
ent1 = calculate_ent([f1,f2])

#获取x1=乌黑的样本集合
df2 = df[df['x1']== '乌黑']
#计算x1=乌黑的样本集合下label=0的占比
f1 = calculate_f('label',0,df2)
#计算x1=乌黑的样本集合下label=1的占比
f2 = calculate_f('label',1,df2)
#计算x1=乌黑的样本集合下香农熵
ent2 =calculate_ent([f1,f2])

##获取x1=浅白的样本集合
df3 = df[df['x1']== '浅白']
##计算x1=浅白的样本集合下label=0的占比
f1 = calculate_f('label',0,df3)
##计算x1=浅白的样本集合下label=1的占比
f2 = calculate_f('lab
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值