使用 Anaconda、Python 2.7.11、pandas 0.17.1、Mac OS X 10.11 (El Capitan),如何从每列中删除一个虚拟变量来避免多重共线性(或虚拟变量)变量陷阱)在拟合统计模型时?
如果有人输入:
import pandas as pd
s = pd.Series(list('abca'))
pd.get_dummies(s)
返回的是:
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
我想删除 a、b 或 c 列以避免多重共线性。
最佳答案
此功能将在 pandas 版本 0.18.0(当前为 0.17.1)中添加。但是,如果您希望更快地使用此功能,则必须从源代码构建 pandas 库。以下说明将向您展示如何执行此操作。首先,在终端中,键入以下命令卸载 pandas:
conda uninstall pandas
然后,导航到 site-packages,Python 存储其库的地方:
cd /Users/[username]/anaconda/lib/python2.7/site-packages
其中 [用户名] 是您的用户名。这条路径的根可能是您当前激活的 Python 环境所在的任何地方,以推广到 Anaconda 之外。要显示您激活的 python 版本所在的位置,请键入:
which python
将这些命令输入终端以克隆到一个存储库,其中有人向 pandas.get_dummies 命令添加了额外的功能:
git clone https://github.com/BranYang/pandas
cd pandas
python setup.py build_ext --inplace --force
python setup.py install
然后,打开 Python(或 IPython):
ipython
并输入:
import pandas as pd
s = pd.Series(list('abca'))
pd.get_dummies(s, drop_first = True)
这将显示:
b c
0 0 0
1 1 0
2 0 1
3 0 0
因此,pd.get_dummies 删除了您的第一列并且您避免了虚拟变量陷阱!
关于python - 如何在没有多重共线性的 Pandas 中创建虚拟变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35141253/