困惑于Spark ML和Tensorflow的线性回归结果

我运行了这个程序: https://github.com/backstopmedia/tensorflowbook/blob/master/chapters/04_machine_learning_basics/linear_regression.py

我在上述程序的第55行后添加了”print(“w=”, W.eval(), “b=”, b.eval())”。我得到的结果是:

w= [[ 3.5245235 ][ 1.50171268]] b= 1.14499

所以 y=3.5245235×1 + 1.50171268×2 +1.14499。

我使用了上述程序相同的数据(文件格式稍后附上),并运行了程序 https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java,结果是:

Coefficients: [0.3827266230806965,5.1690760222564425] Intercept: 82.22008153614573numIterations: 6objectiveHistory: [0.5,0.41583549697777683,0.15548328325638935,0.15439025905767773,0.15432368309706285,0.15432368309449543]

所以 y=0.3827266230806965×1+5.1690760222564425×2 + 82.22008153614573。

我对同一个问题的结果为何如此不同感到困惑?我在Spark程序中使用的数据格式是:

354 1:84 2:46190 1:73 2:20405 1:65 2:52263 1:70 2:30451 1:76 2:57302 1:69 2:25288 1:63 2:28385 1:72 2:36402 1:79 2:57365 1:75 2:44209 1:27 2:24290 1:89 2:31346 1:65 2:52254 1:57 2:23395 1:59 2:60434 1:69 2:48220 1:60 2:34374 1:79 2:51308 1:75 2:50220 1:82 2:34311 1:59 2:46181 1:67 2:23274 1:85 2:37303 1:55 2:40244 1:63 2:30

回答:

参见 Tensorflow on simple linear regression。该代码存在相同的问题。解决方法将与那里的答案相同。此外,学习率太小(设置为0.001),步骤需要设为100000。选择这些初始值非常技术化(一位专家曾与我讨论过这个问题)。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注