我有一个 CSV 文件,正在导入 Weka。所有变量均以数字形式导入。我需要将其中 3 个更改为名义值。然而,当我在其上放置数字滤波器时,所有变量都会发生变化。我只想改3.
1)有没有办法通过过滤器改变一些
2)或者您可以在导入时设置它。如果是这样,我也想不通。
我假设您正在使用 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());
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)