我正在阅读一本书“机器学习:为开发人员和技术专业人员动手”,以便与WEKA一起创建决策树。虽然我遵循了书中所示的相同过程,但我没有得到相同的决策树。我使用的是C4.5(J48)算法。
数据(arff文件)
@relation ladygaga
@attribute placement {end_rack, cd_spec, std_rack}
@attribute prominence numeric
@attribute pricing numeric
@attribute eye_level {TRUE, FALSE}
@attribute customer_purchase {yes, no}
@data
end_rack,85,85,FALSE,yes
end_rack,80,90,TRUE,yes
cd_spec,83,86,FALSE,no
std_rack,70,96,FALSE,no
std_rack,68,80,FALSE,no
std_rack,65,70,TRUE,yes
cd_spec,64,65,TRUE,yes
end_rack,72,95,FALSE,yes
end_rack,69,70,FALSE,no
std_rack,75,80,FALSE,no
end_rack,75,70,TRUE,no
cd_spec,72,90,TRUE,no
cd_spec,81,75,FALSE,yes
std_rack,71,91,TRUE,yes
预期输出
我的输出
我做错了什么?
答案 0 :(得分:3)
这本书的问题(在这里保留答案,以便它可以帮助本书的其他读者)。
Book预计end_rack类别中只有一个否定的情况(在作者的树形图中查找(5,1))。在书中提供的数据甚至书籍网站上,实际上有两个负面案例(5,2)。我删除了一个否定案例并获得了与本书相同的决策树。
以下是更正后的数据档案
@relation ladygaga
@attribute placement {end_rack, cd_spec, std_rack}
@attribute prominence numeric
@attribute pricing numeric
@attribute eye_level {TRUE, FALSE}
@attribute customer_purchase {yes, no}
@data
end_rack,85,85,FALSE,yes
end_rack,80,90,TRUE,yes
cd_spec,83,86,FALSE,no
std_rack,70,96,FALSE,no
std_rack,68,80,FALSE,no
std_rack,65,70,TRUE,yes
cd_spec,64,65,TRUE,yes
end_rack,72,95,FALSE,yes
end_rack,69,70,FALSE,yes
std_rack,75,80,FALSE,no
end_rack,75,70,TRUE,no
cd_spec,72,90,TRUE,no
cd_spec,81,75,FALSE,yes
std_rack,71,91,TRUE,yes
正确输出