You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多变量回归3D拟合线绘制报错求助:Line3D无_verts3d属性

解决多变量回归3D拟合线绘制报错问题

我来帮你拆解这两个错误的根源,其实都是代码里的小细节没注意到——一个是笔误,另一个是数据维度不匹配导致的,一步步来解决:

错误原因分析

1. 隐藏的变量名笔误

你代码里先定义了z_cord和z_cod,但后面合并的时候却写了s = y_cord.add(y_cod, fill_value=0)——这里的y_cord和y_cod根本没定义!虽然你说注释掉plot3D后散点图能正常显示,可能是你实际运行时的笔误,但这是第一个要修正的点,必须把y_cord和y_cod改成z_cord和z_cod,否则会触发NameError。

2. plot3D的输入数据维度不匹配(核心错误)

ax.plot3D()要求输入的x、y、z必须是一维数组(比如pandas Series或者numpy一维数组),但你用train_engine[['ENGINESIZE']]这种双括号写法返回的是二维DataFrame,这就直接触发了ValueError: input operand has more dimensions than allowed by the axis remapping;而这个维度错误又导致生成的Line3D对象不符合库的预期,进而引发后续的AttributeError: 'Line3D' object has no attribute '_verts3d'。

修正后的完整代码

我还帮你简化了z值的计算(去掉低效的循环,改用pandas向量运算),同时修正了数据维度问题:

# 简化并修正z值的计算:直接用向量运算,避免循环
z = regr.coef_[0][0] * train_engine['ENGINESIZE'] + regr.coef_[0][1] * train_engine['FUELCONSUMPTION_CITY'] + regr.intercept_

fig = plt.figure()
ax = fig.gca(projection='3d')

# 散点图:改用单括号取Series(一维),更规范
ax.scatter(data['ENGINESIZE'], data['FUELCONSUMPTION_CITY'], co2_data)

# plot3D用一维数据:单括号取Series即可
x = train_engine['ENGINESIZE']
y = train_engine['FUELCONSUMPTION_CITY']
ax.plot3D(x, y, z, color='red')

plt.show()

额外小技巧

如果你习惯用双括号取DataFrame,也可以用.values.ravel()或者.squeeze()把二维数据转成一维,比如:

x = train_engine[['ENGINESIZE']].values.ravel()

内容的提问来源于stack exchange,提问作者Lord Cinders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:14:43