机器学习算法入门梳理——决策树的分类预测详解

基于决策树的分类预测

机器学习算法详解,day2 打卡!

  1. 决策树概念
  2. 信息熵
  3. 基尼系数
  4. 剪枝
  5. 总结

1. 决策树的概念

决策树(decision tree)也是机器学习中的一个重要算法,但是我们可能平时在决策的时候就常常用到,比如以下天气和怎么出行的问题:
在这里插入图片描述
决策树是一种非参数学习算法,可以解决分类(包括多分类)问题,还可以解决回归问题。

如下的例子,用 iris 简单看一下决策树。

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn import datasets

iris = datasets.load_iris()

iris_all = pd.DataFrame(data=iris.data, columns=iris.feature_names).copy()
# target = iris.target

iris_all['target'] = iris.target

# 为了方便可视化,仅使用两个特征
iris = iris_all.iloc[:,2:]

sns.scatterplot(data=iris, x = iris.columns.values[0], y = iris.columns.values[1],hue='target',palette="Set1")
plt.show()
# 决策边界函数
def plot_boundary(model, X, y):
    x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
    y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
    
    h = .02  # step size in the mesh
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])

    # Put the result into a color plot
    Z = Z.reshape(xx.shape)
    plt.figure(1, figsize=(4, 3))
    plt.pcolormesh(xx, yy, Z, cmap=plt.cm.Set3_r)

    # Plot also the training points
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Accent)
    plt.show()
from sklearn.tree import DecisionTreeClassifier

np.random.seed(2)
iris = datasets.load_iris()
X = iris.data[:,2:]
y = iris.target

dt_clf = DecisionTreeClassifier(max_depth=2, criterion='entropy',) # max_depth 最大深度;criterion选择熵
dt_clf.fit(X, y)

plot_boundary(dt_clf, X, y)

在这里插入图片描述
以上其实就是一个决策树,当 x < 2.4 时,被分为黄色的一类;其余再进行判断,如果 y < 1.8 ,则是橘色的一类,y > 1.8 则是青色的一类。

2. 信息熵

在决策树中,每个节点在哪里划分,是如何确定呢?

信息熵(information entropy)是一种判断方法。熵是信息论中衡量随机变量不确定度的,这个值越大则数据的不确定性越高;反之,越小则数据的不确定性越低。信息熵是度量样本集合纯度最常用的一个指标,假如当前样本集合 D 中第 i 类样本所占的比例为 p i p_i pi ,则 D 的信息熵为:

H = − ∑ i = 1 k p k l o g 2 p i H = -\sum_{i=1}^{k}p_klog_2p_i H=i=1kpklog2pi

假如有一个集合,有三类样本,比例分别为

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值