编码巨大的分类功能

时间:2018-06-14 08:14:56

标签: python pandas scikit-learn categorical-data

我目前正在使用两个Pandas sklearn处理 分类数据集。我想知道要进行特征提取,或者只是能够构建模型,我需要对分类功能进行编码,因为它们不是由sklearn模型处理的。

以下是问题:对于其中一个类别,我有超过110,000个不同的值。我不可能对此进行编码,因为会有(并且存在)内存错误。 此外,此功能无法从DataSet中删除,因此无法使用此选项。

所以我有多种方法可以解决这个问题:

  • 使用sklearn中的FeatureHasher(在与此相关的几个主题中提到)。但是,尽管编码很容易,但没有提及如何将散列特征与DataFrame相关联,从而完成特征提取。

  • 使用FuzzyMatching减少要素中的数量或值,然后使用单热编码。这里的问题是,它仍然会创建许多虚拟变量,我将失去对编码功能的兴趣。

所以我有几个问题:首先,您是否知道如何使用FeatureHasher通过散列将Pandas DataFrame链接到sklearn模型?如果是这样,我该怎么办呢? 其次,您能想到其他任何可能更容易实现的方法,或者最适合我的问题吗?

以下是有关我拥有的DataSet的一些截图,以便您更全面地了解该问题。 Here is the output of the number/percentage of different values per feature.

此外,编码的最大特征内部的值称为“评论”' (英文评论)包含有时是长句,有时只是小词的字符串。

根据要求,以下是测试功能哈希的当前代码:

fh = FeatureHasher(input_type='string')
hashedCommentaire = fh.transform(dataFrame['commentaire'])

这会输出一个内存错误,所以我可以减少功能的数量,让我们把它放在100:

fh = FeatureHasher(input_type='string', n_features=100)
hashedCommentaire = fh.transform(dataFrame['commentaire'])
print(hashedCommentaire.toarray())
print(hashedCommentaire.shape)

它没有收到错误并输出以下信息:feature hashing output

然后我可以直接在我的DataFrame中使用结果哈希吗?问题是我们完全忽略了评论的价值,如果我们想要预测新数据,那么散列输出是否会跟随前一个?而且我们如何知道散列是足够的"。在这里我放了100行,但开始时有超过110,000个值。

感谢另一个观察,我开始探索 tf-idf 的使用。在这里,我们可以看到“评论”的样本。值:'commentaire' feature sample 我们可以看到不同的值将是字符串。有时句子。问题是,在探索这些数据时,我注意到一些值彼此非常接近;这就是为什么我想首先探讨模糊匹配的想法,现在才开始讨论tf-idf。

0 个答案:

没有答案