赞
踩
欢迎来到本篇博客!今天,我们将一起探索著名的泰坦尼克号数据集。这个数据集包含了泰坦尼克号上乘客的信息,以及他们是否在船沉没时幸存下来。我们将从头开始进行数据分析,包括数据的加载、探索、可视化,以及构建机器学习模型来预测乘客的生存情况。
泰坦尼克号是一艘著名的英国客轮,于1912年首航时遭遇海难,沉没在大西洋。这次灾难造成了大量乘客和船员的生命丧失。泰坦尼克号数据集是一个理想的机器学习入门案例,因为它包含了各种有关乘客的信息,例如他们的性别、年龄、仓位等级等,还有一个二进制标签表示他们是否幸存。
首先,我们需要导入一些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
接下来,让我们加载泰坦尼克号数据集并进行一些初步的数据探索。我们将使用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()
这将显示每个特征的数据类型以及非空值的数量。通过这些信息,我们可以判断哪些特征需要进行数据清洗和预处理。
在进行数据分析和建模之前,我们需要对数据进行一些预处理。首先,我们可以删除一些不需要的特征,如乘客的姓名和船票号码。
# 删除不需要的特征
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"]
在进行机器学习建模之前,我们可以使用可视化工具来更好地理解数据。让我们绘制一些图表,以便更好地了解泰坦尼克号数据集。
首先,我们可以绘制一个生存率的条形图,以查看幸存和遇难乘客的比例。
# 绘制生存率条形图
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()
这些图表可以帮助我们更好地了解数据的分布情况,有助于后续的特征工程和建模过程。
现在,我们准备好构建机器学习模型来预测乘客的生存情况。在本例中,我们将使用随机森林分类器作为示例模型。首先,我们需要将数据集分割为训练集和测试集。
# 将数据集分割为训练集和测试集
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)
使用测试数据来评估模型的性能是非常重要的。我们将计算模型的准确性并生成一个分类报告。
# 在测试数据上进行预测
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分数。
在本文中,我们从头开始探索了泰坦尼克号数据集,包括数据的加载、探索、可视化、预处理、建模和评估。我们使用了随机森林分类器作为示例模型,并且在测试集上获得了不错的准确性。
接下来,你可以进一步探索数据,尝试其他机器学习算法,或进行特征工程来提高模型性能。泰坦尼克号数据集是一个理想的学习工具,适合初学者入门机器学习和数据分析。
希望这篇博客对你有所帮助,欢迎提出任何问题或建议。祝你在数据科学的旅程中取得成功!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。