簡體   English   中英

如何用 python 計算 r 平方?

[英]How to calculate r-squared with python?

我已經安裝了一個 model,我想從中知道分數(r 平方)。 數據被分成訓練集和測試集。 雖然 model 僅使用訓練集進行訓練,但我的測試數據的 r-squared 怎么可能更高? 我的意思是 model 從未見過測試集,但比訓練集更准確......我解釋錯了嗎?

在此處輸入圖像描述

我的代碼:將 pandas 導入為 pd

import numpy
import numpy as np

import seaborn as sns
import matplotlib.pyplot as plt
import scipy
import sklearn
from sklearn.linear_model import LinearRegression
from scipy import stats
from sklearn.metrics  import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import cross_val_predict

df=pd.read_csv("https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses- 
data/CognitiveClass/DA0101EN/module_5_auto.csv")
df=df._get_numeric_data()


y_data = df['price']
x_data=df.drop('price',axis=1)
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, 
test_size=0.15, random_state=1)
lr=LinearRegression()
lr.fit(x_train[['horsepower']], y_train)
h=lr.score(x_train[['horsepower']], y_train).mean()
h2=lr.score(x_test[['horsepower']], y_test).mean()
print(h,h2)

簡單來說,R-Squared 用於查找“百分比差異”或計算兩個時間序列數據集的准確性。

公式

R2 論壇

注意:平方 Pearsons-r、平方 pandas corr() 或 r^2 的結果與上面顯示的 R^2 公式略有不同,這是由於“統計匯總”的原因...請參閱 Max Pierini 的回答

SciKit Learn R 平方與 Pearson 相關系數的平方有很大不同 R

方式一:function

def r_squared(y, y_hat):
    y_bar = y.mean()
    ss_tot = ((y-y_bar)**2).sum()
    ss_res = ((y-y_hat)**2).sum()
    return 1 - (ss_res/ss_tot)

方法二:sklearn庫

from sklearn.metrics import r2_score

r2 = r2_score(actual, predicted)

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html

看起來您正在使用 scikit-learn。 如果是這樣,您可以使用r2_score 指標

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM