WEKA 使用类值来解决决策树?

Posted

技术标签:

【中文标题】WEKA 使用类值来解决决策树?【英文标题】:WEKA using class values to solve decision tree? 【发布时间】:2017-01-25 19:02:28 【问题描述】:

我是 WEKA 和 ML 的新手,所以请原谅我对以下内容的无知。我已经浪费了几个小时试图弄清楚,所以希望有人能指出我正确的方向:

我正在尝试针对 USDJPY 的数据运行 J48 决策树。数据是通过 .csv 文件加载的,并且类值是名义类型,更具体地说,如果 USDJPY 在 20 个交易日后交易价格上涨超过 1%,则值为 TRUE 或 FALSE。问题是,当我运行算法时,决策树只是简单地使用类值来解决问题,这是没有用的。除了类属性之外,还有 *22 个属性,我希望从中预测类属性。

将我的数据集与示例“玻璃”数据集进行比较时,我找不到可以解释我的问题的两者之间的任何区别。当我运行 J48(具有相同设置)时,“glass.arff”按预期工作,尝试通过其他属性预测类值(玻璃类型)(即,它得到了一些错误的猜测)。

我在这里缺少什么?这是属性列表:

@ATTRIBUTE date NUMERIC
@ATTRIBUTE open NUMERIC
@ATTRIBUTE high NUMERIC
@ATTRIBUTE low NUMERIC
@ATTRIBUTE close NUMERIC
@ATTRIBUTE 1daypctchg NUMERIC
@ATTRIBUTE smavg50onclose NUMERIC
@ATTRIBUTE smavg100onclose NUMERIC
@ATTRIBUTE smavg200onclose NUMERIC
@ATTRIBUTE ubb2 NUMERIC
@ATTRIBUTE bollma2 onclose NUMERIC
@ATTRIBUTE lbb2 NUMERIC
@ATTRIBUTE bollwjpybgn NUMERIC
@ATTRIBUTE %bjpybgn NUMERIC
@ATTRIBUTE rsi NUMERIC
@ATTRIBUTE ma50>100 FALSE,TRUE
@ATTRIBUTE ma50>200 FALSE,TRUE
@ATTRIBUTE ma100>200 FALSE,TRUE
@ATTRIBUTE up1pct5d? FALSE,TRUE
@ATTRIBUTE up1pct20d? FALSE,TRUE
@ATTRIBUTE dwn1pct5d? FALSE,TRUE
@ATTRIBUTE dwn1pct20d? FALSE,TRUE

【问题讨论】:

您使用的是 Weka UI 还是 Java API? 我正在使用 Weka UI 您是否将类列标记为 UI 中的类?这将使算法避免使用类作为特征。 我该怎么做?我认为数据集中的最后(最右边)列默认为类?我还确认预览窗口中最右边的列是粗体(如果这意味着什么) - 我什至尝试通过预处理中的下拉菜单更改类并分类选项卡 - 我错过了什么吗? 是的,最右边的列应该是类。如果您按照所有步骤来确定班级的正确列,那么我不知道问题出在哪里。能否提供数据集的链接? 【参考方案1】:

Weka(及其 J48 实现)应该能够对您的数据进行分类,只要 ground-truth 类始终在您的 .csv 文件的同一列中。

【讨论】:

谢谢 - 我想我现在明白了 - 通过删除其他“布尔”列,我能够让算法按预期工作 很高兴听到这个消息。

以上是关于WEKA 使用类值来解决决策树?的主要内容,如果未能解决你的问题,请参考以下文章

Weka上交替决策树分析

如何使用 weka 实现决策树?

weka 代码 算法 j48 决策树 c4.5

相同的决策树,不同的结果

Weka 中决策树的信息增益

Weka 决策树 Java 到列表