【问题标题】:How to change attribute type in WEKA?如何在 WEKA 中更改属性类型?
【发布时间】:2017-05-02 23:57:14
【问题描述】:
我是 WEKA 的新手。我使用汽车评估数据集。首先,我在 Excel 中正确复制了所有属性、实例和值并保存为 csv 文件。我在 WEKA 中打开了那个 csv 文件。我可以看到类、属性等的所有计数。但是,我看不到门和人的属性。我得到“属性既不是数字也不是名义上的。”
这些属性获取诸如“2”、“3”和“more”之类的值。它们采用数值和标称值。在 WEKA 中,它们的类型是字符串。如何更改属性类型或应用哪种方法来查看它们的可视化和计数?
【问题讨论】:
标签:
csv
machine-learning
attributes
weka
【解决方案1】:
也许您应该决定使属性全部为数字,或全部为名义(也称为分类,或全部为字符串)。
所有数字属性的好处:算法可以确定该属性与任何其他属性之间的数学关系,包括目标(或期望的输出),例如相关性、依赖性/独立性、协方差。此外,如果您使用基于树的算法,节点可以定义决策规则,例如门>3 或人员
拥有所有名义属性的好处包括:算法可以更快地完成,因为使用分类值可以完成的事情数量有限。缺点:大多数算法不直接支持名义属性。基于树的算法在它们可以产生的决策节点类型上受到限制,例如,门是“3”或人不是“更多”。
警告:如果您正在处理的属性是目标或期望的输出,那么将其全部 numeric 将使 weka 将其解释为 regression 问题,同时具有属性为 nominal 将自动被解释为 分类 问题。
如果您有兴趣将属性全部设为数字,则可以使用 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());
}
}
}
【解决方案2】:
WEKA 可以读取 csv 文件,但 csv 没有提供有关属性类型的信息。这就是 WEKA 鼓励您使用 arff 文件格式的原因。 arff 格式与 csv 相同,只是它有一个描述变量的标题(并允许 cmets 和其他文档)。标题将包含诸如
之类的内容
@attribute mpg numeric
@attribute cyl numeric
@attribute doors {2,3,more}
表示 mpg 和 cyl 将具有数值,而门将是一个可以采用“2”、“3”或“更多”三个值中的任何一个的因素。您需要确保为门等因素指定所有的可能值。如果您知道标题应该是什么样子,您可以简单地在文本编辑器中添加标题。您可以在This WEKA site 或This University of Waikato site 获取有关 arff 格式的更多详细信息。