机器学习入门之:使用 scikit-learn 决策分类树来预测泰坦尼克号沉船生还情况
代码有关数据处理部分的相关解析,请看 30天吃掉那只 TensorFlow2写的非常详细 不再在这里赘述from sklearn import treeimport pandas as pdimport graphvizdef processing(df_doc):df_result = pd.DataFrame()#### Pclass 转成one-hot编码df_doc_Pclass = pd
·
代码
有关数据处理部分的相关解析,请看 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 文件
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)