【问题标题】:Prepare data for text classification using Scikit Learn SVM使用 Scikit Learn SVM 为文本分类准备数据
【发布时间】:2012-12-06 05:40:02
【问题描述】:

我正在尝试应用 Scikit learn 中的 SVM 对我收集的推文进行分类。 因此,将有两个类别,分别命名为 A 和 B。 目前,我将所有推文分类在两个文本文件中,“A.txt”和“B.txt”。 但是,我不确定 Scikit Learn SVM 要求什么类型的数据输入。 我有一个带有标签(A 和 B)作为键的字典和一个特征字典(一元组)和它们的频率作为值。 抱歉,我对机器学习真的很陌生,不知道应该怎么做才能让 SVM 工作。 我发现 SVM 使用 numpy.ndarray 作为其数据输入的类型。我需要根据自己的数据创建一个吗? 应该是这样的吗?

Labels    features    frequency
  A        'book'        54
  B       'movies'       32

感谢任何帮助。

【问题讨论】:

    标签: python svm scikit-learn


    【解决方案1】:

    查看text feature extraction 上的文档。

    还可以查看text classification example

    这里也有教程:

    http://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html

    尤其不要过多关注 SVM 模型(尤其不是sklearn.svm.SVC,这对内核模型更有趣,因此不是文本分类):一个简单的感知器、LogisticRegression 或伯努利朴素贝叶斯模型在训练速度更快。

    【讨论】:

    • 多项朴素贝叶斯/支持向量机都适合你。
    • text classification example 的链接是 404
    • 感谢报告我修复了损坏的链接。
    • @ogrisel:我正在尝试使用朴素贝叶斯的 10 个类,但对结果不满意。如果数据集很小,svm 非常适合,每个类大约 100 个句子
    • 对于少量样本(例如少于 10000 个样本左右),SVC(kernel='linear') 可能足够快以收敛。然而,它应该提供与LinearSVC 相似的预测性能和与LogisticRegression 相当的性能,这应该更快并且可以扩展到数十万个样本。对于每种情况,您需要通过交叉验证为 C 选择最佳值。此外,LogisticRegression 默认提供良好的概率估计(使用predict_proba 方法)。这就是为什么我建议您默认使用线性模型而不是通用 SVC
    猜你喜欢
    • 2015-10-22
    • 2015-04-07
    • 2017-05-26
    • 2016-07-15
    • 2021-01-15
    • 2020-06-13
    • 2020-01-04
    • 2015-08-24
    • 2014-03-25
    相关资源
    最近更新 更多