我正在处理一个数据集,其中一个特征对于单个示例具有多个类别。该特征看起来像这样:
Feature0 [Category1, Category2, Category2, Category4, Category5]1 [Category11, Category20, Category133]2 [Category2, Category9]3 [Category1000, Category1200, Category2000]4 [Category12]
这个问题与之前发布的问题类似:-编码具有多个类别的分类特征 – sklearn
现在,我想将这个特征向量化。一个解决方案是使用MultiLabelBinarizer
,如上述类似问题答案中所建议的。但是,有大约2000个类别,这会导致编码数据非常稀疏且维度极高。
有没有其他可以使用的编码方法?或者这个问题有没有可能的解决方案?谢谢。
回答:
对于一个极其稀疏的数组,可以使用降维技术,如PCA(主成分分析),将其特征空间减少到最能描述方差的前k个特征。
假设经过MultiLabelBinarizer处理后的2000个特征 = X
from sklearn.decomposition import PCAk = 5model = PCA(n_components = k, random_state = 666)model.fit(X)Components = model.predict(X)
然后,您可以使用前K个成分作为一个较小维度的特征空间,该空间可以解释原始特征空间中很大一部分方差。
如果您想了解新的较小特征空间如何描述方差,您可以使用以下命令
model.explained_variance_