但是我们需要提交一个答案到比赛中。我们需要在测试���据上采取一个和训练数据上一样的校准的步骤来完成这个事情。如果我们没有校准操作,我们就不能够利用它做出有效的预测。
这些操作要在我们对列所有的改变之前进行。
处理 titanic_test 和处理 titanic 用同样的方法。
这涉及到:
使用训练数据集中的年龄中位数填充“Age”列的的所有缺失值。训练数据集的年龄已经使用完全相同的值替换了缺失年龄(因为值已经不同了,所以这不能作为测试集的中位数)。你应该用 titanic['Age'].median() 去找到中位数。
将 Sex 列中的所有 male 换成 0 ,所有 female 换成 1 。
用 S 填充 Embarked 列中的所有缺失值。
将 Embarked 列中的 S 换成 0 , C 换成 1 , Q 换成 2 。
我们也需要将 Fare 列的缺失值替换掉。用 .fillna 将测试集中的缺失值用中位数替换掉。训练集中的 Fare 列没有缺失值了,但是测试集有时会不同。
titanic_test = pandas.read_csv("titanic_test.csv")
titanic_test['Age'] = titanic_test['Age'].fillna(titanic_test['Age'].median())
titanic_test['Fare'] = titanic_test['Fare'].fillna(titanic_test['Fare'].median())
titanic_test.loc[titanic_test['Sex'] == 'male','Sex'] = 0
titanic_test.loc[titanic_test['Sex'] == 'female','Sex'] = 1
titanic_test['Embarked'] = titanic_test['Embarked'].fillna('S')
titanic_test.loc[titanic_test['Embarked'] == 'S', 'Embarked'] = 0
titanic_test.loc[titanic_test['Embarked'] == 'C', 'Embarked'] = 1
titanic_test.loc[titanic_test['Embarked'] == 'Q', 'Embarked'] = 2
13:生成一个提交文件
现在我们有了我们需要生成一个比赛提交答案的所有东西了。
首先,我们必须先在训练数据上训练一个算法。然后我们在测试数据集上做一个预测。最后,我们生成一个包含预测和乘客id的csv文件。
一旦你完成了下面步骤的代码,你就能用 submission.to_csv('kaggle.csv, index=False') 输出一个csv结果。这将会给你的第一个条件所有需要的东西——虽然这没有给你很好的准确率。(~0.75)
# Initialize the algorithm class
alg = LogisticRegression(random_state=1)
# Train the algorithm using all the training data
alg.fit(titanic[predictors], titanic["Survived"])
# Make predictions using the test set.
predictions = alg.predict(titanic_test[predictors])
# Create a new dataframe with only the columns Kaggle wants from the dataset.
submission = pandas.DataFrame({
"PassengerId": titanic_test["PassengerId"],
"Survived": predictions
})
14:下一步
我们只是生成了一个调教文件,但是准确率不是很好(0.75)。由于我们的预测在不同的数据集上导致在测试集上的分数低于我们在交叉验证上的分数。在下一个任务中我们将学习如何生成更好的特征和使用更好的模型来提高我们的分数。
恭喜你完成了这个任务!
结束!