2017-07-17 28 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

相關問題