用python实现id3_python实现c4.5/Id3自我练习

这是一个Python实现的决策树类,包括C4.5和ID3两种模式。通过计算熵和信息增益来选择最佳分割特征,用于训练和预测数据。类中包含计算熵、分割数据集、选择最佳特征以及创建决策树的方法。
摘要由CSDN通过智能技术生成

import numpy as np

class DecisionTree:

"""决策树使用方法:

- 生成实例: clf = DecisionTrees(). 参数mode可选,ID3或C4.5,默认C4.5

- 训练,调用fit方法: clf.fit(X,y).  X,y均为np.ndarray类型

- 预测,调用predict方法: clf.predict(X). X为np.ndarray类型

- 可视化决策树,调用showTree方法

"""

def __init__(self,mode='C4.5'):

self._tree = None

if mode == 'C4.5' or mode == 'ID3':

self._mode = mode

else:

raise Exception('mode should be C4.5 or ID3')

def _calcEntropy(self,y):

"""

函数功能:计算熵

参数y:数据集的标签

"""

num = y.shape[0]

#统计y中不同label值的个数,并用字典labelCounts存储

labelCounts = {}

for label in y:

if label not in labelCounts.keys(): labelCounts[label] = 0

labelCounts[label] += 1

#计算熵

entropy = 0.0

for key in labelCounts:

prob = float(labelCounts[key])/num

entropy -= prob * np.log2(prob)

return entropy

def _splitDataSet(self,X,y,index,value):

"""

函数功能:返回数据集中特征下标为index,特征值等于value的子数据集

"""

ret = []

featVec = X[:,index]

X = X[:,[i for i in range(X.shape[1]) if i!=index]]

for i in range(len(featVec)):

if featVec[i]&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值