同时使用分类特征与文本进行分类

5
我正在尝试将电影分类为两个任意类别。我已经获得了电影的情节简介和类型。虽然我使用TfidfVectorizer来将我的简介转换为特征,但我需要将电影的类型作为一个单独的特征来使用。
目前,我只是将类型附加到简介文本中并将其馈送给分类器。
问题在于这两个特征是不同类型的。虽然单词被转换为tfidf矩阵,但我觉得类型应该被不同对待,而不仅仅是像其他单词一样处理。有没有办法可以实现这一点?
2个回答

2
您应该使用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中的特征进行拼接。

1
很难找到一种干净的方法来包含分类特征。 将流派附加到简介中确实是一种方法。如果您想赋予它更多重要性(例如,如果您正在使用单词袋),可以多次追加它。 另一种技术是训练两个不同的分类器,一个使用文本数据,另一个使用常规特征。然后可以合并结果(例如,取预测概率的平均值)。 如果只有一个分类特征,您可以将其用于推断最终类别的某些先验知识。 希望这能帮到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接