python - 如何在没有多重共线性的 Pandas 中创建虚拟变量?

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

最佳答案

此功能将在 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/

相关文章:

python - 如何将数组从数组内部移动到新数组中 - python

macos - Mac OSX 上的 PostgreSQL - 无法以 postgres 用户身份登录

c++ - 使用 curllib 构建应用程序

python - 如何在我的seaborn条形图的第一个/最后一个条形周围添加空间?

python - 将解析后的 csv 文件自动读取为字符串转换为 pandas 数据框

python - Sympy,如何在给定范围内求解具有 2 个未知数的方程

python - Python Poetry 的依赖版本语法

python-3.x - 上个月最后一天

python - VSCode 无法加载 ipynb

swift - IBDesignable View 不呈现