机器学习算法③—【决策树算法】预测泰坦尼克号乘客生存

本文介绍了如何利用Python和scikit-learn构建决策树模型预测泰坦尼克号乘客的生存概率。通过数据清洗、缺失值处理、特征工程(包括one-hot编码)以及模型训练和评估,最终得出一个77%准确率的预测模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. 项目背景:

          泰坦尼克号的沉没是历史上最有影响力的海难之一。1912年4月15日,在她的处女航中,被广泛认为是“永不沉没”的皇家邮轮泰坦尼克号在与冰山相撞后沉没。不幸的是,船上没有足够的救生艇,导致2224名乘客和船员中有1502人死亡。虽然生存中有一些运气因素,但似乎有些群体比其他群体更有可能生存下来。在这个挑战中,我们要求你建立一个预测模型来回答这个问题:“什么样的人更有可能幸存下来?”,使用乘客资料(即姓名、年龄、性别、社会经济阶层等)。

比赛地址:Titanic - Machine Learning from Disaster | Kaggleicon-default.png?t=N7T8https://www.kaggle.com/competitions/titanic/overview

二. 思路分析:

  • 1.获取数据
  • 2.数据清洗
    • 2.1 缺失值处理
    • 2.2 确定特征值,目标值
    • 2.3 数据集划分
  • 3.特征工程(字典特征抽取)
  • 4.决策树模型训练
  • 5.模型评估

三. 代码实现:

1.获取数据

import pandas as pd
titan = pd.read_csv(r'E:\AI课程笔记\机器学习\titanic_train copy.csv') #导入数据
print(titan.describe()) #查看数据的描述性统计

从输出可以看出,age列有数据缺失。需要对缺失值进行填充处理。

2.数据清洗

2.1 缺失值处理

x['age'].fillna(x['age'].mean(), inplace=True)

2.2确定目标值和特征值

x = titan[["pclass", "age", "sex"]]
y = titan["survived"]

2.3 数据集划分

x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)

3. 特征工程

需要利用to_dict(orient="records")将pandas数组特征转换成字典格式

对字典数据进行one-hot编码处理:

x_train = vect_1.fit_transform(x_train.to_dict(orient="records")) # 对字典数据进行one-hot编码
x_test = vect_1.transform(x_test.to_dict(orient="records")) # 对字典数据进行one-hot编码
print(vect_1.get_feature_names_out())
print(x_train)
print(x_test)

输出结果如下:

是不是很神奇!字典数据就这样被转化成了计算机可以认识的数组!

把要训练的数据转化成计算机可以识别的编码后,我们就可以开始训练模型了


4. 决策树模型训练

首先导入模块:

from sklearn.tree import DecisionTreeClassifier

然后实例化一个决策树(超参数是决策树的深度,这里设置为10):

dec = DecisionTreeClassifier(max_depth=10)

使用dec.fit()训练模型:

dec.fit(x_train, y_train) # 训练模型

看一下训练结果:

y_predict = dec.predict(x_test) # 预测
print(y_predict) # 预测结果

5. 模型评估

使用score()函数计算准确率:

准确率是0.77。也就是预测的100个样本里有77个预测正确。

6.决策树可视化

先用以下代码生成决策树图的dot文件:

export_graphviz(dec, out_file="tree.dot", feature_names=['Age','Pclass','Sex=female','Sex=male']) # 生成决策树结构文件"

将生成的dot文件内容复制粘贴到这个网站:http://webgraphviz.com/后,点击生成图像:

我们的决策树图像就生成啦!

四. 决策树总结

  • 优点:简单的理解和解释,可以处理多分类问题。
  • 缺点:容易发生过拟合,对噪声敏感,不稳定。
  • 改进:剪枝cart算法,随机森林
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字生命Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值