第10节 决策树泰坦尼克生存预测

决策树重要概念:

  信息熵:信息越纯信息熵越小,信息越杂信息熵越大,决策树生成的原则就是不断减小信息熵的过程,而分支依据就是哪个变量提供信息增益(信息增益比,基尼系数)越大,就选择哪个变量作为分类依据

  衡量信息熵变化大小的指标:信息增益,信息增益比,基尼系数(sklearn默认),三者的基本原则都是计算分支前后信息熵的变化,变化最大的将作为分支依据

  算法:C4.5,CART等

 1 import pandas as pd
 2 from sklearn.feature_extraction import DictVectorizer
 3 from sklearn.model_selection import train_test_split
 4 from sklearn.tree import DecisionTreeClassifier  # 决策树API
 5 from sklearn.tree import export_graphviz  # 导出树结构
 6 def titan():
 7     '''决策树泰坦尼克生存预测'''
 8     # 读入数据
 9     titanic = pd.read_csv(r"E:360DownloadsSoftware	ableauTableaudata	itanic_passenger_list.csv")
10     # print(titanic.columns)
11     x = titanic[['pclass', 'age', 'sex']]
12     y = titanic['survived']
13 
14     # 处理年龄中的缺失值
15     x['age'].fillna(x['age'].mean(), inplace=True)
16 
17     # 分割数据成训练集和数据集
18     x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25)
19 
20     # 进行特征处理,将分类型数据转换成one-host编码
21     dictv = DictVectorizer(sparse=False)
22     # x_train.to_dict(orient="records")将其转换为字典records将一行转换成一个字典
23     x_train = dictv.fit_transform(x_train.to_dict(orient="records"))
24     x_test = dictv.fit_transform(x_test.to_dict(orient="records"))
25 
26     # 用决策树进行预测,max_depth要分几层,min_samples_split=2, min_samples_leaf=1,这两个参数用于剪枝
27     dec = DecisionTreeClassifier(max_depth=4)
28     dec.fit(x_train, y_train)
29     print('正确率:', dec.score(x_test, y_test))
30 
31     # 导出决策树的结构,需要安装graphviz,将dot文件转换为PDF、PNG
32     # export_graphviz(dec, out_file="./tree.dot")
33 
34 
35 if __name__ == "__main__":
36     titan()
原文地址:https://www.cnblogs.com/kogmaw/p/12575327.html