泰坦尼克号乘客生存分析–使用决策树

  • Post author:
  • Post category:其他



sklearn中决策树的API


使用kaggle上数据

数据源

下面是使用sklearn生成决策树的python

import pandas as pd
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier,export_graphviz

def decsion():
    """
    决策树对泰坦尼克号存活进行预测
    :return: None
    """
    #获取数据
    titanData = pd.read_csv("./data/Titanic/train.csv")

    #处理数据,找出特征值和目标值。
    x = titanData[['Pclass','Age','Sex']]

    y = titanData['Survived']

    #缺失值处理
    x['Age'].fillna(x['Age'].mean(),inplace=True)

    #分割数据集到训练集、测试集
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.25)

    #特征工程 特征-》类别-》one_hot编码
    dict = DictVectorizer(sparse=False)

    x_train = dict.fit_transform(x_train.to_dict(orient="records"))
    print(dict.get_feature_names())

    x_test = dict.fit_transform(x_test.to_dict(orient="records"))

    print(x_train)

    #用决策树进行预测
    dec = DecisionTreeClassifier()

    dec.fit(x_train,y_train)

    #预测准确率
    print("预测准确率:",dec.score(x_test,y_test))

    #导出决策树的结构:生成dot文件,需要通过第三方软件graphviz装换为png或pdf文件可视化
    #export_graphviz(dec,out_file="./tree.dot",feature_names=['Age', 'Pclass', 'Sex=female', 'Sex=male'])

    return None

if __name__ == '__main__':
    decsion()

导出决策树的结构:生成dot文件,需要通过第三方软件graphviz装换为png或pdf文件可视化

dot文件可视化命令


结果


决策树结构



决策树的优点

简单的理解和解释,数目可视化

需要很少的数据准备,其他技术通常需要数据归一化


决策树的缺点

过拟合


改进方法

减枝算法:cart算法

随机森林



版权声明:本文为qq_37000327原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。