使用 Python statsmodel 的逻辑回归
Logistic Regression using Python statsmodel
我是分析领域的新手,我几乎没有疑问。
希望能在这里得到答案。
我正在使用 python 实施逻辑回归。
如果我们需要对分类变量应用逻辑,我已经为此实现了 get_dummies。假设列名是房屋类型(海滩、山地和平原)。
我们在这里所做的是在这种情况下创建三个虚拟变量并删除其中一个,因为我们可以使用其他 2 个虚拟变量推断 Plain。
但是当我对数据实施RFE时。我需要包括所有 3 个变量吗?
(我在一些博客上看到这个 dummy 没有被删除并且感到困惑)
此外,我还需要添加一个截距列,因为我使用的是 statsmodel(它不会自行添加截距)。因此,在那种情况下,如果有多个分类变量(并且我们为每个变量都删除了一个虚拟变量),就不会有任何问题,对吗?
您最终应该会看到多重共线性,因为第三个虚拟列始终与前两个虚拟列之和相反(如果它们总和为 0,则为 1,如果它们总和为 1,则为 0)。
这应该在功能选择之前删除,例如 RFE。
如果您不这样做,statsmodel 将在摘要中发出警告,并且如果您检查特征 post 拟合的 VIF,您会看到不可接受的分数,表明特征是共线的。
在任何情况下,一旦完成此操作,您的虚拟列之一实际上可能是一个常量是可行的,例如,如果您的数据集中没有海滨别墅。当常量存在时,statsmodel 的默认行为忽略 add_constant 语句。为了解决这个问题,您可以考虑使用 has_constant 参数,传递 'add' 以表明即使已经有一个常量列,您也希望获得截距。
X = sm.add_constant(X, has_constant='add'
)
我是分析领域的新手,我几乎没有疑问。 希望能在这里得到答案。
我正在使用 python 实施逻辑回归。 如果我们需要对分类变量应用逻辑,我已经为此实现了 get_dummies。假设列名是房屋类型(海滩、山地和平原)。 我们在这里所做的是在这种情况下创建三个虚拟变量并删除其中一个,因为我们可以使用其他 2 个虚拟变量推断 Plain。
但是当我对数据实施RFE时。我需要包括所有 3 个变量吗? (我在一些博客上看到这个 dummy 没有被删除并且感到困惑)
此外,我还需要添加一个截距列,因为我使用的是 statsmodel(它不会自行添加截距)。因此,在那种情况下,如果有多个分类变量(并且我们为每个变量都删除了一个虚拟变量),就不会有任何问题,对吗?
您最终应该会看到多重共线性,因为第三个虚拟列始终与前两个虚拟列之和相反(如果它们总和为 0,则为 1,如果它们总和为 1,则为 0)。
这应该在功能选择之前删除,例如 RFE。
如果您不这样做,statsmodel 将在摘要中发出警告,并且如果您检查特征 post 拟合的 VIF,您会看到不可接受的分数,表明特征是共线的。
在任何情况下,一旦完成此操作,您的虚拟列之一实际上可能是一个常量是可行的,例如,如果您的数据集中没有海滨别墅。当常量存在时,statsmodel 的默认行为忽略 add_constant 语句。为了解决这个问题,您可以考虑使用 has_constant 参数,传递 'add' 以表明即使已经有一个常量列,您也希望获得截距。
X = sm.add_constant(X, has_constant='add'
)