0

我在做一个机器学习应用,使用 Weka 进行测试,比较分类算法等。在 Weka 上进行测试操作后,我决定使用 J48 决策树。我解析了 Weka 生成的修剪树并将其实现为 C 中的 if-then 格式。但是,如果我测试了在我的程序中用作 Weka 输入的数据,结果与 Weka 的混淆矩阵不同。在 Weka 的测试选项中,我选择了“使用训练集”并使用了该决策树。这是混淆矩阵和我的结果:

=== 混淆矩阵 ===

    a    b    c    d    e    f    g   <-- classified as
  178    1    0    1   13    2    7 |    a = InstantMessaging
    4   29   11    1   14   46   25 |    b = Mail
    1    3 1051    4   32  921   54 |    c = Music
    4    0   14 9596   10    4   10 |    d = P2P
   10    1   46    6  607  263   59 |    e = SocialMedia
    4    1  230    2   44 7619   63 |    f = VideoStream
    5    0   57    1   57  167 1016 |    g = WebBrowsing

我的程序结果:

 "instantMessaging" => 210,
             "mail" => 33,
            "music" => 4933,
              "p2p" => 9886,
      "socialMedia" => 1220,
      "videoStream" => 4958,
      "webBrowsing" => 1054,
            "total" => 22294,

尽管一切都相同(决策树、数据、特征值、函数等),但为什么我会得到这些不同的结果?Weka 是否有可能产生/显示错误的决策树?

4

1 回答 1

0

通过更深入的搜索,我找到了答案。问题是由创建功能的更改功能引起的。由于此功能已更改,因此功能集中的功能结果不等于 arff 文件。现在所有的结果都是合乎逻辑的。

于 2015-05-07T12:54:10.357 回答