【问题标题】:Plotting 3D graph for multi-variable regression为多变量回归绘制 3D 图
【发布时间】:2019-12-21 20:03:45
【问题描述】:

我想使用以下数据绘制带有平面的 3D 图形:

这是数据框的代码:

df_dict = {'area':[2600, 3000, 3200, 3600, 4000, 4100], 
'bedrooms':[3.0, 4.0, 4.0, 3.0, 5.0, 6.0],
'age':[20, 15, 18, 30, 8, 8], 
'price':[550000, 565000, 610000, 595000, 760000, 810000]}

df = pd.DataFrame(df_dict)

这些值存储在 pandas 的 DataFrame 中。

另外,等式是:

面积x1,卧室x2,年龄x3。

  • m1 是 112,m2 是 23388,m3 是 -3231
  • b 是 221323

我只能做到以下几点:

fig = plt.figure(figsize=(12, 8))

ax = fig.add_subplot(111, projection='3d')

ax.scatter(df['area'], df['bedrooms'], df['age'], c='r', marker='o')

ax.set_xlabel('area')
ax.set_ylabel('bedrooms')
ax.set_zlabel('age')

plt.show()

即使这样看起来也不对。如何使用方程式正确绘制平面?

【问题讨论】:

  • 您可以将一些示例数据作为数据框而不是图像发布吗?另外,你希望飞机如何表现?它应该是一个试图接近这些点的平面吗?还是应该是一个与所有点相交的曲面?
  • 数据是从 .csv 文件加载的,但我会提供一些代码来创建数据框。
  • 飞机应该按照给定的方程正常运行。
  • 请提供 csv 文件,以便提供足够大的数据集以供使用。我将向您展示两种方法。
  • @sentence:这就是我实际拥有的所有数据,您可以随意生成随机值来扩展它。

标签: python pandas matplotlib regression


【解决方案1】:

您希望绘制的回归方程实际上有 3 个预测变量和 1 个目标变量。绘制price 需要另一个轴,即在 4d 中绘制。这个在 3d 中绘制平面的简化版本可能是一个很好的起点

from mpl_toolkits import mplot3d
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

def f(area, bedrooms):
    return(112*area + 23388*bedrooms + 221323)

n = 6
area = np.linspace(2600, 4100, n)
bedrooms = np.linspace(3, 6, n)

X1, X2 = np.meshgrid(area, bedrooms)
Z = f(X1, X2)

fig = plt.figure(figsize = (12, 8))

ax = plt.axes(projection='3d')
ax.plot_surface(X1, X2, Z, rstride=1, cstride=1, cmap='viridis', edgecolor='none')
ax.set_xlabel('area')
ax.set_ylabel('bedrooms')
ax.set_zlabel('price')
ax.set_title('surface')

【讨论】:

  • 事实上,您确实有意丢弃了年龄特征,这对于 OP 来说似乎同样重要。您应该指定您的设计选择,这是一种礼貌但绝对不完整的尝试,以满足作者的要求。
  • 放弃其中一个特征是绘制 3d 平面所必需的;我随意选择了年龄。由于最初的要求并不可行,我的设计选择当然受到了限制。
  • 我不知道为什么它需要 4D。 “价格”列是用于多变量回归模型的标记数据。飞机必须经过给定的点(面积、卧室和年龄)。
  • @user963241 好吧,如果我们考虑一维线 y=mx+c 需要 2 个轴来绘制(x 和 y),而二维平面 y=mx1+mx2+c 需要 3 个轴(x、y 和 z ),然后再添加一个变量将需要多一个轴,如果您关注我的话。
  • @user963241 不一定不可能,但也可能不是您的想法。我推荐的可能是制作我上面描述的三个图:比较area, bedrooms, pricearea, age, price 然后bedrooms, age, price。这将让您了解每个预测变量与目标变量的外观。
猜你喜欢
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 2021-12-20
  • 2019-10-05
  • 2021-01-21
  • 2022-01-25
  • 1970-01-01
相关资源
最近更新 更多