泰坦尼克乘客存活状况(决策树案例)

1912年4月15日凌晨2点20分,“永不沉没”的“泰坦尼克”走完了它短暂的航程,缓缓沉入大西洋这座安静冰冷的坟墓。

欢迎你们说我幼稚荒诞,也欢迎你们继续成熟苍凉。说起来,titanic是我至今觉得最为美妙的爱情电影,如饮蜜酒,甘不可言。这是一份绚烂到极致,使得人类的大难做了背景,还妄想突破时间和生死直达永恒的爱情。露丝从救生船上一跃而起,扑到窗边的一刹,因了这份勇敢和贪求,最为美丽。在有生的瞬间能遇到你,竟花光所有运气。

you're going to go on and you're going to make babies and watch them grow and you're going to die an old lady. 你将长寿,子孙满堂


乘客存活数据:http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

这里用决策树算法,按照乘客的社会阶层(pclass),年龄(age), 性别(sex)三个因素,来预测乘客最终的生存状况(survived)

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


def descsion():
    # 获取数据, 提取特征值和目标值
    Titanic_data = pd.read_csv("http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt")

    # 打印字段名
    print(Titanic_data.columns)

    # 分割出特定的字段(社会阶层, 年龄, 性别)对生存率的影响
    titanic_x = Titanic_data[["pclass", "age", "sex"]]
    titanic_y = Titanic_data[["survived"]]
    # 处理缺失值
    titanic_x["age"].fillna(titanic_x['age'].mean(), inplace=True)

    # 进行数据的分割
    x_train, x_test, y_train, y_test = train_test_split(titanic_x, titanic_y, train_size=0.25)

    # 对特征们进行字典特征抽取
    dict = DictVectorizer(sparse=False)

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

    # 查看抽取后特征的名字
    feature_names = dict.get_feature_names()
    print(feature_names)


    # 进行决策树预测(可选:限制决策树最大深度为10)
    my_decision_tree = DecisionTreeClassifier(max_depth=10)
    my_decision_tree.fit(x_train, y_train)

    print("单棵决策树预测的准确率为:", my_decision_tree.score(x_test, y_test))

    # 将树的结构保存到本地
    export_graphviz(my_decision_tree, "./my_decision_tree.dot", feature_names = feature_names)

    """
    将dot文件装换为png的方法
    在本机安装graphviz ubuntu版安装: sudo apt install graphviz   mac版安装: brew install graphviz
    然后运行命令: dot -Tpng my_decision_tree.dot -o my_decision_tree.png
    生成png格式图片my_desion_tree.png
    """
    # 随机树森林算法, 建立20棵数, 树的最大深度为15
    rf = RandomForestClassifier(n_estimators=21, max_depth=20)
    rf.fit(x_train, y_train)
    print("随机数森林预测的准确率为:", rf.score(x_test, y_test))

if __name__ == '__main__':
    descsion()

使用graphviz绘制决策树

1. 安装graphviz

  • ubuntu安装方式:
sudo apt install graphviz
  • mac安装方式
brew install graphviz

2. 通过终端,在.dot所在的目录运行命令,将.dot转换为png图片

dot -Tpng my_decision_tree.dot -o my_decision_tree.png

那些古板的绅士们要死得很体面。女士和儿童先上,男人们等待死亡。船上的乐队,从容演奏到了最后一刻。谁能告诉我,身边是世界末日的惊恐,但依然安静地演奏,是因为拥有了什么样的力量? “很高兴今晚和你们合作。”想起另外一部电影的一句台词:“假装我们明天还会再见。”生离死别,说了再见,但是没有明天。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WOLFRAM

Korteweg-de Vries 方程的可视化

24830
来自专栏PaddlePaddle

宠物也刷脸,如何最快长成这个技能树?

然而令人吃惊的是,在 LA Hacks 2018 的活动之中,来自加州理工学院的美籍华裔大二学生 EricZhao做出“狗脸识别”系统,16小时让梦成真!

13730
来自专栏随心DevOps

号称「永远不会输钱」的马丁格尔策略

点进来,说明你想赢,那我们直入主题。 ---- 所谓「马丁格尔(Martingale)策略」是在某个赌盘里,当每次「输钱」时就以 2 的倍数再增加赌金,直到赢钱...

627100
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/7/8

1. Nathan Benaich(一个伦敦投资AI的VC,比较懂技术)写的state of AI ppt,写的不错,还有他不久之前组织的一次AI会议(水准较高...

10120
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/7/22

链接:https://cn.udacity.com/course/self-driving-car-fundamentals-featuring-apollo-...

8010
来自专栏GIS讲堂

“GIS讲堂”第十课—WEBGIS中的地图图例

图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。它具有双重任务,在编图时作为图解表示地图内容的准绳,用图时作为必不...

19510
来自专栏量子位

众筹项目能否成功?用机器学习预测可以早知道

安妮 编译自 Shrikar Archak 量子位出品 | 公众号 QbitAI Kickstarter是一家美国的众筹平台。自2009年成立至今,已经有36万...

39250
来自专栏数据处理

碰运气的约会-几何概率

25850
来自专栏量子位

神经网络造“汉字”新技能全开,biangbiang面自愧不如

9910
来自专栏挖数

数据分析告诉你,韦小宝跟他七个老婆哪个最亲?

金庸的“飞雪连天射白鹿,笑书神侠倚碧鸳”,唯独《鹿鼎记》写的最是香艳动人,年少时阅此书,每每春心荡漾,心里如钻进小鹿。 ? 刁蛮任性的建宁公主、天香国色的阿珂、...

36680

扫码关注云+社区

领取腾讯云代金券