【问题标题】:USing AddExpression / MathExpression in Weka在 Weka 中使用 AddExpression / MathExpression
【发布时间】:2012-08-30 19:56:52
【问题描述】:

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

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

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

另一个例子是 -abs(log(a7)–3) 我也无法解决。关于如何使这些陈述发挥作用的任何想法?

【问题讨论】:

    标签: filter attributes preprocessor weka


    【解决方案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

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

    【讨论】:

    • 感谢您的回复,我相信这是正确的。但是,我无法设法让 MathExpression 应用于尚未设置值的新属性,所以也许这就是问题所在。有什么想法吗?
    • @sarina 如果此答案适合您,请将其标记为答案
    猜你喜欢
    • 2013-06-19
    • 2014-01-31
    • 1970-01-01
    • 2019-11-05
    • 2018-09-21
    • 1970-01-01
    • 2015-01-16
    • 2017-09-19
    • 2011-06-21
    相关资源
    最近更新 更多