我在上述程序的第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。选择这些初始值非常技术化(一位专家曾与我讨论过这个问题)。