Python:在拟合模型上绘制残差

Kos*_*dis 3 python matplotlib

我想绘制数据点和估计模型之间的线(残差;青色线)。目前,我通过迭代收入中的所有数据点pandas.DataFrame并添加垂直线来这样做。xy是点的坐标,predicted是预测(这里是蓝线)。

plt.scatter(income["Education"], income["Income"], c='red')
plt.ylim(0,100)

for indx, (x, y, _, _, predicted) in income.iterrows():
    plt.axvline(x, y/100, predicted/100) # /100 because it needs floats [0,1]
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法?对于超过几行,这似乎不是一个好方法。

在此处输入图片说明

Imp*_*est 6

首先请注意,axvline这里只是巧合。通常,y由 取的值axvline是相对于轴的坐标,而不是数据坐标。

相比之下,vlines使用数据坐标并且还具有接受值数组的优势。然后它会创建一个LineCollection,这比单独的行更有效。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1.2,1.2,20)
y = np.sin(x)
dy = (np.random.rand(20)-0.5)*0.5

fig, ax = plt.subplots()
ax.plot(x,y)
ax.scatter(x,y+dy)

ax.vlines(x,y,y+dy)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明