使用Python statsmodel进行Logistic回归分析

问题描述 投票:0回答:1

我是分析领域的新手,有一些疑问,希望能在这里得到解答。

我正在用python实现Logistic回归,如果我们需要在分类变量上应用Logistic,我已经实现了get_dummies。假设列名是房屋类型(海滩、山地和平原),我们在这里做的是创建三个虚拟变量,并删除其中一个,因为我们可以使用其他两个虚拟变量推断平原。

但是当我在数据上实现RFE时。(我在某个博客上看到这个问题,其中的虚拟变量没有被丢弃,我感到很困惑)

另外,我还需要添加一个截距列,因为我使用的是statsmodel(它本身不添加截距)。所以,在这种情况下,如果有多个分类变量(并且我们已经为每个变量添加了一个虚拟变量),就不会有任何问题,对吗?

python logistic-regression data-analysis statsmodels dummy-variable
1个回答
1
投票

你应该最终会看到多线性,因为第三个虚列总是与前两个虚列之和相反(如果它们之和为0,则为1,如果它们之和为1,则为0)。

这应该在特征选择之前删除,比如RFE。

如果你不这样做,statsmodel会在摘要中抛出一个警告,如果你检查特征后拟合的VIF,你会看到不可接受的分数,这是在暗示colinear特征。

在任何情况下,一旦这样做了,你的一个虚列实际上可能是一个常数,比如你的数据集里没有沙滩屋,这是可行的。 statsmodel的默认行为是当一个常量存在时忽略add_constant语句。 为了解决这个问题,你可以考虑使用has_constant参数,通过'add'来表示你想得到一个拦截值,即使已经有一个常数列。

X = sm.add_constant(X, has_constant='add')

© www.soinside.com 2019 - 2024. All rights reserved.