我正在尝试使用UCI存储库中的汽车评估数据集,并且想知道是否存在方便的方法来对sklearn中的分类变量进行二值化。一种方法是使用LabelBinarizer的DictVectorizer,但是在这里我得到了k个不同的特征,而为了避免共线性化,您应该只有k-1个。我想我可以编写自己的函数并删除一列,但是这种记账是乏味的,是否有一种简单的方法来执行这样的转换并得到一个稀疏矩阵?
建议使用DictVectorizer来生成分类变量的单编码。您可以使用sparse参数创建稀疏的CSR矩阵,而不创建密集的numpy数组。我通常不关心多重共线性,也没有注意到我倾向于使用的方法(即LinearSVC,SGDClassifier,基于树的方法)存在问题。
sparse
修补DictVectorizer以便为每个分类功能删除一列不是问题- 您只需DictVectorizer.vocabulary在fit方法末尾删除一个术语即可。(随时欢迎提出要求!)
DictVectorizer.vocabulary
fit