我是一个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。
有人能帮我吗?
发布于 2020-01-21 02:44:18
如果我理解正确的话,您希望在图形中显示R2。您可以将其添加到图表标题中:
ax.set_title('R2: ' + str(r2_score(y_test, y_predicted)))
在plt.show()
之前
发布于 2020-11-19 07:15:50
如果要将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))
第一个参数是要放在图形上的文本,第二个参数是该文本左下角的位置。如果你想添加另一行,比如MSE,你可以在第一个参数后面加上"\n“和任何你想要的文本。请记住,(x,y)元组是根据数据缩放的,因此,如果您的数据范围不是0,1,并且希望将文本放在左上角,则可能需要将第二个参数从(0,1)更改。
有关更多信息,请参见https://matplotlib.org/3.3.2/api/_as_gen/matplotlib.axes.Axes.annotate.html或https://matplotlib.org/3.3.2/api/_as_gen/matplotlib.pyplot.annotate.html
https://stackoverflow.com/questions/59829077
复制相似问题