使用分类特征和文本进行分类



我试图将电影任意分为两类。我得到了这部电影的情节梗概以及它的类型。当我使用TfidfVectorizer将我的概要转换为特征时,我需要使用电影类型作为单独的特征。

我目前只是将类型附加到摘要文本并将其提供给分类器。

问题是这两个特征是不同种类的。虽然这些词被转换成一个三角矩阵,但我觉得这种类型应该被区别对待,而不是像其他任何词一样。有什么办法可以让我完成这件事吗?

你应该使用DictVectorizer,对于每一个可能的分类特征(类型),它创建新的二进制特征,并设置1对应的特征,只有当你的电影来自该类型

from sklearn.feature_extraction import DictVectorizer
v = DictVectorizer(sparse=False)
D = [{'genre':'action'}, {'genre':'drama'}, {'genre':'comedy'}, {'genre':'drama'}]
v.fit_transform(D)
v.feature_names_

结果:

array([[ 1.,  0.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])
['genre=action', 'genre=comedy', 'genre=drama']

你也可以使用FeatureUnion来连接TfidfVectorizer和DictVectorizer

很难找到一个干净的方式来包含分类功能。

在剧情简介中添加类型确实是一种继续前进的方式。如果你想让它更重要,你可以多次添加它(例如,如果你正在使用单词包)。

另一种技术是训练两个不同的分类器,一个使用文本数据,另一个使用常规特征。然后,您可以集成结果(例如,取预测概率的平均值)。如果你只有一个分类特征,你可以用它来推断最终类的一些先验。

相关内容

  • 没有找到相关文章

最新更新