泰坦尼克号数据集分析:从入门到进阶

欢迎来到本篇博客!今天,我们将一起探索著名的泰坦尼克号数据集。这个数据集包含了泰坦尼克号上乘客的信息,以及他们是否在船沉没时幸存下来。我们将从头开始进行数据分析,包括数据的加载、探索、可视化,以及构建机器学习模型来预测乘客的生存情况。

引言

泰坦尼克号是一艘著名的英国客轮,于1912年首航时遭遇海难,沉没在大西洋。这次灾难造成了大量乘客和船员的生命丧失。泰坦尼克号数据集是一个理想的机器学习入门案例,因为它包含了各种有关乘客的信息,例如他们的性别、年龄、仓位等级等,还有一个二进制标签表示他们是否幸存。

步骤1:导入必要的库

首先,我们需要导入一些Python库,以便进行数据分析和机器学习建模。以下是我们将使用的库:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report

步骤2:加载和探索数据

接下来,让我们加载泰坦尼克号数据集并进行一些初步的数据探索。我们将使用pandas库来加载数据,并查看前几行。

# 加载数据集
url = "https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv"
data = pd.read_csv(url)

# 显示数据的前几行
data.head()

这将显示数据的前五行,让我们对数据有一个大致的了解。

数据包含了各种信息,如乘客的姓名、性别、年龄、仓位等级、票价、登船港口以及是否幸存。接下来,我们可以使用info()函数来查看数据的详细信息,包括特征的数据类型和缺失值情况。

# 查看数据的详细信息
data.info()

这将显示每个特征的数据类型以及非空值的数量。通过这些信息,我们可以判断哪些特征需要进行数据清洗和预处理。

步骤3:数据预处理

在进行数据分析和建模之前,我们需要对数据进行一些预处理。首先,我们可以删除一些不需要的特征,如乘客的姓名和船票号码。

# 删除不需要的特征
data = data.drop(["Name", "Ticket"], axis=1)

接下来,我们需要处理缺失值。我们可以使用fillna()函数来填充缺失值,一种常见的方法是使用中位数或均值填充数值特征,使用众数填充分类特征。

# 填充数值特征的缺失值
data["Age"].fillna(data["Age"].median(), inplace=True)
data["Fare"].fillna(data["Fare"].median(), inplace=True)

# 填充分类特征的缺失值
data["Embarked"].fillna(data["Embarked"].mode()[0], inplace=True)

现在,我们的数据已经没有缺失值了。接下来,我们需要处理分类特征,将其转换为数值特征,以便机器学习模型能够理解。我们可以使用pd.get_dummies()函数来进行独热编码。

# 对分类特征进行独热编码
data

 = pd.get_dummies(data, columns=["Sex", "Embarked"], drop_first=True)

最后,我们将数据集分割为特征(X)和目标(y)。

# 分割数据为特征(X)和目标(y)
X = data.drop("Survived", axis=1)
y = data["Survived"]

步骤4:可视化数据

在进行机器学习建模之前,我们可以使用可视化工具来更好地理解数据。让我们绘制一些图表,以便更好地了解泰坦尼克号数据集。

首先,我们可以绘制一个生存率的条形图,以查看幸存和遇难乘客的比例。

# 绘制生存率条形图
sns.countplot(data=data, x="Survived")
plt.xlabel("Survived")
plt.ylabel("Count")
plt.title("Survival Count")
plt.show()

这将显示一个条形图,显示了幸存和遇难乘客的数量。接下来,我们可以绘制一些关于特征的图表,如年龄分布、仓位等级分布等。

# 绘制年龄分布直方图
plt.figure(figsize=(8, 6))
sns.histplot(data=data, x="Age", bins=20, kde=True)
plt.xlabel("Age")
plt.ylabel("Count")
plt.title("Age Distribution")
plt.show()

# 绘制仓位等级分布条形图
sns.countplot(data=data, x="Pclass")
plt.xlabel("Pclass")
plt.ylabel("Count")
plt.title("Pclass Distribution")
plt.show()

这些图表可以帮助我们更好地了解数据的分布情况,有助于后续的特征工程和建模过程。

步骤5:构建和训练模型

现在,我们准备好构建机器学习模型来预测乘客的生存情况。在本例中,我们将使用随机森林分类器作为示例模型。首先,我们需要将数据集分割为训练集和测试集。

# 将数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

接下来,我们进行特征标准化处理,以确保特征具有相同的尺度。

# 特征标准化处理
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

现在,我们可以创建随机森林分类器模型并在训练数据上拟合模型。

# 创建随机森林分类器模型
clf = RandomForestClassifier(random_state=42)

# 在训练数据上拟合模型
clf.fit(X_train, y_train)

步骤6:评估模型

使用测试数据来评估模型的性能是非常重要的。我们将计算模型的准确性并生成一个分类报告。

# 在测试数据上进行预测
y_pred = clf.predict(X_test)

# 计算准确性
accuracy = accuracy_score(y_test, y_pred)
print("模型准确性:", accuracy)

# 生成分类报告
report = classification_report(y_test, y_pred)
print("分类报告:\n", report)

模型的准确性告诉我们模型正确预测了多少测试样本的类别。分类报告提供了更详细的性能指标,包括精确度、召回率和F1分数。

步骤7:总结和进一步探索

在本文中,我们从头开始探索了泰坦尼克号数据集,包括数据的加载、探索、可视化、预处理、建模和评估。我们使用了随机森林分类器作为示例模型,并且在测试集上获得了不错的准确性。

接下来,你可以进一步探索数据,尝试其他机器学习算法,或进行特征工程来提高模型性能。泰坦尼克号数据集是一个理想的学习工具,适合初学者入门机器学习和数据分析。

希望这篇博客对你有所帮助,欢迎提出任何问题或建议。祝你在数据科学的旅程中取得成功!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值