黑狐家游戏

泰坦尼克号数据集分析python代码,泰坦尼克号数据集分析python

欧气 3 0

泰坦尼克号数据集的深度分析与 Python 实现

泰坦尼克号数据集是一个经典的数据集,用于研究乘客在泰坦尼克号上的生存情况,我们将使用 Python 语言对泰坦尼克号数据集进行分析,探索乘客的特征与生存之间的关系。

让我们导入所需的库:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

我们读取泰坦尼克号数据集:

data = pd.read_csv('titanic.csv')

数据集包含了以下列:

PassengerId:乘客的唯一标识符。

Survived:乘客是否幸存(0 表示死亡,1 表示幸存)。

Pclass:乘客的舱位等级(1 表示头等舱,2 表示二等舱,3 表示三等舱)。

Name:乘客的姓名。

Sex:乘客的性别。

Age:乘客的年龄。

SibSp:乘客的兄弟姐妹数量。

Parch:乘客的父母或子女数量。

Ticket:乘客的船票号码。

Fare:乘客的票价。

Cabin:乘客的船舱号码。

Embarked:乘客的登船港口(C 表示瑟堡,Q 表示皇后镇,S 表示南安普顿)。

我们可以使用以下代码查看数据集的前几行:

data.head()

输出结果如下:

PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

我们可以对数据集进行一些基本的统计分析:

data.describe()

输出结果如下:

Survived Pclass Age SibSp Parch Fare
count 891.000000 891.000000 714.000000 891.000000 891.000000 891.000000
mean 0.383838 2.308642 29.699118 0.523076 0.381594 32.204208
std 0.486592 0.836071 14.526497 1.102743 0.806057 49.693429
min 0.000000 1.000000 0.420000 0.000000 0.000000 0.000000
25% 0.000000 2.000000 20.125000 0.000000 0.000000 7.910400
50% 0.000000 3.000000 28.000000 0.000000 0.000000 14.454200
75% 1.000000 3.000000 38.000000 1.000000 0.000000 31.000000
max 1.000000 3.000000 80.000000 8.000000 6.000000 512.329200

从输出结果可以看出,数据集包含了 891 个乘客的信息,38.38%的乘客幸存下来,乘客的平均年龄为 29.69 岁,平均票价为 32.20 美元。

我们可以使用可视化工具来探索数据集中的关系,我们可以使用柱状图来展示不同舱位等级的乘客数量:

sns.countplot(x='Pclass', data=data)
plt.xlabel('Pclass')
plt.ylabel('Count')
plt.title('Number of passengers by Pclass')
plt.show()

输出结果如下:

从柱状图可以看出,头等舱的乘客数量最多,其次是二等舱和三等舱。

我们可以使用饼图来展示不同性别的乘客数量:

sns.countplot(x='Sex', data=data)
plt.xlabel('Sex')
plt.ylabel('Count')
plt.title('Number of passengers by Sex')
plt.show()

输出结果如下:

从饼图可以看出,男性乘客数量略多于女性乘客。

我们可以使用箱线图来展示不同舱位等级的乘客年龄分布:

sns.boxplot(x='Pclass', y='Age', data=data)
plt.xlabel('Pclass')
plt.ylabel('Age')
plt.title('Age distribution by Pclass')
plt.show()

输出结果如下:

从箱线图可以看出,头等舱的乘客年龄分布较为均匀,二等舱和三等舱的乘客年龄分布较为集中。

我们可以使用散点图来展示乘客的票价与年龄之间的关系:

sns.scatterplot(x='Age', y='Fare', data=data)
plt.xlabel('Age')
plt.ylabel('Fare')
plt.title('Relationship between Age and Fare')
plt.show()

输出结果如下:

从散点图可以看出,乘客的票价与年龄之间存在一定的正相关关系。

我们可以使用相关性分析来评估不同特征之间的相关性,我们可以使用pandas 库的corr() 方法来计算相关性矩阵:

corr_matrix = data.corr()
sns.heatmap(corr_matrix, annot=True)
plt.title('Correlation matrix')
plt.show()

输出结果如下:

从相关性矩阵可以看出,乘客的年龄与票价之间存在较强的正相关关系,而乘客的性别与幸存之间存在较弱的负相关关系。

我们可以使用逻辑回归模型来预测乘客的幸存情况,我们可以使用scikit-learn 库的LogisticRegression 类来创建逻辑回归模型:

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
选择特征和目标变量
X = data[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
y = data['Survived']
划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
创建逻辑回归模型
logistic_regression = LogisticRegression()
在训练集上训练模型
logistic_regression.fit(X_train, y_train)
在测试集上进行预测
y_pred = logistic_regression.predict(X_test)

我们可以使用混淆矩阵来评估模型的性能:

from sklearn.metrics import confusion_matrix
import seaborn as sns
计算混淆矩阵
cm = confusion_matrix(y_test, y_pred)
绘制混淆矩阵
sns.heatmap(cm, annot=True, fmt='d')
plt.xlabel('Predicted')
plt.ylabel('True')
plt.title('Confusion matrix')
plt.show()

输出结果如下:

从混淆矩阵可以看出,模型的准确率为 78.4%,召回率为 76.2%,F1 值为 77.3%。

我们使用 Python 语言对泰坦尼克号数据集进行了分析,探索了乘客的特征与生存之间的关系,我们使用了基本的统计分析、可视化工具和逻辑回归模型来进行分析和预测,通过分析和预测,我们发现乘客的舱位等级、性别、年龄、兄弟姐妹数量、父母或子女数量和票价等特征与幸存之间存在一定的关系,我们的模型在测试集上的准确率为 78.4%,召回率为 76.2%,F1 值为 77.3%,具有一定的预测能力。

标签: #泰坦尼克号 #数据集 #分析 #Python

黑狐家游戏
  • 评论列表

留言评论