如何在不具有多重共线性的熊猫中创建虚拟变量?

时间:2016-02-01 22:03:00

标签: python macos pandas ipython anaconda

使用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列以避免多重共线性。

1 个答案:

答案 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已经删除了你的第一列,你已经避免了虚拟变量陷阱!