Weka只将数字改为名义

mpg*_*mpg 9 weka

我有一个CSV文件,我正在导入Weka.所有变量都以数字形式导入.我需要将其中的3个改为名义上的.然而,当我在其上放置数字解释过滤器时 - 所有变量都会发生变化.我只想改变3.

1)有没有办法只通过过滤器更改一些2)或者你可以在导入过程中设置它.如果是这样,我也无法解决这个问题.

Wal*_*ter 15

我假设您正在使用Weka Explorer(GUI).要将过滤器应用于特定属性,请执行以下操作.

步骤1:在预处理选项卡中选择过滤器
步骤2:单击"选择"按钮右侧的框(打开一个新窗口)
步骤3:在attributeIndices框中输入您的自定义范围

如果在过滤器窗口中选择"更多"按钮,您将获得不同选项和可提供的值的说明.

在您的特定情况下,默认情况下,过滤器应用于第一个到最后一个属性.您应该更改范围以反映您的个人需求.

====编辑====
如果您使用的是Java API,以下代码将指向正确的方向.

 
import weka.core.Instances;
import weka.filters.Filter;
import weka.filters.unsupervised.attribute.NumericToNominal;

public class Main {

    public static void main(String[] args) throws Exception
    {

        //load training instances
        Instances originalTrain= //...load data with numeric attributes 

        NumericToNominal convert= new NumericToNominal();
        String[] options= new String[2];
        options[0]="-R";
        options[1]="1-2";  //range of variables to make numeric

        convert.setOptions(options);
        convert.setInputFormat(originalTrain);

        Instances newData=Filter.useFilter(originalTrain, convert);

        System.out.println("Before");
        for(int i=0; i<2; i=i+1)
        {
            System.out.println("Nominal? "+originalTrain.attribute(i).isNominal());
        }

        System.out.println("After");
        for(int i=0; i<2; i=i+1)
        {
            System.out.println("Nominal? "+newData.attribute(i).isNominal());
        }

    }

} 
Run Code Online (Sandbox Code Playgroud)

  • 已更新以包括如何通过 API 执行此操作 (2认同)
  • 哦,现在我明白了!这是“String[] options”部分,我不知道如何实现:(谢谢! (2认同)

小智 7

首先打开arff文件.在过滤器下单击"选择".在过滤树下,导航到无人监督并搜索"NumerictoNomial".单击一次,然后按应用.保存文件并重新加载.注意:确保已选中要更改的所需字段的复选框.