Python线性回归绘图报错:ValueError维度不匹配问题求助
解决线性回归绘图时的维度不匹配错误
嗨,我看到你在绘制线性回归拟合线的时候遇到了维度不匹配的问题,咱们一步步来解决它!
首先看报错信息,已经把问题说得很清楚了:
ValueError: x and y must have same first dimension, but have shapes (10, 1) and (1, 1)
你的x轴数据(linear_x)是包含10个样本的数组,但传给plt.plot()的y轴数据却只有1个值,两者长度不匹配,Matplotlib自然没法画出一条完整的直线。
问题根源在哪行?
就是这行代码出了问题:
plt.plot(linear_x,linear_regression.predict([[1800]]),color='blue')
predict([[1800]])只会返回x=1800这单个值对应的预测结果,而你需要的是所有x值对应的回归预测值,这样才能和linear_x一一对应,画出完整的拟合直线。
修正方案
把这行代码改成:
plt.plot(linear_x, linear_regression.predict(linear_x), color='blue')
linear_regression.predict(linear_x)会生成和linear_x长度完全一致的预测y值,维度匹配后就能正常绘制拟合直线了。
完整修正后的代码
linear_regression = lm.LinearRegression() linear_x = data.Luas.values.reshape(-1,1) linear_y = data.Harga.values.reshape(-1,1) linear_regression.fit(linear_x,linear_y) print("Intercept = ",linear_regression.intercept_) print("Coefisien = ",linear_regression.coef_) print("Persamaan menggunakan fungsi Linear Regression :") print("Y=",linear_regression.intercept_,"+",linear_regression.coef_,"X") print("Prediksi Luas Tanah (X) = 1800") print("Maka:") result = linear_regression.predict([[1800]]) print("Harga Tanah(Y) = ",result,"jt") plt.scatter(linear_x,linear_y,color='black') # 修正后的拟合直线绘制代码 plt.plot(linear_x, linear_regression.predict(linear_x), color='blue') plt.title('Luas Tanah/Area VS Harga/Price') plt.ylabel('Harga Tanah/Price (jt)') plt.xlabel('Luas Tanah/Area') plt.show()
额外小技巧(可选)
如果你想在图上突出标记x=1800的预测点,可以在plt.show()之前加一行代码:
plt.scatter(1800, result, color='red', marker='*', s=100)
这样就能用红色星号把这个预测点显眼地标注出来啦~
内容的提问来源于stack exchange,提问作者Thoriqul Umar
相关产品推荐
相关产品推荐

