代码

有关数据处理部分的相关解析,请看 30天吃掉那只 TensorFlow2
写的非常详细 不再在这里赘述


from sklearn import tree
import pandas as pd
import graphviz


def processing(df_doc):

    df_result = pd.DataFrame()

    #### Pclass 转成one-hot编码
    df_doc_Pclass = pd.get_dummies(df_doc['Pclass'])
    df_doc_Pclass.columns = ['Pclass' + str(i) for i in df_doc_Pclass.columns]
    df_result = pd.concat((df_result,df_doc_Pclass),axis=1)


    #### Name 不要了

    #### sex 转换成独热码

    df_doc_Sex = pd.get_dummies(df_doc['Sex'])
    df_result = pd.concat((df_result,df_doc_Sex),axis=1)


    #### age 不需要转换直接添加, 因为存在空值,所以需要加一项辅助判断是否有空值

    df_result = pd.concat((df_result,df_doc['Age'].fillna(0)),axis=1)
    df_age_is_null = df_doc['Age'].isna().astype('int32')
    df_result['Age_is_null'] = df_age_is_null
    # print(df_result)

    #### SibSp	Parch	Fare 作为数字特征直接搬过来  Ticket 不重要,直接舍去

    df_result = pd.concat((df_result,df_doc['SibSp'],df_doc['Parch'],df_doc['Fare']),axis=1)


    #### 对于 cabin 这一列的空值,我们不进行填充,但是增加辅助列 cabin_null 作为辅助特征
    # df_result['Cabin'] = df_doc['Cabin']
    df_result['Cabin_null'] = pd.isna(df_doc['Cabin']).astype('int32')

    #### embarked 一共分三类用独热编码处理

    df_doc_embarked = pd.get_dummies(df_doc['Embarked'],dummy_na=True)  # 否则会报错
    df_doc_embarked.columns = ['Embarked_' + str(x) for x in df_doc_embarked.columns]
    df_result = pd.concat([df_result, df_doc_embarked], axis=1)
    print(df_result)
    return df_result

if __name__ == '__main__':
    train_dataset = pd.read_csv('tatanic_train.csv')
    train_data = processing(train_dataset)
    train_label = train_dataset['Survived']

    test_dataset = pd.read_csv('tatanic_test.csv')
    test_data = processing(test_dataset)
    test_label = test_dataset['Survived']

    classifier = tree.DecisionTreeClassifier()
    classifier.fit(train_data,train_label)
    score = classifier.score(test_data,test_label)
    print(score)

    feature_name = train_data.columns
    target_name = ['0','1']

    with open('tree.dot','w') as f:
        dot_data = tree.export_graphviz(classifier, feature_names=feature_name,
                             class_names=target_name, filled=True, rounded=True, out_file=f)


在这里插入图片描述
最后生成 pdf 文件将决策树进行可视化

graphviz 生成 pdf 文件可视化决策树

  • 在此之前你应该先安装 graphviz 这个包:

pip install graphviz


但这还不够,因为 graphviz 是个单独的软件,所以你需要安装这个软件(注意,安装的版本不能高,我就是因为装版本高了,又重新装了个 2.28 的版本;这里提供 2.28版本的链接)
https://pan.baidu.com/s/1ExisBC8gyMcH1eI9fpMDtQ
提取码:qzeh


安装完之后要配置环境变量,安装文件夹下的 bin 目录加入环境变量即可,如果安装完系统自动把这个加入环境变量了皆大欢喜了

在这里插入图片描述


安装配置完之后,验证一下是否安装成功 dot -version; 下面这种显示方式则为成功
在这里插入图片描述

  • win+R 打开终端在其中输入 cmd 打开终端
    在这里插入图片描述
  • 进入这个 python 文件的文件夹,运行以上的程序后会在这个文件夹下生成一个 tree.dot 的文件,用于生成 pdf 或者是 png 可视化文件
    在这里插入图片描述
    生成的 png 图片
    在这里插入图片描述
    生成的 pdf 文件
    在这里插入图片描述
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐