在本节中将使用机器学习算法解决泰坦尼克号预测问题:Logistic回归。 Logistic回归是一种分类算法,涉及预测事件的结果,例如乘客是否能够在泰坦尼克号灾难中幸存。
1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。这场轰动的悲剧震惊国际社会,在这次海难中导致死亡率高的原因之一是没有足够的救生艇给乘客和机组人员,虽然幸存下来有一部分的运气因素,但是还是有一些人比其他人的生存下来的可能性更高,比如妇女、儿童和上层阶级的人士。在这个学习之中,我们将用逻辑回归来预测一些人生存的可能性。用机器学习来预测哪些乘客能更幸免于难。在此用到的编程语言是Python。
加载数据
我个人的习惯是每一步都看一下数据框,以验证数据是否正确加载。
清理数据 加载数据后,就可以清理数据了。 在泰坦尼克号数据集中,有许多列对于构建机器学习模型并不重要。 为此,我们使用以下代码删除数据集中的列。
编码非数字字段 为了在Python中执行逻辑回归,Scikit-learn要求使用label encoder功能。 检查数据集,您会看到Sex和Embarked的值是字符串类型,这时候需要先进行label encoder才能进一步完成。 为此,您可以使用LabelEncoder类来执行转换,如下所示:
请注意,Sex和Embarked字段的值现在已替换为编码值。
使字段分类 您需要在数据集中处理的下一类值是分类型数据。 分类类型是有限的固定数量的可能数值。 分类值表示Scikit了解对于这种类型的字段不进行数值运算。 分类字段的一个很好的例子是Survived,其中值只能是0或1(而不是介于两者之间的任何地方)。
要使字段分类,请使用Pandas中的Categorical类:
将数据集拆分为训练集和测试集 清理数据集后,您现在可以将数据集拆分为两个不同的集合:一个用于训练集,另一个用于测试。 但在此之前,您需要将数据集分成两个数据框:一个包含所有用于预测的属性,另一个包含对象的标签。
训练模型
获取预测结果和预测概率
获取预测生存状态与实际生存状态的交叉矩阵
获取预测准确值
除了使用crosstab()函数生成混淆矩阵之外,您还可以使用Scikit中的metrics模块中的confusion_matrix()函数来学习:
获取模型的其他评价指标
绘制ROC曲线
领取专属 10元无门槛券
私享最新 技术干货