对于数据集观察

其中有11列个维度,需要对其中一些进行数据处理

PassengerId ,乘客的id号,对生存率没影响。

Survived ,应该是标签,1表示存活,0表示死亡。

Pclass ,船舱等级,就是我们坐船有等级之分。这个属性会对生产率有影响。

Name ,名字,这个不影响生存率。应该可以忽略。

Sex , 性别,女士优先,所有这列保留,可能有影响。

Age , 年龄,因为优先保护老幼,可能有影响。

SibSp ,兄弟姐妹,就是有些人和兄弟姐妹一起上船的。这个会有影响,保留

Parch , 父母和小孩。这个也可能因为要救父母小孩耽误上救生船。保留

Ticket , 票的编号。应该没有影响,删除

Fare , 费用。这列保留

Cabin ,舱号。住的舱号没有影响。忽略。

Embarked ,上船的地方。这列可能有影响。我认为登陆地点不同,可能显示人的地位之类的不一样。我们先保留这列。

首先导入所需库

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from sklearn import tree
import matplotlib.pyplot as plt

导入数据集并可视化基本信息

data = pd.read_csv(r"C:\Users\google1\PycharmProjects\pythonProject\机器学习作业\train.csv")
data.head()
print(data.info())
print(data.shape)#测试集有11个维度,以及891个样本

如图

对数据进行预处理,删除对预测效果无关信息,并删除缺失太多的列信息,对行缺失值进行均值填补,行缺失多的进行删除

data.drop(["Cabin","Name","Ticket","PassengerId"],inplace=True,axis=1)
# print(data.info())#现在有8列
data['Age'] = data['Age'].fillna(data['Age'].mean)
data = data.dropna()
print(data.info())#又删除了两个缺失的行

处理后如图

对一些Object类数据进行编码

encoded = LabelEncoder()
encoded.fit(data['Sex'])
data['Sex'] = encoded.transform(data["Sex"])encoded.fit(data['Embarked'])
data['Embarked'] = encoded.transform(data["Embarked"])
print(data.head())

效果如下

可见将其成功编码

接下来训练模型

#提取标签
X = data.drop(["Survived"],axis=1)
y = data["Survived"]
# print(X.info())
from sklearn.model_selection import train_test_split
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3)
#调整一下索引
for i in [Xtrain, Xtest, Ytrain, Ytest]:i.index = range(i.shape[0])
#拟合模型
clf = DecisionTreeClassifier(random_state=25)
clf = clf.fit(Xtrain, Ytrain)
# score = cross_val_score(clf,X,y,cv=10).mean()
score_ = clf.score(Xtest, Ytest)
print(score_)

测得最后的准确率为0.778

接下来可调参,主要调最大深度max—depth

#影响其性能的一个主要指标是树的最大深度
score__ = []
for i in range(10):clf = DecisionTreeClassifier(random_state=25,max_depth=i+1,criterion="entropy" )clf = clf.fit(Xtrain, Ytrain)score_te = cross_val_score(clf,X,y,cv=10).mean()score__.append(score_te)
print(max(score__))
plt.plot(range(1,11),score__,color="blue",label="test")
plt.xticks(range(1,11))
plt.show()

可见当深度是7时效果较好,可以重新返回加入参数最大深度并改为7,此时准确度变为了0.82

可以画出树的形状,这里需要导入库

#画出决策树,需要导入库
feature_name = ["Pclass","Sex","Age","SibSp","Parch","Fare","Embarked"]
import graphviz
dot_data = tree.export_graphviz(clf,out_file = None,feature_names= feature_name,class_names=["活着","遇难"],filled=True,rounded=True)
graph = graphviz.Source(dot_data)
graph.render(view=True, format="pdf", filename="decisiontree_pdf")

一个牛马模样的决策树就诞生了

最后,对给定无标签数据集进行预测,如图 不知存活情况

导入数据集并同样处理

#导入测试集
#导入测试集
data1 = pd.read_csv(r'C:\Users\google1\PycharmProjects\pythonProject\机器学习作业\test.csv')
data1.drop(["Cabin","Name","Ticket","PassengerId"],inplace=True,axis=1)
data1["Age"] = data1["Age"].fillna(data1["Age"].mean())
data1 = data1.dropna()
encoded = LabelEncoder()
encoded.fit(data1['Sex'])
data1['Sex'] = encoded.transform(data1["Sex"]).astype("int64")encoded.fit(data1['Embarked'])
data1['Embarked'] = encoded.transform(data1["Embarked"]).astype("int64")
predict1 = clf.predict(data1)
print(predict1)

结果如图

机器学习决策树算法泰塔尼克号预测相关推荐

  1. 沉船会有什么_深海探险公司OceanGate与NASA合作制造潜艇,探访泰塔尼克号沉船...

    多年以来,人们一直盼望有机会前往大西洋深处,探寻静卧于此的泰坦尼克号.现在,在美国宇航局(NASA)的协作下,全球首家深海商业探险科技企业OceanGate将有望抵达这座全世界最著名的沉船. 这家总部 ...

  2. kaggle房价预测特征意思_机器学习-kaggle泰坦尼克生存预测(一)-数据清洗与特征构建...

    1.背景: 1.1 关于kaggle: 谷歌旗下的 Kaggle 是一个数据建模和数据分析竞赛平台.该平台是当下最流行的数据科研赛事平台,其组织的赛事受到全球数据科学爱好者追捧. 如果学生能够在该平台 ...

  3. 机器学习-决策树之回归树python实战(预测泰坦尼克号幸存情况)(三)

    本文用通俗易懂的方式来讲解分类树中的回归树,并以"一维回归的图像绘制"和"泰坦尼克号幸存者预测"两个例子来说明该算法原理. 以下是本文大纲: 1 Decisio ...

  4. 机器学习实战之决策树(四)示例:预测隐形眼镜类型(含数据集)

    决策树(四)示例:预测隐形眼镜类型 流程 代码 决策树小结 转载请注明作者和出处:https://blog.csdn.net/weixin_45814668 微信公众号:qiongjian0427 知 ...

  5. 【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化

    [阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. [阿旭机器学习实战][36]糖尿病预测-决策树建模及其可视化 目录 [阿旭机器学习实战][36]糖 ...

  6. 机器学习 --- 决策树(educode实训作业)

    引言:本文主要对educoder机器学习 --- 决策树的实训作业进行讲解,创造不易!请您点点关注,点点收藏叭!!! 目录 第1关:什么是决策树 任务描述 相关知识 引例 决策树的相关概念 编程要求 ...

  7. 基于关联分析与机器学习的配网台区重过载预测方法

    基于关联分析与机器学习的配网台区重过载预测方法 张国宾,王晓蓉,邓春宇 中国电力科学研究院,北京 100192 摘要:针对配电网运行中长期存在的台区重过载问题,提出基于关联规则挖掘的重过载影响因素分析 ...

  8. 泰坦尼克数据集预测分析_探索性数据分析—以泰坦尼克号数据集为例(第1部分)

    泰坦尼克数据集预测分析 Imagine your group of friends have decided to spend the vacations by travelling to an am ...

  9. 集成算法-随机森林与案例实战-泰坦尼克获救预测

    集成算法-随机森林 Ensemble learning 目的:让机器学习效果更好,单个不行,群殴走起 Bagging:训练多个分类器取平均 f ( x ) = 1 / M ∑ m = 1 M f m ...

最新文章

  1. 对象的序列化和反序列化
  2. mysql 获取server信息_MySQL 获取服务器元数据
  3. python qthread 线程退出_线程:概念和实现
  4. Protocol Buffer数据编码
  5. 螺旋矩阵 IIPython解法
  6. Java 面试之数据库
  7. 使用caffemodel模型(由mnist训练)测试单张手写数字样本
  8. 什么是云存储网关CSG
  9. 笔记16(shell编程)
  10. 使用 GNU CC 的预编译头文件加快编译速度
  11. iOS 屏幕适配 X XR XS XSMax 尺寸
  12. php7.4 ffi,PHP 7.4 前瞻:FFI
  13. PTA题目 : 用指针实现将一个3*3的整型矩阵转置
  14. 决策树算法——ID3算法,C4.5算法
  15. 苹果开发者注册了邓白氏编码不能用,查询时提示该组织不存在怎么办?
  16. 【Redis】错误:failed: Hostname must not be empty or null
  17. 公司太卷,研发3年经验裸辞,喜获字节/招银等6家大厂offer
  18. linux_io_note_01
  19. 无刷三相直流电机电动工具驱动方案设计
  20. visio2007一些知识

热门文章

  1. C#实现移动零和爬楼梯
  2. Coq语言 Final Exam
  3. GD32E23x的USART被断点打断后重新运行,会一直进入中断的问题
  4. 细说VL817S与VL817-Q7的区别
  5. LaTex将普通图片格式转换成高清图片格式eps
  6. PostgreSQL - 数据库与表格操作
  7. 包装类说明以及包装类的装箱和拆箱
  8. LinuxPostfixsendEmail邮件服务
  9. CSS设置超链接样式
  10. java 答题卡_阅读下列说明和java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】 - 信管网...