【问题标题】:Regression model not successful-python回归模型不成功-python
【发布时间】:2021-05-17 01:31:36
【问题描述】:

我必须在 python 中创建一个回归模型

能源评级与。价格,看看能源等级是否取决于价格。

这里,是下面的数据集和代码,

import statsmodels.formula.api as smf

# Initialise and fit linear regression model using `statsmodels`
model = smf.ols('price ~ energyrating', data=df)

model = model.fit()

我得到的参数是一个负数,这可能是图表不好的原因,但不知道如何改进。

model.params
#price=2.004943e+06 + (-.913381e+05)*energyrating

Intercept       2.004943e+06
energyrating   -3.913381e+05
dtype: float64

并创建不成功的最终模型,

# Predict values
pred = model.predict()

# Plot regression against actual data
plt.figure(figsize=(12, 6))
plt.plot(df['energyrating'], df['price'], 'o')           # scatter plot showing actual data
plt.plot(df['energyrating'], pred, 'r', linewidth=2)   # regression line
plt.xlabel('Energy ratings')
plt.ylabel('Price')
plt.title('Energy ratings Vs. Price')

plt.show()

我该如何改进呢?数据是否不稳定或我遗漏了任何逻辑错误?

提前致谢

编辑:

energy rating的频率图

这就是能量等级的变化方式。

【问题讨论】:

  • energyrating 列的值是否都等于3.9?如果是这种情况,您将找不到 eneryratingprice 之间的关系。
  • 不,所有值都不是。我会显示它的频率图请检查上面的答案

标签: python machine-learning regression


【解决方案1】:

我猜一个简单的linear regression 无法从您给出的图中捕获priceenergyrating 之间的关系,因为priceenergyrating 增加时不会单调减少或增加。我建议你包含一个二次项energyrating,即添加一个新列energyrating * energyrating,或者你认为合理的其他高阶变换。

如果您被允许使用linear regression 以外的其他模型,我建议您将price 平均到每个energyrating(它与您的绘图是离散的)bin 并绘制曲线,我认为这将是更好。

例如在熊猫中:

avg = df.groupby("energyrating")['price'].mean()
avg.plot()

【讨论】:

  • 是的。我被允许使用其他模型。 “只是平均每个能源等级的价格”我该怎么做。?谢谢
  • 我没听懂那句话
  • @kirti purohit 你知道pandas怎么用吗?
  • 是的,我每天都用它
  • 编辑了答案以包含一个简单的示例。 @kirti purohit
猜你喜欢
  • 2020-05-03
  • 1970-01-01
  • 2019-10-13
  • 2023-04-03
  • 2018-12-25
  • 2017-04-06
  • 2019-10-09
  • 2022-07-08
  • 2015-05-25
相关资源
最近更新 更多