我应该使用哪种分类算法对这些变量进行文档分类?

时间:2017-10-19 10:44:57

标签: python machine-learning svm naivebayes document-classification

我试图在基于文字袋,页面布局,包含或不包含表格的文档中对页面进行分类,特别是搜索页面,具有粗体标题等。在此前提下,我创建了一个{ {1}}对于每个文档都是这样的:

    page  totalCharCount  matchesOfWordX  matchesOfWordY          hasFeaturesX     hasFeaturesY   hasTable      score
0    0.0           608.0             0.0             2.0                   0.0              0.0        0.0        0.0
1    1.0          3292.0             1.0            24.0                   7.0              0.0        0.0        0.0
2    2.0          3302.0             0.0            15.0                   1.0              0.0        1.0        0.0
3    3.0            26.0             0.0             0.0                   0.0              1.0        1.0        1.0
4    4.0          1851.0             3.0            25.0                  20.0              7.0        0.0        0.0
5    5.0          2159.0             0.0            27.0                   6.0              0.0        0.0        0.0
6    6.0          1906.0             0.0             9.0                  15.0              3.0        0.0        0.0
7    7.0          1825.0             0.0            24.0                   9.0              0.0        0.0        0.0
8    8.0          2053.0             0.0            20.0                  10.0              2.0        0.0        0.0
9    9.0          2082.0             2.0            16.0                   3.0              2.0        0.0        0.0
10  10.0          2206.0             0.0            30.0                   1.0              0.0        0.0        0.0
11  11.0          1746.0             3.0            31.0                   3.0              0.0        0.0        0.0
12  12.0          1759.0             0.0            38.0                   3.0              1.0        0.0        0.0
13  13.0          1790.0             0.0            21.0                   0.0              0.0        0.0        0.0
14  14.0          1759.0             0.0            11.0                   6.0              0.0        0.0        0.0
15  15.0          1539.0             0.0            20.0                   3.0              0.0        0.0        0.0
16  16.0          1891.0             0.0            13.0                   6.0              1.0        0.0        0.0
17  17.0          1101.0             0.0             4.0                   0.0              1.0        0.0        0.0
18  18.0          2247.0             0.0            16.0                   5.0              5.0        0.0        0.0
19  19.0           598.0             2.0             3.0                   1.0              1.0        0.0        0.0
20  20.0          1014.0             2.0             1.0                  16.0              3.0        0.0        0.0
21  21.0           337.0             1.0             2.0                   1.0              1.0        0.0        0.0
22  22.0           258.0             0.0             0.0                   0.0              0.0        0.0        0.0

我正在研究Naive Bayes和SVM算法,但我不确定哪一个更适合这个问题。变量是独立的。其中一些必须存在以增加分数,其中一些与反向文档频率匹配,如pandas.DataFrame

有任何帮助吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

由于连续得分,我认为是你的标签,这是一个回归问题。 SVM在分类问题中更常见。那里有很多可能的算法。 Logistic回归在解决类似问题时非常常见。

修改

现在您编辑了帖子,您的问题就变成了分类问题: - )

分类=您希望数据分类为boolean(True,False)或multinomial(Big,Middle,Small,Very Small)的一些类

回归=连续值(0到1之间的所有实数)

现在,您可以尝试使用SVM,看看它是否适合您的数据。

请参阅@Maxim的答案他有一些好处(平衡,缩放)

答案 1 :(得分:0)

一般来说,很难说哪种方法效果最好:我假设你有更多的数据,问题很大程度上取决于数据。但是,这仍然是一些想法:

  • 虽然您说功能是独立的,但似乎totalCharCountmatchesOfWordY依赖。我认为假设文档中的字符越多,可能存在的匹配就越多是合理的。这是反对朴素贝叶斯的强烈信号。

  • 二元逻辑回归看起来好多了,也是我的第一个候选人。但有一个建议是规范化totalCharCount功能,因为它的比例似乎比其他功能大得多。

  • 除非您有更多关于班级1的培训示例,否则您的数据将无法使用。如果是这种情况,您可能会进入constant prediction problem。一种可能的解决方案是使用weighted cross entropy损失函数。

  • 除了SVM classifier之外,还要考虑xgboost.XGBClassifier。它们都可以提供非常好的准确性。