Mahout随机森林数据描述错误

时间:2014-03-21 10:03:33

标签: hadoop mahout random-forest

尝试运行Mahout Random Forest Descriptor时出现以下错误 P.S。:我试图在不同的集合上运行(不是在链接上提供的集合) 使用的描述符是:

hadoop jar /home/ubuntu/binaries/mahout-distribution-0.9/mahout-core-0.9-job.jar org.apache.mahout.classifier.df.tools.Describe -p /user/ubuntu/train_OLwoCV.csv -f  /user/ubuntu/train_OLwoCV.csv.info -d L 3 N 5 C N 2 C N C N

错误是:

Exception in thread "main" org.apache.mahout.classifier.df.data.DescriptorException: Bad Token : 2�C
    at org.apache.mahout.classifier.df.data.DescriptorUtils.parseDescriptor(DescriptorUtils.java:55)
    at org.apache.mahout.classifier.df.data.DataLoader.generateDataset(DataLoader.java:174)
    at org.apache.mahout.classifier.df.tools.Describe.generateDataset(Describe.java:127)
    at org.apache.mahout.classifier.df.tools.Describe.runTool(Describe.java:115)
    at org.apache.mahout.classifier.df.tools.Describe.main(Describe.java:100)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)

Grep无法帮助我。数据或我对数据的描述是否存在问题?

1 个答案:

答案 0 :(得分:0)

尝试仔细检查描述符选项('-d L 3 N 5 CN 2 CNC N')是否适合您的数据,因为如果找不到某些列的描述符,则DescriptorException(“Bad Token:”+ token)可以抛出在csv。

来自Mahout v0.7的parseDescriptor()方法的

代码:

public static Attribute[] parseDescriptor(CharSequence descriptor) throws DescriptorException {

 List<Attribute> attributes = Lists.newArrayList();
 for (String token : SPACE.split(descriptor)) {
   token = token.toUpperCase(Locale.ENGLISH);
   if ("I".equals(token)) {
     attributes.add(Attribute.IGNORED);
   } else if ("N".equals(token)) {
     attributes.add(Attribute.NUMERICAL);
   } else if ("C".equals(token)) {
     attributes.add(Attribute.CATEGORICAL);
   } else if ("L".equals(token)) {
     attributes.add(Attribute.LABEL);
   } else {
     throw new DescriptorException("Bad Token : " + token);
   }
 }
return attributes.toArray(new Attribute[attributes.size()]);
}