【问题标题】:debugging a mahout logistic regression调试 mahout 逻辑回归
【发布时间】:2015-07-01 15:54:43
【问题描述】:

我是 mahout 的新手。我正在尝试这里列出的标准“甜甜圈”示例:

http://imiloainf.wordpress.com/2011/11/02/mahout-logistic-regression/

所以这个例子就像一个魅力。

但是当我尝试在我的数据集(这是一个巨大的数据集)上实现它时,它不起作用。

数据集在一个 csv 文件中。除了它有很多特征 (~100) 并且是 1TB 文件之外,一切都是一样的。

我收到此错误。

 bin/mahout trainlogistic  --input /path/mahout_input/complete/input.csv \
--output mahoutmodel --target default --categories 2 --predictors O1 E1 I1 \
 --types numeric --features 30 --passes 100 --rate 50
Running on hadoop, using HADOOP_HOME=/opt/mapr/hadoop/hadoop-0.20.2
No HADOOP_CONF_DIR set, using /opt/mapr/hadoop/hadoop-0.20.2/conf
Exception in thread "main" java.lang.NullPointerException
        at org.apache.mahout.classifier.sgd.CsvRecordFactory.firstLine(CsvRecordFactory.java:167)
        at org.apache.mahout.classifier.sgd.TrainLogistic.main(TrainLogistic.java:75)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
        at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
        at org.apache.mahout.driver.MahoutDriver.main(MahoutDriver.java:187)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:186)

我做错了什么?

你如何调试这个.. 什么是错误??

谢谢

【问题讨论】:

    标签: hadoop mahout


    【解决方案1】:

    我的猜测是您的输入不存在或为空。我会检查/path/mahout_input/complete/input.csv 是否真的是你的意思。

    【讨论】:

    • 它在那里..我再次检查了它
    • 输入文件中的字段分隔符与 mahout CSV 阅读器所期望的不同。所以我猜它无法从第一行拆分并找到预测变量。
    【解决方案2】:

    要么检查你的输入路径,要么确保你的输入路径的第一行只有 "" 中的值,比如 "x1","x2","x3","labell"..等等

    【讨论】:

      【解决方案3】:

      我也遇到过。

      我的错误是绕过了不正确的 --target 参数,该参数在列中不存在。具体来说,我的标题行是

      myColumn1,myColumn2,myColumn3
      

      我的命令行是

      mahout trainlogistic --input ./input.csv --output ./logistic_model
      --target myMisTypedColumn1 --predictors myColumn2 myColumn3 --types w w w --features 2 --passes 100 --rate 50 --categories 2

      另一个提示是:不要使用“(引号)或长列名,因此您应该避免“mahout 不喜欢我的列名吗?”等令人头疼的问题。

      作为对 MAHOUT 的反馈:错误信息很糟糕。在这样一个有前途的框架中,我们永远不应该看到“NullPointerException”。

      【讨论】:

        猜你喜欢
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        • 2020-01-31
        • 2021-11-11
        • 2018-01-26
        • 2020-03-22
        相关资源
        最近更新 更多