簡體   English   中英

如何在 Python 中的圖表上顯示 R 平方值

[英]How to display R-squared value on my graph in Python

我是 Python 初學者,所以這可能比我想的更明顯。 我正在使用Matplotlib通過神經網絡以圖形方式呈現我的預測數據與實際數據。 我能夠計算 r 平方並繪制我的數據,但現在我想結合圖表本身的值,該值會隨着每次新運行而變化。

我的神經網絡至少使用 4 個不同的輸入,並給出一個輸出。 這是我的最終代碼:

y_predicted = model.predict(X_test)

這就是我計算 R2 的方式:

# Using sklearn
from sklearn.metrics import r2_score
print r2_score(y_test, y_predicted)

這是我的圖表:

fig, ax = plt.subplots()
ax.scatter(y_test, y_predicted)
ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
ax.set_xlabel('Actual')
ax.set_ylabel('Predicted')
#regression line
y_test, y_predicted = y_test.reshape(-1,1), y_predicted.reshape(-1,1)
ax.plot(y_test, LinearRegression().fit(y_test, y_predicted).predict(y_test))

plt.show()

它給出了類似圖表的內容,每次我更改時期、層數或數據類型等時,R2 都會變化。紅色是我的回歸線,稍后我將對其進行標記。 由於 R2 是一個函數,我不能簡單地使用圖例或文本代碼。

我也想顯示 MSE。

誰能幫我嗎?

圖形

如果您想將 r 平方值放在圖形本身上,就像 Microsoft Excel 中的圖形一樣,您可以調用annotate方法:

ax.annotate("r-squared = {:.3f}".format(r2_score(y_test, y_predicted)), (0, 1))

要么

plt.annotate("r-squared = {:.3f}".format(r2_score(y_test, y_predicted)), (0, 1))

在圖形的左上角放置 r 平方注釋

第一個參數是您希望放置在圖形上的文本,第二個參數是該文本左下角的位置。 如果您想添加另一行,例如 MSE,您可以將“\n”和您希望的任何文本附加到第一個參數。 請記住,(x, y) 元組是根據數據縮放的,因此如果您的數據范圍不是 [0, 1],並且您想將文本放在左上角,您可能需要更改來自 (0, 1) 的第二個參數。

有關詳細信息,請參閱https://matplotlib.org/3.3.2/api/_as_gen/matplotlib.axes.Axes.annotate.htmlhttps://matplotlib.org/3.3.2/api/_as_gen/matplotlib.pyplot .annotate.html

如果我沒理解錯的話,你想在圖中顯示 R2。 您可以將其添加到圖表標題中:

ax.set_title('R2: ' + str(r2_score(y_test, y_predicted)))

plt.show()之前

暫無
暫無

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

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