回归模型不成功-python

Regression model not successful-python

我必须在 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

的频率图

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

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

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

例如 pandas:

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