【问题标题】:Using Categorical Features along with Text for classification使用分类特征和文本进行分类
【发布时间】:2015-12-13 19:52:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: scikit-learn classification


    【解决方案1】:

    很难找到一种简洁的方式来包含分类特征。

    将流派附加到概要中确实是一种继续进行的方法。如果您想赋予它更多的重要性(例如,如果您使用的是词袋),您可以多次附加它。

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

    希望这会有所帮助。

    【讨论】:

      【解决方案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 的特征

      【讨论】:

        猜你喜欢
        • 2016-09-02
        • 1970-01-01
        • 2015-01-07
        • 1970-01-01
        • 2019-07-25
        • 2015-01-06
        • 2018-07-06
        • 2021-03-26
        • 2019-02-18
        相关资源
        最近更新 更多