泰坦尼克号幸存者的预测

机器学习案例:泰坦尼克号幸存者的预测

泰坦尼克号幸存者预测是机器学习的经典案例,其涉及了众多机器学习会遇到的问题,回归难度也比较大。本次数据集来自kaggle,可从该地址https://www.kaggle.com/competitions/titanic/data自行下载。数据集格式为csv

引入需要调取的库

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
import numpy as np

处理数据集

数据集长下面这个样子

在这里插入图片描述

引入数据集

data = pd.read_csv('D:\\编程\\python_work\\train.csv')
print(data.info())  # 调出data数据信息
print(data.head(5))  # 调取前n行列表

在这里插入图片描述
该表为数据集的信息
从表中可以看出以下三个问题:
1、数据集中很多特征与幸存者数量相关性不大因此筛选特征以此提高回归准确率。
2、数据集的一些特征存在缺失值
3、数据集的特征需要统一类型为数字

筛选特征

先解决第一个问题,使用drop()函数来删除整列元素

# 筛选特征
data.drop(['Cabin', 'Name', 'Ticket'], inplace=True, axis=1)  # 删除特征列表,并覆盖原表,对列操作

第一个参数是需要删除的特征列表。
inplace默认值是False,表征不覆盖原表,这里inplace=True表征覆盖原表。
axis是对轴操作,默认值是0,是对行操作,1是对列操作

处理缺失值

接下来使用fillna()函数填充缺失值,dropna()函数用于删掉有缺失值的行

# 处理缺失值
data['Age'] = data['Age'].fillna(data['Age'].mean())  # 对缺失值Age进行填充
data = data.dropna(
### 泰坦尼克号幸存者预测分析的结论 泰坦尼克号幸存者预测是一个经典的机器学习问题,通常使用数据分析和建模技术来预测乘客是否能够幸存。以下是对这一问题的一些关键结论: #### 数据特征的重要性 在泰坦尼克号幸存者预测中,数据特征的选择对模型性能至关重要。常用的特征包括性别、年龄、船舱等级(Pclass)、票价(Fare)、登船港口(Embarked)等。研究表明,性别和船舱等级是影响幸存率的两个最重要因素[^1]。女性乘客和高等级船舱的乘客具有更高的幸存概率。 #### 模型选择与性能比较 多种机器学习算法可以用于泰坦尼克号幸存者预测,例如逻辑回归、决策树、随机森林和支持向量机等。其中,逻辑回归是一种简单且有效的线性分类模型,适合处理二分类问题。通过训练逻辑回归模型并评估其在测试集上的表现,可以得出模型的准确率。例如,在引用中的代码示例中,逻辑回归模型的准确率约为80%。 此外,更复杂的模型如随机森林和支持向量机通常能够提供更高的预测性能。随机森林通过集成多个决策树来减少过拟合,并提高泛化能力。支持向量机则通过寻找最佳超平面来实现非线性分类。 #### 数据预处理的影响 数据预处理是提升模型性能的关键步骤之一。在泰坦尼克号数据集中,缺失值(如年龄和船舱信息)和类别变量(如性别和登船港口)需要进行适当的处理。常见的方法包括: - 使用均值或中位数填充缺失值。 - 对类别变量进行独热编码(One-Hot Encoding)以转换为数值形式。 - 标准化或归一化数值特征以消除量纲差异。 通过这些预处理步骤,模型的性能可以显著提升。 #### 结论总结 通过对泰坦尼克号数据集的分析,可以得出以下结论: 1. 性别和船舱等级是影响幸存率的主要因素。 2. 逻辑回归、随机森林和支持向量机等机器学习算法可以有效预测乘客的幸存情况。 3. 数据预处理对于提升模型性能至关重要。 ```python # 示例代码:逻辑回归模型训练与评估 from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 创建并训练逻辑回归模型 model = LogisticRegression() model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = model.predict(X_test) # 输出模型在测试集上的准确率 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值