二次回归可视化图表异常,排序X值修复后原理咨询
二次回归绘图锯齿问题解析
我的二次回归代码如下:
import pandas as pd import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression model =LinearRegression() data =pd.read_csv("Regression.csv") data['X^2'] =data['X']**2 print(data.head()) y =data['Y'].values X =data.drop('Y',axis=1).values print(X) model.fit(X,y) print(model.score(X,y)) predicted =model.predict(X) plt.scatter(data['X'],data['Y']) plt.plot(X[:,0],predicted) plt.show()
模型得分高达0.9999827518179073,但绘制X与Y的回归关系图时图表呈锯齿状,效果很差,我期望得到类似Excel生成的平滑回归图表。添加代码data = data.sort_values("X")后,图表恢复正常,想请教该操作有效的原因。
原因解析
- 原始数据中的X值是乱序的,
plt.plot()函数是按照数据在数组中的原始顺序依次连接坐标点的。如果X值忽大忽小,对应的预测点连线就会在X轴上来回跳转,形成锯齿状线条。 data.sort_values("X")会将数据集按X值从小到大重新排序,此时X是连续递增的顺序,对应的预测值也会和有序的X一一对应。plt.plot()按这个顺序连接点时,就是顺着X轴从左到右平滑绘制,自然得到和Excel一样的平滑回归曲线。- 补充说明:线性回归(包括二次回归这类基于线性回归扩展的多项式回归)的拟合过程不依赖样本顺序,只关注特征与标签的对应关系,所以排序后模型的得分不会受到影响,仅改变了绘图时的点连接顺序。
内容的提问来源于stack exchange,提问作者AI ML
相关产品推荐
相关产品推荐

