我是WEKA的新学员。我使用Car Evaluation数据集。首先,我在Excel中正确复制了所有属性,实例和值,并保存为csv文件。我在WEKA打开了那个csv文件。我可以看到所有课程,属性等等。但是,我看不到门和人的属性。我得到了"属性既不是数字也不是名义。"
这些属性可以获得诸如" 2"," 3"和"更多"。它们采用数值和名义值。在WEKA中,他们的类型是字符串。如何更改属性类型或应用哪种方法来查看其可视化和计数?
答案 0 :(得分:0)
WEKA可以读取csv文件,但csv不提供有关属性类型的信息。这就是为什么WEKA鼓励您使用arff文件格式。 arff格式与csv相同,只是它有一个描述变量的标题(并允许注释和其他文档)。标题将包含
之类的内容@attribute mpg numeric
@attribute cyl numeric
@attribute doors {2,3,more}
表示mpg和cyl将具有数值,而门将是可以采用三个值中的任何一个的因子" 2"," 3"或&#34 ;更&#34 ;.您需要确保为门等因素指定所有的可能值。如果你知道标题应该是什么样的,你可以简单地在文本编辑器中添加标题。您可以在This WEKA site或This University of Waikato site获取有关arff格式的更多详细信息。
答案 1 :(得分:0)
也许您应该决定将属性设置为全数字,还是所有名义(也称为分类或所有字符串)。
所有数字属性的好处:算法可以确定该属性与任何其他属性之间的数学关系,包括目标(或期望的输出),例如相关性,依赖性/独立性,协方差。此外,如果使用基于树的算法,则节点可以定义决策规则,例如门> 3或人<2。
拥有所有名义属性的好处包括:算法可以更快地完成,因为可以使用分类值完成的事情数量有限。缺点:大多数算法不直接支持名义属性。基于树的算法在它们可以产生的决策节点类型方面受到限制,例如,门是“3”和“3”。或者人不是“更多”。
警告:如果您正在处理的属性是目标或期望的输出,那么将其全部 numeric 将使weka将其解释为回归问题,同时具有该功能属性名义将自动解释为分类问题。
如果您有兴趣将您的属性设置为全数字,则可以使用excel替换所有出现more
,例如-1
。
如果稍后您需要从所有数字转到名义属性,您可以简单地use a filter do to that。或者,如果您使用的是Java API,则可以检查Walter's solution:
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());
}
}
}