【问题标题】:How to load the WEKA pre-preprocessing steps to R?如何将 WEKA 预处理步骤加载到 R 中?
【发布时间】:2023-03-04 14:08:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: r weka data-mining rweka


    【解决方案1】:

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

    然后将其输出定向到下一个 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 过滤器创建 R 接口

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

    在命令行上运行 Weka

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

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

    这样

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

    我有以下设置here,所以我们可以通过以下方式运行 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. Use Weka in your Java code

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

    3. 维基here

    4. 也许不相关:Generating source code from WEKA classes

    【讨论】:

    • 您能告诉我如何通过 R Weka 计算 ROC AUC 吗?
    • @Sadiaz 你分类然后你按"Visualise threshold curve > tested_positive",你可以看到例子here。更麻烦的是,将此移至一个新问题。
    • 非常感谢@hhh。我已经在这里发布了这个问题:stackoverflow.com/questions/58478673/…我没有得到任何回应,因此我发表了评论。另外,您分享的链接是为 Weka 而不是 rWeka。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    相关资源
    最近更新 更多