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

Air*_*ine 5 classification scikit-learn

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

我目前只是将流派附加到概要的文本并将其提供给分类器。

问题是这两个特征是不同的。当这些词被转换为 tfidf 矩阵时,我觉得应该区别对待这个类型,而不是像任何其他词一样。无论如何我可以做到这一点吗?

Ibr*_*iev 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_
Run Code Online (Sandbox Code Playgroud)

结果是:

array([[ 1.,  0.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])

['genre=action', 'genre=comedy', 'genre=drama']
Run Code Online (Sandbox Code Playgroud)

您还可以使用FeatureUnion连接 TfidfVectorizer 和 DictVectorizer 中的特征