使用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列以避免多重共线性。
答案 0 :(得分:3)
此功能将添加到pandas版本0.18.0(目前为0.17.1)中。但是如果你想更快地使用这个功能,那么你将不得不从源代码构建pandas库。以下说明将向您展示如何执行此操作。首先,在终端中,键入以下命令卸载pandas:
conda uninstall pandas
然后,导航到site-packages,Python存储其库:
cd /Users/[username]/anaconda/lib/python2.7/site-packages
其中[username]是您的用户名。此路径的根目录可能是您当前激活的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已经删除了你的第一列,你已经避免了虚拟变量陷阱!