直観

0

ここでは、私のコードの抜粋です:直観

from sklearn.linear_model import LinearRegression 

reg = LinearRegression() 
reg.fit(feature_train,target_train) 
print(reg.coef_) 
print(reg.intercept_,reg.score(feature_test,target_test)) 

P.S:私はreg.score()を理解するのに間違っている場合は、私を修正してください。

最後のステートメントであるreg.score()に関する疑問があります。私はこのスコアが大きいことも知っていますが、これはrの2乗値でもあります。私はそれが値ですのでX.の変化によって説明されてどのくらいのYの値の変化を示している知っているように

0と1の間でなければなりません。しかし、私はそれを実行しているとき:

rが値を乗私は約-1.4の値を得ています。これは
0.私はなぜこれが起きているのか分かりません。私にこれを説明し、もしこの負の値が意味するものが負の値を取ることができるならば。

+0

https://stats.stackexchange.com/questions/183265/what-does-negative-r-squared-meanこれには私が必要なものがあります。 –

+0

あなたの疑問に対する答えは、リンクされたSEの投稿にあります。それに加えて、[scikit-learn docs](http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression.score)によると、R^2は確かに否定的です。 – desertnaut

答えて

1

しかし、私はそれを実行しているとき、私はなぜこれが起こっている私はなっていない午前0より 小さい-1.4程度の値になっています。

adjusted R-squaredで発生する可能性があります。解釈はこれです:予測値のセットは、実際の値の平均値で水平に描かれた直線よりも、実際の値を予測するのが悪い仕事です。これは、フィッティングされたモデルが「恣意的に悪化する可能性がある」ことを示すとき、sklearnのドキュメントで言及されているものです。

1

R二乗値(R2)のように計算することができる。

R2 = 1.0 - (absolute_error_variance/dependent_variable_variance)

あなたがnumpyのアレイを使用する場合は、のように簡単にこれらの値を見つけることができる:

absolute_error_array.var()

dependent_variable_array.var()

を入力し、Rの二乗値を手動で計算して問題を見つけます。

+0

はい、あなたはそうすることができます。しかし、私の懸念は、回帰モデルでr^2の値が0と1の間にあることです。しかし、私は負の値を示しています。 –

+1

私が説明したマニュアル計算は、値が正しいかどうかを検証します。手動によるカリキュレーションでも-1.4の値が得られた場合、これは1 - (分散比)のR-二乗値が1〜2.4を与え、誤差分散がデータ分散自体よりもずっと悪いことを意味します。言い換えれば、モデルはデータを記述するのが非常に貧弱です。 –