我试图在基于文字袋,页面布局,包含或不包含表格的文档中对页面进行分类,特别是搜索页面,具有粗体标题等。在此前提下,我创建了一个{ {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
。
有任何帮助吗?
非常感谢!
答案 0 :(得分:0)
由于连续得分,我认为是你的标签,这是一个回归问题。 SVM在分类问题中更常见。那里有很多可能的算法。 Logistic回归在解决类似问题时非常常见。
修改
现在您编辑了帖子,您的问题就变成了分类问题: - )
分类=您希望数据分类为boolean(True,False)或multinomial(Big,Middle,Small,Very Small)的一些类
回归=连续值(0到1之间的所有实数)
现在,您可以尝试使用SVM,看看它是否适合您的数据。
请参阅@Maxim的答案他有一些好处(平衡,缩放)
答案 1 :(得分:0)
一般来说,很难说哪种方法效果最好:我假设你有更多的数据,问题很大程度上取决于数据。但是,这仍然是一些想法:
虽然您说功能是独立的,但似乎totalCharCount
和matchesOfWordY
依赖。我认为假设文档中的字符越多,可能存在的匹配就越多是合理的。这是反对朴素贝叶斯的强烈信号。
二元逻辑回归看起来好多了,也是我的第一个候选人。但有一个建议是规范化totalCharCount
功能,因为它的比例似乎比其他功能大得多。
除非您有更多关于班级1
的培训示例,否则您的数据将无法使用。如果是这种情况,您可能会进入constant prediction problem。一种可能的解决方案是使用weighted cross entropy损失函数。
除了SVM classifier之外,还要考虑xgboost.XGBClassifier
。它们都可以提供非常好的准确性。