熊猫:如何一个热门编码分类功能

时间:2016-08-30 17:56:43

标签: python-2.7 pandas classification random-forest one-hot-encoding

我有一个数据框X,它有两个分类特征和41个数字特征。因此,X共有43项功能。

现在,我想将分类功能转换为数字级别,以便在RandomForest分类器中使用它们。

我已完成以下操作:01表示分类功能的位置:

import pandas as pd

X = pd.read_csv("train.csv")

F1 = pd.get_dummies(X.iloc[:, 0])

F2 = pd.get_dummies(X.iloc[:, 1])

然后,我连接这两个数据框:

Xnew = pd.concat([F1, F2, X.ix[:, 2:]])

现在,Xnew有63个功能(F1有18个,F2有4个功能,其余41个来自X

这是对的吗?有没有更好的方法做同样的事情?我是否需要从F1F2删除第一列以避免共线性?

1 个答案:

答案 0 :(得分:0)

由于F1有18个级别(非功能)而F2有4个,因此您的结果看起来是正确的。

为避免共线性,最好删除其中一列(对于每个F1和F2)。不一定是第一列。通常,您会删除具有最常见级别的列。

为什么最常见的水平?考虑特征重要性。如果删除一列,则无法估计其重要性。这个级别(你丢弃的级别)就像你的“基础级别”。只有与基准水平的偏差才能被标记为重要或不重要。