决策树
1.属性选择的先后顺序
- 熵值
- 信息增益
- 信息增益率
2.纯度的概念
熵(entropy):熵越少越好
信息增益(gain):对纯度提升的纯度
决策树算法家族
1.ID3算法实现
ID3算法的详细实现步骤如下:
- 对当前样本集合,计算所有属性的信息增益;
- 选择信息增益最大的属性作为拆分属性,把拆分属性取值相同的样本划为同一个子样本集;
- 若子样本集的类别属性只含有单个属性,则分支为叶子节点,判断其属性值并标上相应的符号之后返回调用出;否则对子样本集递归调用本算法
参考阅读:决策树
决策树实例(实现决策树可视化)
import pandas as pd
from sklearn.tree import DecisionTreeClassifier,export_graphviz
from sklearn.metrics import classification_report
import graphviz
data = pd.read_csv('titanic_data.csv')
data.drop('PassengeID',axis=1,inplace=True) #删除PassengeID这一列
data.loc[data['Sex'] == 'male','Sex'] =1 #用数值1来代替male,用0来代替female
data.loc[data['Sex'] == 'female','Sex'] =0
data.fillna(data['Age'].mean(),inplace=True) #用均值来填充缺失值
Dtc = DecisionTreeClassifier(max_depth=5,random_state=8) #构建决策树模型
Dtc.fit(data.iloc[:,1:],data['Survived']) #模型训练
pre = Dtc.predict(data.iloc[:,1:]) #模型预测
pre == data['Survived'] #比较模型预测值与样本实际值是否一致
classification_report(data['Survived'],pre) #模型分类报告
dot_data = export_graphviz(Dtc,feature_names=['Pclass','Sex','Age'],class_names='Survived')
graph = graphviz.Source(dot_data)
graph