宿迁网站建设公司排名,邯郸市网,建设网站成本,宿迁做企业网站编译工具#xff1a;PyCharm 文章目录 编译工具#xff1a;PyCharm 决策树算法信息熵信息熵例题计算#xff1a; 信息增益#xff08;决策树划分依据之一ID3#xff09;信息增益例题计算#xff1a; 信息增益率(决策树划分依据之一C4.5)基尼值和基尼指数(决策树划分依据之…编译工具PyCharm 文章目录 编译工具PyCharm 决策树算法信息熵信息熵例题计算 信息增益决策树划分依据之一ID3信息增益例题计算 信息增益率(决策树划分依据之一C4.5)基尼值和基尼指数(决策树划分依据之一CART)多变量决策树OC1 剪枝决策树算法api案例泰坦尼克号存活预测 决策树算法
决策树是一种树形结构其中每个内部节点表四一个属性上的判断每个分支代表一个判断结果的输出最后每个叶节点表示一种分类结果本质是一颗由多个判断节点组成的树。
信息熵
“信息熵”时度量原本集合程度最常用的一种指标。 1.当系统的有序状态一致时数据越集中的地方熵值越小数据越分散的地方熵值越大。 2.当数据量一致时系统越有序熵值越低系统越混乱/分散熵值越高。
信息熵例题计算 信息增益决策树划分依据之一ID3
信息增益以某特征划分数据集前后的熵的差值。熵可以表示原本集合的不确定性。熵越大原本的不确定性就越大。因此可以使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏。
信息增益例题计算 整体流失的信息熵: 条件信息熵: 信息增益计算: 同样求解活跃度的信息增益
信息增益率(决策树划分依据之一C4.5)
信息增益准则对可取值数目较多的属性有所偏好如在信息增益案例题中我们计算时忽略了第一列即编号列实际上信息增益会偏向选择第一列(类别有15种)、第三列(类别有3种)…。但是显然第一列没有计算的必要。 为了减少这种偏好可能带来的不利影响C4.5决策树算法不直接使用信息增益而是使用**“增益率”来选择最优划分属性**。
增益率信息增益(D,a) / 属性a的固有值 对信息增益的案例进行增益率的计算 https://www.bilibili.com/video/BV1pf4y1y7kw/?p106spm_id_frompageDrivervd_source3918c4e379f5f99c5ae95581d2cc8cec
基尼值和基尼指数(决策树划分依据之一CART)
基尼值Gini(D)从数据集D中随机抽取两个样本器类别标记不一致的概率。所以Gini(D)值越小数据集D的纯度越高。
基尼值
基尼指数
多变量决策树OC1
ID3、C4.5、CART在特征选择的时候都是选择一个最优的特征来分类决策但是不应该只由某一个特征进行决定应该由一组特征决定OC1就是这样的。
剪枝
剪枝时决策树学习算法中对付“过拟合”的主要手段。
剪枝分为预剪枝和后剪枝
决策树算法api案例泰坦尼克号存活预测
数据集https://hbiostat.org/data/repo/titanic.txt
# 决策树算法api
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split # 进行数据集划分
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier# 读取数据
# titan pd.read_csv(https://hbiostat.org/data/repo/titanic.txt)
titan pd.read_csv(./data/titanic.csv)
print(titan.describe())# 获取样本和目标值
# 这里取pclass社会等级、age年龄、sex性别作为特征值
# 取survived存活为目标值
x titan[[pclass,age,sex]]
y titan[survived]# 缺失值处理:对age为空的用平均值替换
x[age].fillna(valuetitan[age].mean(),inplaceTrue)
print(x.head())# 数据集划分
x_train,x_test,y_train,y_test train_test_split(x,y,random_state22,test_size0.2)
# 特征抽取(字典特征提取)
x_train x_train.to_dict(orientrecords)
x_test x_test.to_dict(orientrecords)
tranfer DictVectorizer()
x_train tranfer.fit_transform(x_train)
x_test tranfer.fit_transform(x_test)# 模型训练(决策树)
# 在实例化的时候可以添加 max_depth 来提高评估效率score
estimator DecisionTreeClassifier()
estimator.fit(x_train,y_train)# 模型评估
y_pre estimator.predict(x_test)
print(y_pre)
print(estimator.score(x_test,y_test))# 决策树可视化