线性回归线拟合报错:操作数无法广播,形状不匹配
解决3D绘图中最佳拟合线的形状不匹配问题
问题根源
你当前的x_fit和y_fit是1000个均匀分布的点,但z_fit是基于原始75个features预测得到的,两者长度不一致,导致plot3D无法完成广播匹配,抛出形状不兼容的错误。
修复方案
要生成和x_fit/y_fit长度一致的z_fit,需要用新的拟合点构造对应输入特征,再传给模型预测:
修改后的代码
# Plot Curve Fit x_fit = np.linspace(0,21,1000) y_fit = x_fit # 构造与x_fit/y_fit对应的新特征矩阵 # 假设原始features是二维数组,每一行结构为[x, y] fit_features = np.column_stack((x_fit, y_fit)) # 用新特征预测对应z值 z_fit = model.predict(fit_features) fig=plt.figure(figsize=[15,15]) ax1=fig.add_subplot(2,2,1, projection='3d') ax1.set_xlabel('x', c='r', size=12) ax1.set_ylabel('y', c='r', size=12) ax1.set_zlabel('z', c='r', size=12) # 此时x_fit、y_fit、z_fit均为(1000,),可正常绘制拟合线 ax1.plot3D(x_fit, y_fit, z_fit, 'gray') ax1.view_init(0,90) ax1.scatter3D(xdata, ydata, zdata, c=zdata, cmap='jet')
关键说明
np.column_stack((x_fit, y_fit))会把两个一维数组拼接成1000行2列的特征矩阵,和原始features的结构保持一致,确保模型能正确预测。- 如果你的模型输入特征并非
[x,y]的结构,需要根据实际特征构造逻辑调整fit_features,比如包含其他特征时,要对应生成这些特征的拟合值。
内容的提问来源于stack exchange,提问作者Christian Armstrong
相关产品推荐
相关产品推荐

