proplume 2018-09-18
点击上方关注,All in AI中国
作者:Surya Remanan
逻辑回归的目标是什么?
在逻辑回归中,我们希望根据一个或多个自变量(X)对因变量(Y)进行建模。这是一种分类方法。此算法用于分类的因变量。Y使用一个函数建模,该函数为X的所有值提供0到1之间的输出。在逻辑回归中,使用Sigmoid(aka Logistic)函数。
使用混淆矩阵进行模型评估
在针对某些训练数据训练逻辑回归模型之后,我们将评估模型在某些测试数据上的性能。为此,我们使用混淆矩阵(Confusion Matrix)。混淆矩阵是一个表,通常用于描述分类模型在一组已知真实值的测试数据上的性能。下面给出的是混淆矩阵。
TP代表真正例(True Positive),即我们预测为"是(yes)"且实际值为"真(true)"的情况。TN代表真负例(True Negative),即我们预测为"否(no)"且实际值为"假(false)"的情况。FP代表假正例(False Positive),这是我们预测为"是(yes)",实际值为"假(false)"的情况。FN代表假负例(False Negative),这是案例我们预测为"否(no)",实际值是"真(true)"的情况。
我们从混淆矩阵中推断出什么?
混淆矩阵有助于我们确定模型预测是正确的,或者换句话说,模型的准确性。通过上面的表格,它给出:
(TP+TN )/Total = 100+50/165 =0.91
这意味着该模型的正确度为91%。混淆矩阵还用于测量错误率,该错误率由下式给出:
(FP+ FN)/Total=15/165 = 0.09
模型中有9%的错误。
在本文中,我们将在python中处理非常简单的步骤来模拟逻辑回归。
Python代码详细解释
我们将观察数据、分析数据,将其可视化,清理数据,构建逻辑回归模型,分成训练和测试数据,进行预测并最终评估。所有这些都将一步一步完成,我们将要处理的数据是kaggle.com提供的"泰坦尼克号数据集"。这是一个非常著名的数据集,通常是学生基于分类学习机器学习的第一步。我们正在尝试预测分类:生存或死亡
首先,我们将导入numpy和pandas库:
我们来进行可视化导入:
我们将继续将泰坦尼克号数据集导入pandas数据帧。之后,我们将检查数据框的头部,以便清楚地了解数据框中的所有列。
我们遇到的大多数数据都缺少数据。我们将检查缺失的数据,并将其可视化以获得更好的想法并将其删除。
在这里,我们找到布尔值。True表示该值为null,False表示负值,反之亦然。由于有大量数据,我们使用seaborn库来显示空值。在这种情况下,我们的任务变得更加容易。
年龄(Age)和船舱(Cabin)列具有空值。我在之前的博客中处理过处理NA值的问题。有兴趣可以查看。
使用数据并充分利用可视化库来获取数据是一种很好的做法。
这是一个计数图,显示幸存的人数,这是我们的目标变量。此外,我们可以根据性别(SEX)和乘客(train)类别绘制计数图。
在这里,我们看到一种趋势,即女性比男性幸存的更多。
从上图可以看出,属于3级的乘客死亡人数最多。
我们可以通过更多方式可视化数据。但是,我不是在这里讨论它们,因为我们需要进入模型构建的步骤。
数据清理
我们想要填写缺少的年龄(Age)数据,而不是仅删除缺少的年龄(Age)数据行。一种方法是填写所有乘客(train)的平均年龄(估算)。但是,我们可以更加明智地按乘客(train)级别检查平均年龄。例如:
我们可以看到较高级别中较富裕的乘客(train)往往年龄较大,这是有道理的。我们将根据年龄的Pclass使用这些平均年龄值来估算。
现在应用该功能!
现在让我们再次检查热图。
很好!让我们继续看船舱(Cabin)列。
转换分类功能
我们需要使用pandas库将分类特征转换为虚拟变量!否则,我们的机器学习算法将无法直接将这些特征作为输入。
在这里,我们正在筛选性别之后并列出专栏。在筛选之后,我们将丢弃其他不需要的列。
我们将连接新的性别并将列导入数据框。
现在,数据框看起来像这样:
测试训练划分
训练和预测
评估
我们可以使用分类报告来检查精确度、召回率、f1分数
分类报告