我需要在weka中对一个列进行离散化。列名为“年龄”。它有数字属性。例如2-90之间的值。
我需要根据特定的值范围执行离散化过程,以便基于以下类别离散年龄属性。
青年: 15 -<=25,成人:>25-<=64,Senior:>64
这怎么可能在Weka?
我如何标注和调整间隔?

发布于 2022-05-23 23:11:50
但是,您可以通过使用MultiFilter构建过滤器链来实现这个目标。
ifelse表达式应用手动绑定策略。将ignoreRange设置为要转换的属性,并选择invertSelection。由于expression使用的是:ifelse(A<=25,0,ifelse(A<=64,1,2)) (25或更低将转换为0,64或更低将转换为1,其余将转换为2)。attributeIndices中转换的属性。0,1,2重命名为使用RenameNominalValues的更有意义的标签。指定要在selectedAttributes中更新的属性,并使用0:Youth,1:Adult,2:Senior作为valueReplacements。下面的MultiFilter设置以这种方式在dataset中转换第7个属性(只需通过右键单击菜单将其复制并粘贴到Weka中即可):
weka.filters.MultiFilter -F "weka.filters.unsupervised.attribute.MathExpression -E ifelse(A<=25,0,ifelse(A<=64,1,2)) -V -R 7" -F "weka.filters.unsupervised.attribute.NumericToNominal -R 7" -F "weka.filters.unsupervised.attribute.RenameNominalValues -R 7 -N 0:Youth,1:Adult,2:Senior" -S 1https://stackoverflow.com/questions/72342649
复制相似问题