前面几天已经将数据全部处理完ta毕,并熟悉了pandas处理数据的基本操作。最后就使用sklearn库来最终解决这个问题,分析测试集中哪些人可以存活。
首先将训练集做去空处理,清理掉训练集中的空数据。pandas中,mean()函数就是求平均值的意思。
之后再对数据进行转码,转换为one-hot便于分析。
如果数据集本身并不是随机取样的,比如按照时间先后收集或者先收集高等舱再收集低等舱,就需要随机选取,使得各种样本充分混合。
切割数据集方面,python语法允许用元组同时给多个元素赋值,而sklearn为我们提供了一个一步到位的函数train_test_split()。
由于问题训练集已知结果,而且预测的值只有有限种(2种)可能,所以属于“分类”问题。对于此问题,可以使用决策树或者Logistic回归的方法。
建立模型之后,还可以通过score函数在处理所有数据之前评分评价分析模型的优劣。决策树模型看上去效果更好。
使用predict函数就可以开始预测,并把预测结果显示为数组。
预测数据得到之后,就要对预测数据进行评估。
- 模型评估是为了知道模型的泛化能力。
- 交叉验证(cross-validation)是一种评估泛化性能的统计学方法,它比单次划分训练集和测试集的方法更加稳定、全面。
- 在交叉验证中,数据被多次划分,并且需要训练多个模型。
- 最常用的交叉验证是 k 折交叉验证(k-fold cross-validation),其中 k 是由用户指定的数字,通常取 5 或 10。
- 准确率(precision)度量的是被预测为正例的样本中有多少是真正的正例
- 召回率(recall)度量的是正类样本中有多少被预测为正类
- f-分数是准确率与召回率的调和平均
测试集不够大时,可以使用k折验证法,也就是将训练集多次使用,多次训练多次测试,来增加样本数量。
K折过少,在训练和测试集数据太少的时候无法获得较大的样本量。
一般选用5折或10折。
还可以使用混淆矩阵和ROC曲线的方式进行模型评价。