Python中用于残差与预测值的残差图

8

我已经运行了一个KNN模型。现在我想绘制残差与预测值图。每个不同网站的示例都显示我首先必须运行线性回归模型。但我不知道该如何操作。有人能帮忙吗?先谢谢了。 这是我的模型-

train, validate, test = np.split(df.sample(frac=1), [int(.6*len(df)), int(.8*len(df))])
x_train = train.iloc[:,[2,5]].values
y_train = train.iloc[:,4].values
x_validate = validate.iloc[:,[2,5]].values
y_validate = validate.iloc[:,4].values
x_test = test.iloc[:,[2,5]].values
y_test = test.iloc[:,4].values
clf=neighbors.KNeighborsRegressor(n_neighbors = 6)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_validate)
2个回答

6

残差指的是预测值与实际值之间的差异,计算公式为实际值减去预测值。在您的情况下,计算公式为residuals = y_test-y_pred。绘图时,只需要使用这个公式即可。

import matplotlib.pyplot as plt

plt.scatter(residuals,y_pred)

plt.show()

正常散点图展示了我想要的内容。那么为什么要使用regplot或residplot呢?这三个函数各自有不同的作用。 - ni7
1
是的,这三个是不同的。plt.scatter(),你可能知道,它提供了一种简单的方法来绘制通常在两个变量之间的图形。就像我们在学校里绘制图表一样,它只是绘制x和y的图表。而seaborn.residplot()则更为先进,它直接以预测/输入变量和响应/输出变量作为其参数,直接绘制残差,您不必自己计算残差。而seaborn.regplot()则绘制最佳拟合回归线以及所有数据点,它不像seaborn.residplot()那样绘制残差。 - ajay sagar
您可以在此处更好地理解它们:https://seaborn.pydata.org/generated/seaborn.regplot.html#seaborn.regplot https://seaborn.pydata.org/generated/seaborn.residplot.html#seaborn.residplot - ajay sagar
感谢你抽出时间来回答。现在我明白了 :) - ni7
愉快地编程 :D - ajay sagar

3
什么是问题?残差简单地表示为y_test-y_pred。现在使用seaborn的regplot

残差 = 预测值 - 验证值 sns.regplot(x = 残差, y = 预测值, data = None, scatter = True, color = 'red') 这样可以吗? - ni7
1
@nl7应该没问题,看起来怎么样? - Igor Rivin
sns.regplot(x=y_pred, y=residual, data=None, scatter=True, color='red') y 上的残差? - Nosey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接