机器学习__多项式回归

问题引入

import numpy as np
import sklearn.linear_model as lm
import sklearn.pipeline as pl
import sklearn.preprocessing as sp
import matplotlib.pyplot as mp

假设我们有如下数据:

train_x = np.array([1, 3, 4, 6, 9, 12, 18])
train_y = np.array([3, 7, 12, 15, 18, 20, 21])
train_x = train_x.reshape(-1, 1)
train_xx = np.linspace(train_x.min(), train_x.max(), 500).reshape(-1, 1)

在这里插入图片描述
我们通过线性拟合模型可以得到一条回归线:

model1 = lm.LinearRegression()
model1.fit(train_x, train_y)
pred_y1 = model1.predict(train_x)

在这里插入图片描述
我们发现, 回归直线的拟合程度不是很好.
通过观察, 我们容易直到, 这几个点更像是分布在一条曲线

多项式回归

我们假设多项式方程为: y = w0 + w1* x + w2 * x^2 + w3 * x^3 + ...

多项式回归的目的在于, 求得一组合适的w0, w1, w2, w3, ..., 使得多项式曲线能够较好地拟合数据.

为了更方便地解决多项式回归问题, 我们不妨设x1 = x, x2 = x^2, x3 = x^3… 于是乎, 我们把多项式回归问题转化成了线性回归问题.

model2 = pl.make_pipeline(
    sp.PolynomialFeatures(3),	#最高次数
    lm.LinearRegression()
)
model2.fit(train_x, train_y)
pred_y2 = model2.predict(train_x)

在这里插入图片描述

我们增大最高次项的次数, 将得到与训练数据拟合程度更高的曲线:

model2 = pl.make_pipeline(
    sp.PolynomialFeatures(10),
    lm.LinearRegression()
)
model2.fit(train_x, train_y)
pred_y2 = model2.predict(train_x)

在这里插入图片描述

我们发现, 得到的回归曲线似乎失去了一般性, 我们称这种现象为"过拟合"

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值