3

我正在做一个非常基本的 WEKA 任务,我正在尝试使用 WEKA 来预处理来自 GUI(最新版本)的数据。双击 MathExpression 时,我正在尝试在表达式框中执行非常基本的 if 语句和数学语句,但没有任何成功。例如我想做

if (a5 == 2 || a5 == 0) then y = 1; else y = 0

许多不同的变体对我不起作用,我也不清楚如何引用“y”或者它是否需要在行内引用。

另一个例子是 -abs(log(a7)–3) 我也无法计算出来。关于如何使这些陈述起作用的任何想法?

4

1 回答 1

1

来自MathExpression的 javadoc

“A”字母是指正在处理的属性的值。其他属性值(仅限数字)可以通过变量 A1、A2、A3、... 访问

您的过滤器适用于数据集的所有属性。如果我加载虹膜数据集并应用以下过滤器。

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,则没有 ifelse 函数,而是 ifelse 函数。因此你应该写类似

ifelse ( (A == 2 || A == 0), 1,0 ) 

此过滤器也适用于所有属性。如果您只想更改一个属性并根据其他属性值进行更改;那么您需要使用“忽略范围选项”并使用 A1、A2 来引用其他属性值。

如果您需要添加新属性,请使用AddExpression

通过将数学表达式应用于现有属性来创建新属性的实例过滤器。

于 2012-09-06T06:00:20.783 回答