使用分类功能和文本进行分类

时间:2015-09-17 03:01:02

标签: scikit-learn classification

我试图将电影分为两个任意级别。我得到了电影的情节概要及其类型。当我使用TfidfVectorizer时,为了将我的概要转换为功能,我需要将电影的类型用作单独的功能。

我目前正在将该类型添加到概要文本中并将其提供给分类器。

问题是这两个功能是不同的类型。虽然单词被转换为tfidf矩阵,但我觉得这种类型应该区别对待,而不是任何其他单词。无论如何我能做到这一点吗?

2 个答案:

答案 0 :(得分:1)

你应该使用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 :(得分:1)

很难找到一种简洁的方法来包含分类功能。

将该类型添加到概要中确实是一种继续进行的方式。如果你想让它更重要,你可以多次追加它(例如,如果你使用的是一堆文字)。

另一种技术是训练两个不同的分类器,一个包含文本数据,另一个包含常规功能。然后,您可以对结果进行整合(例如,取预测概率的平均值) 如果您只有一个分类功能,则可以使用它来推断最终课程的某些优先级。

希望这有帮助。