質問
r2_score
scikit-learn の関数と、ウィキペディアで説明されている決定係数の式に大きな違いがあるのはなぜですか? どれが正しいですか?
環境
私は線形モデルと二次モデルを予測するために Python 3.5 を使用しています。r2_score
ただし、テスト中、メトリックscikit-learn
とウィキペディアで提供される計算の間には顕著な違いがあります。
コード
上記のリンク先のウィキペディア ページの例を計算するコードを参照としてここに提供します。
sklearn.metrics インポート r2_score から numpy をインポート y = [1, 2, 3, 4, 5] f = [1.9、3.7、5.8、8.0、9.6] # numpy 配列に変換し、単精度エラーを回避するために倍精度を確保します 観測 = numpy.array(y, dtype=numpy.float64) 予測 = numpy.array(f, dtype=numpy.float64) scipy_value = r2_score(観察、予測) >>> scipy_value:
明らかなように、Wikipedia の参照値が であるのに対し、scipy
計算値はです。-3.8699999999999992
0.998
ありがとうございました!
更新:これは、scikit-learn で R^2 がどのように計算されるかについてのこの質問とは異なります。私が理解しようとしているのは、両方の結果の不一致であるためです。その質問は、scikit で使用されている数式はウィキペディアのものと同じであり、異なる値になるべきではないと述べています。
更新 #2:ウィキペディアの記事の例を読み間違えたことが判明しました。以下の回答とコメントは、私が提供する例は、例の (x, y) 値の線形の最小二乗法であることを示しています。それについては、ウィキペディアの記事の答えが正しいです。そのために提供される R^2 値は 0.998 です。両方のベクトル間の R^2 については、scikit の答えも正しいです。助けてくれてどうもありがとう!