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

Scikit learn 使用分类特征和文本进行分类,scikit-learn,classification,Scikit Learn,Classification,我试图把电影分为两类。我得到了这部电影的情节大纲和类型。当我使用TFIDFvectorier时,为了将我的概要转换为功能,我需要使用电影的类型作为一个单独的功能 目前,我只是在大纲的文本中添加体裁,并将其输入分类器 问题在于,这两种特征是不同的。当这些词被转换成tfidf矩阵时,我觉得应该以不同的方式对待这一类型,而不仅仅是像其他任何词一样。还有什么我可以做到的吗?您应该使用,对于每个可能的分类功能(流派),它会创建新的二进制功能,并且仅当您的电影来自该流派时,才会在相应的功能上设置1 from

我试图把电影分为两类。我得到了这部电影的情节大纲和类型。当我使用TFIDFvectorier时,为了将我的概要转换为功能,我需要使用电影的类型作为一个单独的功能

目前,我只是在大纲的文本中添加体裁,并将其输入分类器

问题在于,这两种特征是不同的。当这些词被转换成tfidf矩阵时,我觉得应该以不同的方式对待这一类型,而不仅仅是像其他任何词一样。还有什么我可以做到的吗?

您应该使用,对于每个可能的分类功能(流派),它会创建新的二进制功能,并且仅当您的电影来自该流派时,才会在相应的功能上设置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']

您还可以使用将TfidfVectorizer和DictVectorizer中的功能连接起来

很难找到一种干净的方法来包含分类功能

将体裁附加到大纲中确实是一种前进的方式。如果你想赋予它更多的重要性,你可以多次附加它(例如,如果你使用的是单词袋)

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

希望这有帮助