【问题标题】:Spark - MLlib linear regression intercept and weight NaN [duplicate]Spark - MLlib 线性回归截距和权重 NaN [重复]
【发布时间】:2015-04-20 14:46:10
【问题描述】:

我尝试使用一些自定义数据在 Spark 上构建回归模型,并且截距和权重始终为 nan。 这是我的数据:

data = [LabeledPoint(0.0, [27022.0]), LabeledPoint(1.0, [27077.0]), LabeledPoint(2.0, [27327.0]), LabeledPoint(3.0, [27127.0])]

输出:

(weights=[nan], intercept=nan)  

但是,如果我使用这个数据集(取自 Spark 示例),它会返回一个非 nan 权重和截距。

data = [LabeledPoint(0.0, [0.0]), LabeledPoint(1.0, [1.0]), LabeledPoint(3.0, [2.0]),LabeledPoint(2.0, [3.0])]

输出:

(weights=[0.798729902914], intercept=0.3027117101297481) 

这是我当前的代码

model = LinearRegressionWithSGD.train(sc.parallelize(data), intercept=True)

我错过了什么吗?是因为我数据上的数字那么大吗?这是我第一次使用 MLlib,所以我可能会遗漏一些细节。

谢谢

【问题讨论】:

    标签: apache-spark apache-spark-mllib


    【解决方案1】:

    MLlib 线性回归基于 SGD,因此您需要调整迭代和步长,请参阅 https://spark.apache.org/docs/latest/mllib-optimization.html。

    我像这样尝试了您的自定义数据,并得到了一些结果(在 scala 中):

    val numIterations = 20
    val model = LinearRegressionWithSGD.train(sc.parallelize(data), numIterations)
    

    【讨论】:

    • 在 Python 中 model = LinearRegressionWithSGD.train(sc.parallelize(data), iterations=20)
    猜你喜欢
    • 2014-12-03
    • 1970-01-01
    • 2015-06-23
    • 2016-08-31
    • 2019-10-14
    • 1970-01-01
    • 2019-01-07
    • 2016-12-12
    • 2016-02-12
    相关资源
    最近更新 更多