在Python中使用Tensorflow预测泰坦尼克号的生存能力
在这篇文章中,我们将学习利用给定的关于泰坦尼克号乘客的性别、年龄等信息来预测他们的生存机会。由于这是一项分类任务,我们将使用随机森林。
这个实验将有三个主要步骤。
- Feature Engineering
- Imputation
- 训练和预测
数据集
这个实验的数据集可以在Kaggle网站上免费获得。从这个链接下载数据集https://www.kaggle.com/competitions/titanic/data?select=train.csv。一旦下载了数据集,它就被分成三个CSV文件,分别是gender submission.csv train.csv和test.csv。
导入库和初始设置
现在让我们使用pandas数据框架来读取训练和测试数据。
为了了解每一列的信息,如数据类型等,我们使用df.info()函数。
现在让我们看看数据集中是否有任何NULL值。这可以用isnull()函数来检查。它的输出结果如下。
可视化
现在让我们用一些饼状图和柱状图将数据可视化,以获得对数据的正确理解。
让我们首先直观地看到幸存者的数量和死亡人数。
Sex feature
Feature Engineering
现在让我们来看看,为了预测测试数据,我们应该放弃和/或修改哪些列。这一步的主要任务是放弃不必要的特征,并将字符串数据转换为数字类别,以方便训练。
我们一开始会放弃船舱的功能,因为从它那里不能提取很多更有用的信息。但我们将从机舱栏中做一个新的栏目,看看是否有机舱信息的分配。
我们也可以放弃票据功能,因为它不太可能产生任何有用的信息。
在Embarked特征中存在缺失值。为此,我们将用 “S “代替空值,因为 “S “的登船次数比其他两个高。
我们现在将对年龄进行分组。我们将合并人们的年龄组并将其归入相同的组别。通过这样做,我们将有更少的类别,并将有一个更好的预测,因为这将是一个分类数据集。
在测试集和训练集的 “标题 “栏中,我们将把它们归类为同等数量的类别。然后我们将给标题分配数值,以方便模型训练。
现在使用标题信息,我们可以填补缺失的年龄值。
现在给每个年龄类别分配一个数值。一旦我们将年龄映射到不同的类别,我们就不需要年龄特征了。因此,放弃它
删除名称功能,因为它没有包含更多有用的信息。
赋予性别以数值,并进行分类。
根据该P类的平均票价,填补测试集中缺失的票价值
现在我们已经完成了功能工程
模型训练
我们将使用随机森林作为选择的算法来进行模型训练。在此之前,我们将以80:20的比例分割数据,作为训练-测试分割。为此,我们将使用sklearn库中的train_test_split()。
现在从sklearn的集合模块中导入随机森林函数,并用于训练集。
这样一来,我们得到了83.25%的准确率。
预测
我们得到了测试数据集,我们必须对其进行预测。为了进行预测,我们将把测试数据集传递给我们的训练模型,并将其保存为一个CSV文件,其中包含信息、乘客ID和生存率。PassengerId将是测试数据中的乘客ID,survival一栏将是0或1。
这将创建一个 resultfile.csv,看起来像这样