相同的决策树,不同的结果
Same decision tree, different results
我做一个机器学习应用,用Weka做测试,比较分类算法等。在Weka上测试运行后,我决定使用J48决策树。我解析了 Weka 生成的修剪树,并在 C 中将其实现为 if-then 格式。但是,如果我在我的程序中测试用作 Weka 输入的数据,结果与 Weka 的混淆矩阵不同。在 Weka 的测试选项中,我选择了 "Use training set" 并使用了那个决策树。这是混淆矩阵和我的结果:
===混淆矩阵===
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 producing/showing错误决策树的可能性?
经过更深入的搜索,我找到了答案。该问题是由创建功能的更改功能引起的。由于更改了此功能,因此功能集中的功能结果不等于 arff 文件。现在所有结果都是合乎逻辑的。
我做一个机器学习应用,用Weka做测试,比较分类算法等。在Weka上测试运行后,我决定使用J48决策树。我解析了 Weka 生成的修剪树,并在 C 中将其实现为 if-then 格式。但是,如果我在我的程序中测试用作 Weka 输入的数据,结果与 Weka 的混淆矩阵不同。在 Weka 的测试选项中,我选择了 "Use training set" 并使用了那个决策树。这是混淆矩阵和我的结果:
===混淆矩阵===
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 producing/showing错误决策树的可能性?
经过更深入的搜索,我找到了答案。该问题是由创建功能的更改功能引起的。由于更改了此功能,因此功能集中的功能结果不等于 arff 文件。现在所有结果都是合乎逻辑的。