使用分类特征和文本进行分类
Using Categorical Features along with Text for classification
我正在尝试将电影分为任意两类 类。我得到了电影的情节概要及其类型。当我使用 TfidfVectorizer 将我的概要转换为特征时,我需要使用电影的类型作为一个单独的特征。
我目前只是将流派附加到概要文本并将其提供给分类器。
问题在于这两个特征属于不同类型。当单词被转换为 tfidf 矩阵时,我觉得应该区别对待这种类型,而不是像其他任何单词一样对待。无论如何我可以做到这一点吗?
您应该使用 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
的特征
很难找到一种干净的方法来包含分类特征。
将类型附加到概要确实是一种继续进行的方式。如果你想赋予它更多的重要性,你可以多次附加它(例如,如果你使用的是词袋)。
另一种技术是训练两个不同的分类器,一个使用文本数据,另一个使用常规特征。然后您可以集成结果(例如取预测概率的平均值)。
如果你只有一个分类特征,你可以用它来推断最终的一些先验 类.
希望对您有所帮助。
我正在尝试将电影分为任意两类 类。我得到了电影的情节概要及其类型。当我使用 TfidfVectorizer 将我的概要转换为特征时,我需要使用电影的类型作为一个单独的特征。
我目前只是将流派附加到概要文本并将其提供给分类器。
问题在于这两个特征属于不同类型。当单词被转换为 tfidf 矩阵时,我觉得应该区别对待这种类型,而不是像其他任何单词一样对待。无论如何我可以做到这一点吗?
您应该使用 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
的特征很难找到一种干净的方法来包含分类特征。
将类型附加到概要确实是一种继续进行的方式。如果你想赋予它更多的重要性,你可以多次附加它(例如,如果你使用的是词袋)。
另一种技术是训练两个不同的分类器,一个使用文本数据,另一个使用常规特征。然后您可以集成结果(例如取预测概率的平均值)。
如果你只有一个分类特征,你可以用它来推断最终的一些先验 类.
希望对您有所帮助。