第六章 线性回归的拓展 - 多项式回归

0 绘图函数

Jupyter中文字体显示

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname=r"/usr/share/fonts/truetype/wqy/wqy-zenhei.ttc", size=16) 

def runplt():
    plt.figure()# 定义figure
    plt.title(u'披萨的价格和直径',fontproperties=font_set)
    plt.xlabel(u'直径(inch)',fontproperties=font_set)
    plt.ylabel(u'价格(美元)',fontproperties=font_set)
    plt.axis([5, 20, 5, 20]) # 坐标轴
    plt.grid(True) # 网格线
    return plt

1 生成数据

import numpy as np

X_train = np.array([6, 8, 10, 14, 18])
y_train = np.array([7, 9, 13, 17.5, 18])

M1 = np.vstack((np.ones_like(X_train), X_train)).T # 增加一行1,并转置
M2 = np.vstack((np.ones_like(X_train), X_train, X_train**2)).T
M3 = np.vstack((np.ones_like(X_train), X_train, X_train**2, X_train**3)).T

X_train

y_train

np.ones_like(X_train)

M1

在这里插入图片描述

2 拟合模型

import statsmodels.api as sm

res_1 = sm.OLS(y_train, M1).fit()
res_2 = sm.OLS(y_train, M2).fit()
res_3 = sm.OLS(y_train, M3).fit()

Linear
在这里插入图片描述

Quadratic polynomial
在这里插入图片描述

二次项回归优于线性回归

Cubic polynomial
在这里插入图片描述

三次项回归AIC大于二次项回归的AIC

AIC

statsmodels.api res_1.summary() res_1.summary2() 有和不同???

print(res_1.summary2())

在这里插入图片描述

3 画图

计算拟合值

y1_fitted = res_1.fittedvalues
y2_fitted = res_2.fittedvalues
y3_fitted = res_3.fittedvalues

原始数据散点图

plt = runplt()
plt.scatter(X_train, y_train, c='b', label='Data')
plt.legend()

在这里插入图片描述

3.1 Linear

plt = runplt()
plt.scatter(X_train, y_train, c='b', label='Data')
plt.plot(X_train, y1_fitted, 'g-', label='Linear')
plt.legend()

在这里插入图片描述

3.2 Quadratic polynomial

plt = runplt()
plt.scatter(X_train, y_train, c='b', label='Data')
plt.plot(X_train, y2_fitted, 'y--', label='Quadratic polynomial')
plt.legend()

在这里插入图片描述

3.3 Cubic polynomial

plt = runplt()
plt.scatter(X_train, y_train, c='b', label='Data')
plt.plot(X_train, y3_fitted, 'r:', label='Cubic polynomial')
plt.legend()

在这里插入图片描述

3.4 综合比较

plt = runplt()
plt.scatter(X_train, y_train, c='b', label='Data')
plt.plot(X_train, y1_fitted, 'g-', label='Linear')
plt.plot(X_train, y2_fitted, 'y--', label='Quadratic polynomial')
plt.plot(X_train, y3_fitted, 'r:', label='Cubic polynomial')
plt.legend()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值