我有一个数据框X
,它有两个分类特征和41个数字特征。因此,X
共有43项功能。
现在,我想将分类功能转换为数字级别,以便在RandomForest
分类器中使用它们。
我已完成以下操作:0
和1
表示分类功能的位置:
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
)
这是对的吗?有没有更好的方法做同样的事情?我是否需要从F1
和F2
删除第一列以避免共线性?
答案 0 :(得分:0)
由于F1
有18个级别(非功能)而F2有4个,因此您的结果看起来是正确的。
为避免共线性,最好删除其中一列(对于每个F1和F2)。不一定是第一列。通常,您会删除具有最常见级别的列。
为什么最常见的水平?考虑特征重要性。如果删除一列,则无法估计其重要性。这个级别(你丢弃的级别)就像你的“基础级别”。只有与基准水平的偏差才能被标记为重要或不重要。