python画决策树如何避免太多内容重叠在一起_Python手写决策树并应对过度拟合问题...

本文介绍了如何使用Python构建决策树,包括基尼不纯度和熵的计算,以及如何避免内容重叠。讨论了过度拟合问题,并展示了通过设置最大深度和最小样本大小来防止过度拟合的方法。最后,提供了决策树的可视化和超参数调整的重要性。
摘要由CSDN通过智能技术生成

0c1d0265fcd7543098d73646793b656c.png

介绍

决策树是一种用于监督学习的算法。 它使用树结构,其中包含两种类型的节点:决策节点和叶节点。 决策节点通过在要素上询问布尔值将数据分为两个分支。 叶节点代表一个类。 训练过程是关于在具有特定特征的特定特征中找到“最佳”分割。 预测过程是通过沿着路径的每个决策节点回答问题来从根到达叶节点。

基尼不纯度和熵

术语“最佳”拆分是指拆分之后,两个分支比任何其他可能的拆分更“有序”。 我们如何定义更多有序的? 这取决于我们选择哪种指标。 通常,度量有两种类型:基尼不纯度和熵。 这些指标越小,数据集就越“有序”。

724db4f4fbd744c14b4a32d559072108.png

这两个指标之间的差异非常微妙。 但 在大多数应用中,两个指标的行为类似。 以下是用于计算每个指标的代码。

def gini_impurity(y): # calculate gini_impurity given labels/classes of each example m = y.shape[0] cnts = dict(zip(*np.unique(y, return_counts = True))) impurity = 1 - sum((cnt/m)**2 for cnt in cnts.values()) return impurity def entropy(y): # calculate entropy given labels/classes of each example m = y.shape[0] cnts = dict(zip(*np.unique(y, return_counts = True))) disorder = - sum((cnt/m)*log(cnt/m) for cnt in cnts.values()) return disorder

构建树

训练过程实质上是在树上建树。 关键步骤是确定“最佳”分配。 过程如下:我们尝试按每个功能中的每个唯一值分割数据,然后选择混乱程度最小的最佳数据。 现在我们可以将此过程转换为python代码。

def get_split(X, y): # loop through features and values to find best combination with the most information gain best_gain, best_index, best_value = 0, None, None cur_gini = gini_impurity(y) n_features = X.shape[1] for index in range(n_features): values = n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值