[英]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 用於查找“百分比差異”或計算兩個時間序列數據集的准確性。
公式
注意:平方 Pearsons-r、平方 pandas corr() 或 r^2 的結果與上面顯示的 R^2 公式略有不同,這是由於“統計匯總”的原因...請參閱 Max Pierini 的回答
SciKit Learn R 平方與 Pearson 相關系數的平方有很大不同 R
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)
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.