回归模型不成功-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
无法从您给出的情节中捕捉到 price
和 energyrating
之间的关系,因为 price
不会单调减少或增加 energyrating
增加。我建议你包括一个 energyrating
的二次项,即添加一个 energyrating * energyrating
的新列,或者其他你认为合理的高阶变换。
如果您被允许使用除 linear regression
以外的其他模型,我建议您只对每个 energyrating
(它与您的绘图是离散的)bin 和绘图平均 price
曲线,我认为会更好。
例如 pandas:
avg = df.groupby("energyrating")['price'].mean()
avg.plot()
我必须在 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
无法从您给出的情节中捕捉到 price
和 energyrating
之间的关系,因为 price
不会单调减少或增加 energyrating
增加。我建议你包括一个 energyrating
的二次项,即添加一个 energyrating * energyrating
的新列,或者其他你认为合理的高阶变换。
如果您被允许使用除 linear regression
以外的其他模型,我建议您只对每个 energyrating
(它与您的绘图是离散的)bin 和绘图平均 price
曲线,我认为会更好。
例如 pandas:
avg = df.groupby("energyrating")['price'].mean()
avg.plot()