Logo
Section 1 / 13

获取和查看数据集

了解我们如何获取和查看数据集。

导入

获取和查看数据集

了解我们如何获取和查看数据集。

预测泰坦尼克号上的生存情况

泰坦尼克号沉船事件是历史上最著名的海难之一。

1912年4月15日,泰坦尼克号在撞上冰山后沉没。当时被认为不会沉没的船只,船上缺乏足够的救生艇。结果,2224名乘客和船员中,有1502人不幸遇难。

当然,722名幸存者无疑有些运气成分。但似乎某些人群的生存几率明显更高。因此,泰坦尼克号沉船事件也成为了机器学习初学者的经典入门案例。

如果你已有机器学习经验,可能听说过Kaggle提供的著名泰坦尼克号机器学习竞赛。

如果你还不了解Kaggle,它属于全球最大的数据科学社区之一。提供大量有趣的公开数据集,是入门机器学习的理想平台。

需要解决的问题很简单:利用机器学习构建一个模型,根据乘客信息预测谁在泰坦尼克号海难中幸存。

获取数据集

要获取数据集,你需要注册一个Kaggle账号(免费),然后加入该竞赛。尽管Kaggle以竞赛为核心,但你无需主动提交解决方案即可参与。

当你加入竞赛时,必须接受并遵守相关规则,例如每日可提交次数、团队人数上限等竞赛特定要求。

在竞赛页面顶部的“Data”标签页中可以找到竞赛数据。向下滚动即可看到文件列表。数据包含三个文件:

  • train.csv
  • test.csv
  • gender_submission.csv

train.csv 包含部分泰坦尼克号乘客的数据,用于训练你的算法判断乘客是否幸存。

test.csv 包含另一部分乘客的数据,用于评估你的算法表现。

gender_submission.csv 是一个示例文件,展示如何组织预测结果以便提交至Kaggle。由于你当前的目标是学习而非参赛,可以跳过此文件。

请下载 train.csv 和 test.csv 文件。

查看数据

第一步是加载数据。你可以使用Pandas库来完成。它是机器学习领域广受认可的数据处理工具,提供了多种实用功能,例如用于读取CSV文件的 read_csv 函数。

从CSV文件加载数据

1import pandas as pd 2train = pd.read_csv('train.csv') 3test = pd.read_csv('test.csv')

数据被加载到 train 和 test 变量中,它们都是Pandas的DataFrame对象。

DataFrame以二维结构存储数据,并带有标签,类似于数据库表或电子表格。它自带许多有用的属性和方法。

例如,DataFrame的 shape 属性返回一个包含行数和列数的元组。

泰坦尼克号数据集的形状

1import pandas as pd 2train = pd.read_csv('train.csv') 3test = pd.read_csv('test.csv') 4print('train has {} rows and {} columns'.format(*train.shape)) 5print('test has {} rows and {} columns'.format(*test.shape))

可以看到,训练集有891条记录,测试集有418条记录。更值得注意的是,训练集比测试集多出一列。

DataFrame的 info() 方法能提供更详细的信息。让我们查看训练集的具体情况。

训练集与测试集的结构

1import pandas as pd 2train = pd.read_csv('train.csv') 3test = pd.read_csv('test.csv') 4train.info() 5#test.info()

info 方法会列出所有列的信息:索引、列名、非空值数量以及数据类型。

我们也可以查看测试集的情况。只需取消注释上方代码框中的第5行即可。对比两个数据集可以发现,测试集缺少“Survived”这一列,该列用于标识乘客是否幸存。

正如Kaggle所说明的,他们使用测试集来评估提交结果。如果提前提供正确答案,比赛也就失去了意义。我们的任务正是预测正确的标签。

由于你并不打算将预测结果提交给Kaggle来评估模型性能,因此测试集在此阶段并无实际用途。

我们将重点放在训练集上。

info 输出的信息较为抽象。不如直接看看真实数据?这正是 head 方法的作用。

head 方法会显示列名及前五行数据。基于这些信息,我们来逐一分析各列内容。你也可以在Kaggle页面上查阅相应字段的说明。

查看数据

1import pandas as pd 2train = pd.read_csv('train.csv') 3test = pd.read_csv('test.csv') 4print(train.head())

每一列代表数据的一个特征。“PassengerId”是每行的连续编号。“Survived”表示乘客是否幸存(0=否,1=是)。“Pclass”是票务等级(1=一等舱,2=二等舱,3=三等舱)。接下来是直观易懂的字段:“Name”(姓名)、“Sex”(性别)、“Age”(年龄)。“SibSp”表示乘客在船上的兄弟姐妹或配偶人数。“Parch”表示乘客在船上的父母或子女人数。

此外还有“Fare”(票价)、“Cabin”(客舱号)以及登船港口(embarked),其中C=瑟堡,Q=昆士敦,S=南安普顿。

入门

数据预处理:缺失值