1

我有一个数据框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 个和F24 个特征,其余 41 个来自X

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

4

1 回答 1

0

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

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

为什么是最常见的级别?考虑特征的重要性。如果你删除一列,它就没有机会估计它的重要性。这个级别(你掉的那个)就像你的“基础级别”。只有与基本水平的偏差才能被标记为重要或不重要。

于 2016-09-06T14:31:42.430 回答