我正在进行一项非常基本的WEKA任务,我正在尝试使用WEKA从GUI(最新版本)预处理数据。我试图在双击MathExpression时在表达式框中执行非常基本的if语句和数学语句,但我没有取得任何成功。例如,我想做
if (a5 == 2 || a5 == 0) then y = 1; else y = 0
这个的许多不同变体对我没有用,我也不清楚如何引用“y”或者它是否需要行内的引用。
另一个例子是-abs(log(a7)-3),我也无法解决这个问题。关于如何使这些陈述发挥作用的任何想法?
答案 0 :(得分:1)
'A' letter表示正在处理的属性的值。 可以访问其他属性值(仅限数字) 变量A1,A2,A3,......
您的过滤器适用于数据集的所有属性。如果我加载iris数据集并应用以下过滤器。
weka.filters.unsupervised.attribute.MathExpression -E log(A)。
你的属性,sepallength值改变如下。
Before Filter After Filter
Minimum 4.3 Minimum 1.459
Maximum 7.9 Maximum 2.067
Mean 5.843 Mean 1.755
StdDev 0.828 StdDev 0.141
另外,如果你看看javadoc,没有if else函数而是ifelse函数。因此你应该写类似
的东西ifelse ( (A == 2 || A == 0), 1,0 )
此过滤器也适用于所有属性。如果您只想更改一个属性并根据其他属性值;然后你需要使用“忽略范围选项”并使用A1,A2来引用其他属性值。
如果您需要添加新属性,请使用AddExpression。
通过将数学表达式应用于现有属性来创建新属性的实例过滤器。