我有一个包含 41 个特征的数据集 [从 0 到 40 列],其中 7 个是分类的。该分类集分为两个子集:
- 字符串类型的子集(列特征 1、2、3)
- int 类型的子集,二进制形式 0 或 1(列特征 6、11、20、21)
此外,列特征 1、2 和 3(字符串类型)分别具有基数 3、66 和 11。在这种情况下,我必须对它们进行编码以使用支持向量机算法。这是我拥有的代码:
import numpy as np
import pandas as pd
from sklearn import preprocessing
from sklearn import feature_extraction
df = pd.read_csv("train.csv")
datanumpy = df.as_matrix()
X = datanumpy[:, 0:40] # select columns 1 through 41 (the features)
y = datanumpy[:, 41] # select column 42 (the labels)
我不知道是否更好地使用DictVectorizer()
或OneHotEncoder()
[出于我上面公开的原因],并且主要以哪种方式将它们[在代码方面]与X
我拥有的矩阵一起使用。或者我应该简单地为字符串类型子集中的每个基数分配一个数字(因为它们具有高基数,因此我的特征空间将呈指数增长)?
编辑 关于 int 类型的子集,我想最好的选择是保持列特征不变(不要将它们传递给任何编码器)对于具有高基数的字符串类型的子集,问题仍然存在。