2017-07-17 91 views
0

我已经使用WEKA GUI Java here来进行数据的预处理。我想现在在R中使用相同的预处理步骤。如何将WEKA预处理步骤加载到R?

例如,我想将WEKA GUI的MultiFilter预处理加载到R.我无法在RWeka中找到它。

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

enter image description here

enter image description here

enter image description here

回答

1

可以加载WEKA GUI与RWeka或用WEKA的命令行工具是部分的步骤是比RWeka可用的功能更为广泛。因此,您可以使用命令行命令通过R中的系统命令扩展RWeka。幸运的是,WEKA GUI中的参数和WEKA命令行中的参数是相同的。我建议使用jar xf weka-src.jar来提取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 

运行你的第一个离散化过滤器,并指导其输出到下一Discretize,最终以NumericTransformResample。命令行提供的命令神话般的指令以下列方式

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

RWeka包提供的功能

  • 离散化()
  • 正常化()
  • make_Weka_filter()来创建ř接口的Weka滤波器

并且没有NumericTransform和Remo ve功能。你需要使用它们的参数,所以不要直接通过从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")

我有以下设置here,所以我们可以在运行离散化以下方式。

$ 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. Use Weka in your Java code

  2. 下载Linux开发者版本,将它解压缩,并与许多神话般的例子关于使用WEKA特别是在命令行中读取的自述。

  3. 维基here

  4. 也许无关紧要:Generating source code from WEKA classes

相关问题