如何使用python对泰坦尼克号幸存者进行数据分析与预测

发布时间:2023-03-22 11:56:43 作者:iii
来源:亿速云 阅读:311

如何使用Python对泰坦尼克号幸存者进行数据分析与预测

目录

  1. 引言
  2. 数据获取与加载
  3. 数据预处理
  4. 数据探索性分析
  5. 模型构建与评估
  6. 模型优化
  7. 结论
  8. 参考文献

引言

泰坦尼克号沉船事件是历史上最著名的海难之一,造成了大量人员伤亡。通过对泰坦尼克号幸存者数据的分析,我们可以了解哪些因素影响了乘客的幸存概率。本文将使用Python对泰坦尼克号幸存者数据进行详细的分析与预测。

数据获取与加载

首先,我们需要获取泰坦尼克号幸存者数据集。该数据集通常包含乘客的性别、年龄、舱位等级、登船港口等信息。我们可以从Kaggle或UCI Machine Learning Repository等平台下载该数据集。

import pandas as pd

# 加载数据集
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')

# 查看数据集的前几行
print(train_data.head())

数据预处理

数据清洗

在数据预处理阶段,我们需要处理缺失值、异常值等问题。

# 检查缺失值
print(train_data.isnull().sum())

# 处理缺失值
train_data['Age'].fillna(train_data['Age'].median(), inplace=True)
train_data['Embarked'].fillna(train_data['Embarked'].mode()[0], inplace=True)
train_data['Cabin'].fillna('Unknown', inplace=True)

# 删除不必要的列
train_data.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

特征工程

特征工程是数据预处理的重要步骤,我们可以通过创建新特征或转换现有特征来提高模型的性能。

# 创建新特征:家庭大小
train_data['FamilySize'] = train_data['SibSp'] + train_data['Parch'] + 1

# 创建新特征:是否独自一人
train_data['IsAlone'] = 1
train_data.loc[train_data['FamilySize'] > 1, 'IsAlone'] = 0

# 将性别转换为数值
train_data['Sex'] = train_data['Sex'].map({'male': 0, 'female': 1})

# 将登船港口转换为数值
train_data['Embarked'] = train_data['Embarked'].map({'S': 0, 'C': 1, 'Q': 2})

数据探索性分析

幸存者分布

首先,我们来看一下幸存者的分布情况。

import matplotlib.pyplot as plt
import seaborn as sns

# 幸存者分布
sns.countplot(x='Survived', data=train_data)
plt.title('Survivor Distribution')
plt.show()

性别与幸存率

性别是影响幸存率的重要因素之一。

# 性别与幸存率
sns.barplot(x='Sex', y='Survived', data=train_data)
plt.title('Survival Rate by Gender')
plt.show()

年龄与幸存率

年龄也是一个重要的影响因素。

# 年龄与幸存率
sns.histplot(x='Age', hue='Survived', data=train_data, kde=True)
plt.title('Survival Rate by Age')
plt.show()

舱位等级与幸存率

舱位等级反映了乘客的社会经济地位,对幸存率有显著影响。

# 舱位等级与幸存率
sns.barplot(x='Pclass', y='Survived', data=train_data)
plt.title('Survival Rate by Passenger Class')
plt.show()

登船港口与幸存率

登船港口也可能影响幸存率。

# 登船港口与幸存率
sns.barplot(x='Embarked', y='Survived', data=train_data)
plt.title('Survival Rate by Embarked Port')
plt.show()

模型构建与评估

数据分割

在构建模型之前,我们需要将数据集分为训练集和测试集。

from sklearn.model_selection import train_test_split

# 特征与标签
X = train_data.drop('Survived', axis=1)
y = train_data['Survived']

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

模型选择

我们可以选择多种机器学习模型进行预测,如逻辑回归、随机森林、支持向量机等。

from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC

# 初始化模型
models = {
    'Logistic Regression': LogisticRegression(),
    'Random Forest': RandomForestClassifier(),
    'Support Vector Machine': SVC()
}

模型训练

接下来,我们训练这些模型并评估它们的性能。

from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 模型训练与评估
for name, model in models.items():
    model.fit(X_train, y_train)
    y_pred = model.predict(X_test)
    print(f'{name} Accuracy: {accuracy_score(y_test, y_pred)}')
    print(f'{name} Confusion Matrix:\n{confusion_matrix(y_test, y_pred)}')
    print(f'{name} Classification Report:\n{classification_report(y_test, y_pred)}')

模型评估

通过比较不同模型的准确率、混淆矩阵和分类报告,我们可以选择性能最好的模型。

模型优化

特征选择

通过特征选择,我们可以去除不重要的特征,提高模型的性能。

from sklearn.feature_selection import SelectKBest, chi2

# 特征选择
selector = SelectKBest(chi2, k=5)
X_new = selector.fit_transform(X, y)

# 查看选择的特征
selected_features = X.columns[selector.get_support()]
print(selected_features)

超参数调优

通过超参数调优,我们可以进一步提高模型的性能。

from sklearn.model_selection import GridSearchCV

# 超参数调优
param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 10, 20, 30],
    'min_samples_split': [2, 5, 10]
}

grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
grid_search.fit(X_train, y_train)

# 最佳参数
print(grid_search.best_params_)

结论

通过对泰坦尼克号幸存者数据的分析与预测,我们了解了哪些因素影响了乘客的幸存概率。通过数据预处理、特征工程、模型构建与优化,我们能够构建一个性能较好的预测模型。未来,我们可以进一步探索其他机器学习算法或深度学习模型,以提高预测的准确性。

参考文献

  1. Kaggle: Titanic - Machine Learning from Disaster
  2. UCI Machine Learning Repository: Titanic Dataset
  3. Scikit-learn Documentation
  4. Pandas Documentation
  5. Matplotlib Documentation
  6. Seaborn Documentation

以上是关于如何使用Python对泰坦尼克号幸存者进行数据分析与预测的详细步骤。通过本文的学习,读者可以掌握数据预处理、特征工程、模型构建与评估的基本方法,并能够应用于其他类似的数据分析任务中。

推荐阅读:
  1. Python生成器yield怎么使用
  2. 怎么让python程序正确高效地并发

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:python内置堆如何实现

下一篇:PHP中如何安装支付宝SDK

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》