0

我在这里使用了 WEKA GUI Java进行数据的预处理。我现在想在 R 中使用相同的预处理步骤。

比如我想把WEKA GUI的MultiFilter的预处理加载到R中,在RWeka中找不到。

如何将 WEKA 预处理步骤加载到 R?

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

您可以使用 RWeka 或使用比 RWeka 中的可用功能更广泛的 Weka 命令行工具部分加载 WEKA GUI 步骤。因此,您可以通过 R 中的系统命令使用命令行命令扩展 RWeka。幸运的是,WEKA GUI 中的参数和 WEKA 命令行中的参数是相同的。我建议提取weka-src.jarwithjar xf weka-src.jar来阅读源代码。

MultiFilter 有很多功能

java weka.filters.MultiFilter --help
java weka.filters.unsupervised.attribute.PartitionedMultiFilter --help

其中第二个允许您指定属性范围。否则,它们似乎是相同的。

然后你可以运行你的第一个离散化过滤器

java weka.filters.unsupervised.attribute.Discretize -F -B 20 -M -1.0 -R 27 -i yourFile.arff

然后将其输出定向到 next Discretize,最终定向到NumericTransformand Resample。命令行通过以下方式提供有关命令的精彩说明

java weka.filters.unsupervised.attribute.NumericTransform --help
java weka.filters.unsupervised.attribute.Remove --help
java weka.filters.unsupervised.instance.Resample --help
java weka.filters.supervised.instance.Resample --help

您可以从目录结构或索引中检查它们。

威卡

RWeka 包提供的功能

  • 离散化()
  • 标准化()
  • make_Weka_filter() 为 Weka 过滤器创建 R 接口

并且没有 NumericTransform 和 Remove 函数。您需要使用他们的参数,而不是直接从 WEKA GUI 复制粘贴 java 代码。也许,一种解决方案是使用系统命令并使用它执行 Java 代码,而无需学习 RWeka 本身。WEKA GUI 和 R 包之间似乎存在一些差距。

在命令行上运行 Weka

即使通过 RWeka 界面缺少命令,您也可以使用 R 中的系统命令。例如,您可以运行 remove 命令

java weka.filters.unsupervised.attribute.Remove -i yourfile.arff

这样

system("java weka.filters.unsupervised.attribute.Remove -i yourfile.arff")

我在这里有以下设置,因此我们可以通过以下方式运行 Discretize。

$ cat $WEKAINSTALL/data/iris.arff |tail
6.8,3.2,5.9,2.3,Iris-virginica
6.7,3.3,5.7,2.5,Iris-virginica
6.7,3.0,5.2,2.3,Iris-virginica
6.3,2.5,5.0,1.9,Iris-virginica
6.5,3.0,5.2,2.0,Iris-virginica
6.2,3.4,5.4,2.3,Iris-virginica
5.9,3.0,5.1,1.8,Iris-virginica
%
%
%
$ java weka.filters.unsupervised.attribute.Discretize -i $WEKAINSTALL/data/iris.arff |tail
'\'(6.46-6.82]\'','\'(2.96-3.2]\'','\'(5.13-5.72]\'','\'(2.26-inf)\'',Iris-virginica
'\'(6.82-7.18]\'','\'(2.96-3.2]\'','\'(4.54-5.13]\'','\'(2.26-inf)\'',Iris-virginica
'\'(5.74-6.1]\'','\'(2.48-2.72]\'','\'(4.54-5.13]\'','\'(1.78-2.02]\'',Iris-virginica
'\'(6.46-6.82]\'','\'(2.96-3.2]\'','\'(5.72-6.31]\'','\'(2.26-inf)\'',Iris-virginica
'\'(6.46-6.82]\'','\'(3.2-3.44]\'','\'(5.13-5.72]\'','\'(2.26-inf)\'',Iris-virginica
'\'(6.46-6.82]\'','\'(2.96-3.2]\'','\'(5.13-5.72]\'','\'(2.26-inf)\'',Iris-virginica
'\'(6.1-6.46]\'','\'(2.48-2.72]\'','\'(4.54-5.13]\'','\'(1.78-2.02]\'',Iris-virginica
'\'(6.46-6.82]\'','\'(2.96-3.2]\'','\'(5.13-5.72]\'','\'(1.78-2.02]\'',Iris-virginica
'\'(6.1-6.46]\'','\'(3.2-3.44]\'','\'(5.13-5.72]\'','\'(2.26-inf)\'',Iris-virginica
'\'(5.74-6.1]\'','\'(2.96-3.2]\'','\'(4.54-5.13]\'','\'(1.78-2.02]\'',Iris-virginica
$ 

一些有用的信息

  1. 在您的 Java 代码中使用 Weka

  2. 下载 Linux Developer 版本,解压缩并阅读自述文件,其中包含许多关于使用 WEKA 的精彩示例,尤其是在命令行中。

  3. 维基在这里

  4. 也许不相关:从 WEKA 类生成源代码

于 2017-07-29T21:16:08.183 回答