当前位置: 首页 > 知识库问答 >
问题:

我应该使用什么分类算法对这个变量进行文档分类?

宋鸿云
2023-03-14

我正在尝试对页面进行分类,特别是在文档中搜索页面时,基于单词包、页面布局、是否包含表格、是否有粗体标题等。在这个前提下,我创造了一只熊猫。DataFrame像这样,对于每个文档:

    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

我正在研究朴素贝叶斯和SVM算法,但我不确定哪个更适合这个问题。变量是独立的。它们中的一些必须存在以增加分数,并且它们中的一些匹配逆文档频率,如< code>totalCharCount。

有帮助吗?

非常谢谢!

共有2个答案

索和璧
2023-03-14

因为连续分数,我假设这是你的标签,这是一个回归问题。SVM在分类问题上更常见。有很多可能的算法。逻辑回归在解决这样的问题时很常见。

编辑

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

分类 = 您希望数据分类为布尔值(真、假)或多项式(大、中、小、非常小)的某些类

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

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

见@Maxim的回答他有一些优点(平衡,缩放)

洪鹏海
2023-03-14

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

>

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

    二元逻辑回归看起来更好,是我的第一个候选者。不过,一个建议是规范化

    除非您有更多1类的训练示例,否则您的数据是不平衡的。如果是这种情况,你很可能会陷入持续预测问题。一种可能的解决方案是使用加权交叉熵损失函数。

    除了SVM分类器,还考虑xgboost.XGBClassiator。它们都可以给出非常好的精度。

  •  类似资料:
    • 这与自定义Gradle Java插件在V5.2.1中崩溃有关,但在V4.7中工作?。警告-我不是Java程序员。 我有这个代码来实现一个插件,它崩溃了(根据其他帖子)。

    • 问题内容: 是否有Elasticsearch插件可以让我对输入索引的文档进行分类? 对我而言,最好的解决方案是对所有最经常出现的术语(/概念)进行分类,以一种用户可以浏览的标签云显示。 有没有办法做到这一点?有什么建议? 谢谢 问题答案: 基本思想是使用聚合,每项将产生一个存储桶。 您将获得的响应将通过减少术语出现次数来排序: 如果您正在使用Kibana,则可以基于这些术语直接创建标签云可视化。

    • OpenNLP的性能明显低于我测试过的其他文档分类器,所以在我放弃它之前,我决定确保我在玩所有的刻度盘和旋钮。对我来说最突出的一件事是OpenNLP,它可以非常快地训练我的模型(大约1.2秒)。我使用过的其他NLP工具可能需要几分钟甚至几个小时的训练。我的培训档案中有大约12k条记录。 我试图将迭代次数从10次增加到10000次,不幸的是,它似乎对训练时间或准确性没有任何影响。 奇怪的是OpenN

    • 从…起http://docs.oracle.com/javase/tutorial/essential/concurrency/imstrat.html : 不要提供“setter”方法——修改字段或字段引用的对象的方法。使所有字段都是最终的和私有的。不要允许子类重写方法。最简单的方法是将类声明为最终的。一个更复杂的方法是使构造函数私有,并在工厂方法中构造实例。如果实例字段包括对可变对象的引用,不

    • 我正在创建一个聊天机器人,以询问一些关于图片中所示国家中许多公司的商店列表业务的特定问题。我正在努力应对这样一个事实:我应该如何对本案的实体进行分组: 当用户输入:Wonder Group时,我想检查它在加利福尼亚州是否有任何商店。- - 还有,我应该使用多重条件反射还是这里的槽? 我试过很多方法,但都不管用。 实体类型