【问题标题】: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 siteThis University of Waikato site 获取有关 arff 格式的更多详细信息。

      【讨论】:

        猜你喜欢
        • 2013-06-15
        • 2021-11-28
        • 1970-01-01
        • 2015-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多