【问题标题】:Logistic Regression PySpark MLlib issue with multiple labels具有多个标签的逻辑回归 PySpark MLlib 问题
【发布时间】:2016-02-06 17:05:18
【问题描述】:

我正在尝试创建一个 LogisticRegression 模型 (LogisticRegressionWithSGD),但它得到一个错误

org.apache.spark.SparkException: Input validation failed.

如果我给它二进制输入(0,1 而不是 0,1,2)它确实会成功。

示例输入:

parsed_data = [LabeledPoint(0.0, [4.6,3.6,1.0,0.2]),
LabeledPoint(0.0, [5.7,4.4,1.5,0.4]),
LabeledPoint(1.0, [6.7,3.1,4.4,1.4]),
LabeledPoint(0.0, [4.8,3.4,1.6,0.2]),
LabeledPoint(2.0, [4.4,3.2,1.3,0.2])]

代码: model = LogisticRegressionWithSGD.train(parsed_data)

Spark 中的逻辑回归模型是否应该仅用于二元分类?

【问题讨论】:

    标签: python apache-spark machine-learning pyspark apache-spark-mllib


    【解决方案1】:

    虽然从文档中不清楚(您必须深入了解source code 才能实现它),LogisticRegressionWithSGD 仅适用于二进制数据;对于多项回归,您应该使用LogisticRegressionWithLBFGS:

     from pyspark.mllib.classification import LogisticRegressionWithLBFGS, LogisticRegressionModel, LogisticRegressionWithSGD
     from pyspark.mllib.regression import LabeledPoint
     parsed_data = [LabeledPoint(0.0, [4.6,3.6,1.0,0.2]),
                    LabeledPoint(0.0, [5.7,4.4,1.5,0.4]),
                    LabeledPoint(1.0, [6.7,3.1,4.4,1.4]),
                    LabeledPoint(0.0, [4.8,3.4,1.6,0.2]),
                    LabeledPoint(2.0, [4.4,3.2,1.3,0.2])]     
    
     model = LogisticRegressionWithSGD.train(sc.parallelize(parsed_data)) # gives error:
     # org.apache.spark.SparkException: Input validation failed.
    
     model = LogisticRegressionWithLBFGS.train(sc.parallelize(parsed_data), numClasses=3)  # works OK
    

    【讨论】:

    • 谢谢!我确实遇到了另一个问题。后模型 = LogisticRegressionWithLBFGS.train(sc.parallelize(parsed_data), numClasses=3)
    • 你能说得更具体点吗?究竟是什么问题?
    • 抱歉,错误与 LabeledPoint 有关。想通了:)(不能将 LabeledPoint 索引为 numpy 数组)。之前的评论由于某种原因被截断了。
    • 当特征向量是稀疏向量时这会起作用吗?我正在尝试但收到以下错误:model = LogisticRegressionWithLBFGS.train(trainingData, numClasses=5) File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/mllib/classification.py", line 381, in train AttributeError: 'list' object has no attribute 'features',我检查了 trainingData 类型,它是 <class 'pyspark.rdd.PipelinedRDD'>
    • 有关我尝试使用稀疏特征向量的更多详细信息,请查看question
    猜你喜欢
    • 2019-04-11
    • 2016-09-26
    • 2021-02-26
    • 2017-01-03
    • 2018-04-06
    • 2018-11-22
    • 2020-09-10
    相关资源
    最近更新 更多