为回归模型结果绘制R方误差

时间:2018-07-10 10:02:42

标签: python matplotlib graph statistics regression

我使用keras实现了回归神经网络,并且试图绘制结果。

plt.plot(Y_test, Y_pred, 'ro')
plt.xlabel('Actual values')
plt.ylabel('Predicted values')
plt.show()

但是我需要在我的绘图中添加拟合线,如下图所示。您能帮上忙吗?

Figure example]

3 个答案:

答案 0 :(得分:1)

我想这就是你想要的,

import numpy as np
import matplotlib.pyplot as plt

Y_test = np.random.rand(100) # Random Data
Y_pred = Y_test + np.random.rand(100)*0.1 # Random Data

r_squared = 0.59
plt.scatter(Y_test,Y_pred)
plt.xlabel('Actual values')
plt.ylabel('Predicted values')

plt.plot(np.unique(Y_test), np.poly1d(np.polyfit(Y_test, Y_pred, 1))(np.unique(Y_test)))

plt.text(0.6, 0.5, 'R-squared = %0.2f' % r_squared)
plt.show()

Iamge

答案 1 :(得分:0)

首先使用scipy.stats.linregress生成回归模型:-

linreg = sp.stats.linregress(Y_test, Y_pred)

然后可以将回归线添加到您的绘图中:-

plt.plot(x, linreg.intercept + linreg.slope*y, 'r')

r平方值类似:-

plt.text(0, 1, linreg.rvalue)

答案 2 :(得分:0)

import numpy as np
import matplotlib.pyplot as plt

Y_test = np.random.rand(100) # Random Data
Y_pred = Y_test + np.random.rand(100)*0.1 # Random Data

r_squared = 0.59
plt.scatter(Y_test,Y_pred)
plt.xlabel('Actual values')
plt.ylabel('Predicted values')

plt.plot(np.unique(Y_test), np.poly1d(np.polyfit(Y_test, Y_pred, 1)) 
np.unique(Y_test)))

plt.text(0.6, 0.5, 'R\u00B2 = %0.2f' % r_squared)
plt.show()