zoukankan      html  css  js  c++  java
  • 第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()
  • 相关阅读:
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    实干猪
    Mysql 千万级快速查询|分页方案
    如何成为一名优秀的CTO(首席技术官)
    成为优秀程序员的10个有效方法
  • 原文地址:https://www.cnblogs.com/kogmaw/p/12575327.html
Copyright © 2011-2022 走看看