1

私は、このプログラム実行:https://github.com/backstopmedia/tensorflowbook/blob/master/chapters/04_machine_learning_basics/linear_regression.py困惑線形回帰によって結果

をIは、W =」、W.eval()、 "B ="、b.eval() "(印刷" を追加) "のようになります。私が得た結果は、W

= [3.5245235] [1.50171268] B = 1.14499

そこでY = 3.5245235x1 + 1.50171268x2 1.14499。

Iは、プログラム(ファイル形式が後で取り付けられる)は、上記と同じデータを使用し、結果は https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java プログラムを実行した:

係数:[0.3827266230806965,5.1690760222564425]インターセプト:82.22008153614573 numIterations:6 objectiveHistory:[0.5,0.41583549697777683,0.15548328325638935,0.15439025905767773,0.15432368309706285,0.15432368309449543]

ので、Y = 0.3827266230806965x1 + + 82.22008153614573 5.1690760222564425x2。

同じ問題で結果がどう違うのですか?私はスパークプログラムを使用したデータのフォーマットは次のとおりです。



354 1:84 2:46 
190 1:73 2:20 
405 1:65 2:52 
263 1:70 2:30 
451 1:76 2:57 
302 1:69 2:25 
288 1:63 2:28 
385 1:72 2:36 
402 1:79 2:57 
365 1:75 2:44 
209 1:27 2:24 
290 1:89 2:31 
346 1:65 2:52 
254 1:57 2:23 
395 1:59 2:60 
434 1:69 2:48 
220 1:60 2:34 
374 1:79 2:51 
308 1:75 2:50 
220 1:82 2:34 
311 1:59 2:46 
181 1:67 2:23 
274 1:85 2:37 
303 1:55 2:40 
244 1:63 2:30 

 

答えて

0

Tensorflow on simple linear regressionを参照してください。コードにも同じ問題があります。修正はそこの答えと同じになります。また、learning_rateが小さすぎる(.001に設定)、ステップを100000にする必要があります。これらの初期値を選択することは非常に技術的です(これについて私に話した1人の専門家)。

1

答えは非常に簡単です、スパークモデルはない線形回帰があります。

線形回帰最小化|| y - Wx || _2^2

スパークモデルは、弾性ネットです。 y - Wx || _2^2 + a1 || W || _2^2 + a2 || W || _1

あなたは、このスパークコードは線形回帰になりたい場合は正則化項を削除します。

.setRegParam(0.3) 
    .setElasticNetParam(0.8); 

、それが収束することを確認するために繰り返しの量を増やします。

+0

わかりません。私はこれらの2行と.setMaxIter(1000)を削除しました。係数:[0.4173620987945001,5.21659080879135]インターセプト:77. numIterations:1 objectiveHistory:[0.0] –

+0

私たちはこれを見れば:http://tempforum.neas-seminars.com/ Attachment4373.aspx、Spark MLの結果は@lejlotが示唆するように正しいと思います。誰でもテンソルフローコードを修正できますか? –