【问题标题】:Residual plot for residual vs predicted value in PythonPython中残差与预测值的残差图
【发布时间】:2020-10-22 04:04:47
【问题描述】:

我运行了一个 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)

【问题讨论】:

    标签: python machine-learning scikit-learn data-science


    【解决方案1】:

    残差只是您的预测值与实际值的差异。因此,它被计算为实际值 - 预测值。在您的情况下,它是 residuals = y_test-y_pred。现在的情节,就用这个;

    import matplotlib.pyplot as plt
    
    plt.scatter(residuals,y_pred)
    
    plt.show()
    

    【讨论】:

    • 法线散射显示我想要的。那为什么要使用 regplot 或 residplot 呢?其中三个做不同的事情。
    • 是的,这三个是不同的。您可能知道,plt.scatter() 为您提供了一种简单的方法来绘制通常在两个变量之间的图形。就像我们在学校绘制图表一样,它只是绘制 x 和 y 的图表。而 seaborn.residplot() 是一个更高级的东西,它直接通过直接将预测/输入变量和响应/输出变量作为参数来绘制残差,您不必自己计算残差。 seaborn.regplot() 绘制最佳拟合回归线以及所有数据点,它不会像 seaborn.residplot() 那样绘制残差
    • 你可以在这里更好地理解它们:seaborn.pydata.org/generated/…seaborn.pydata.org/generated/…
    • 感谢您抽出时间来回答。现在很清楚了:)
    • 快乐编码:D
    【解决方案2】:

    问题是什么?残差只是y_test-y_pred。现在使用seaborn's regplot.

    【讨论】:

    • residual = y_pred - y_validate sns.regplot(x = residual, y = y_pred, data = None, scatter = True, color = 'red') 这样可以吗?
    • @nl7 应该没问题,看起来怎么样?
    • sns.regplot(x = y_pred, y = residual, data = None, scatter = True, color = 'red') y 上的残差?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2021-06-04
    • 1970-01-01
    • 2015-04-06
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多