我有一个CSV文件,我将其导入Weka。所有变量都以数字形式导入。我需要将其中的3个改为名义上的。然而,当我在其上放置数字解释过滤器时 - 所有变量都会发生变化。我只想改变3.
1)有没有办法通过过滤器改变一些 2)或者你可以在导入过程中设置它。如果是这样,我也无法解决这个问题。
答案 0 :(得分: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());
}
}
}
答案 1 :(得分:7)
首先打开arff文件。 在过滤下单击&#34;选择&#34; 。在过滤器树下,导航到无人监督并搜索&#34; NumerictoNomial&#34; 。单击一次,然后按“应用”。保存文件并重新加载。注意:确保已选中要更改的所需字段的复选框。
答案 2 :(得分:2)
单击NumericToNominal选项卡并显示一个窗口,选择要更改为名义的相应attributeIndices