博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多项式回归
阅读量:5456 次
发布时间:2019-06-15

本文共 1791 字,大约阅读时间需要 5 分钟。

多项式回归

若希望回归模型更好的拟合训练样本数据,可以使用多项式回归器。

一元多项式回归

y=w0 + w1 x + w2 x2 + w3 x3 + ... + wd xd

将高次项看做对一次项特征的扩展得到:

y=w0 + w1 x1 + w2 x2 + w3 x3 + ... + wd xd

那么一元多项式回归即可以看做为多元线性回归,可以使用LinearRegression模型对样本数据进行模型训练。

所以一元多项式回归的实现需要两个步骤:

  1. 将一元多项式回归问题转换为多元线性回归问题(只需给出多项式最高次数即可)。

  2. 将1步骤得到多项式的结果中 w1 w2 .. 当做样本特征,交给线性回归器训练多元线性模型。

使用sklearn提供的数据管线实现两个步骤的顺序执行:

import sklearn.pipeline as plimport sklearn.preprocessing as spimport sklearn.linear_model as lmmodel = pl.make_pipeline(    sp.PolynomialFeatures(10),  # 多项式特征扩展器    lm.LinearRegression())      # 线性回归器

案例:

import numpy as npimport sklearn.pipeline as plimport sklearn.preprocessing as spimport sklearn.linear_model as lmimport sklearn.metrics as smimport matplotlib.pyplot as mp# 采集数据x, y = np.loadtxt('../data/single.txt', delimiter=',', usecols=(0,1), unpack=True)x = x.reshape(-1, 1)# 创建模型(管线)model = pl.make_pipeline(    sp.PolynomialFeatures(10),  # 多项式特征扩展器    lm.LinearRegression())      # 线性回归器# 训练模型model.fit(x, y)# 根据输入预测输出pred_y = model.predict(x)test_x = np.linspace(x.min(), x.max(), 1000).reshape(-1, 1)pred_test_y = model.predict(test_x)mp.figure('Polynomial Regression', facecolor='lightgray')mp.title('Polynomial Regression', fontsize=20)mp.xlabel('x', fontsize=14)mp.ylabel('y', fontsize=14)mp.tick_params(labelsize=10)mp.grid(linestyle=':')mp.scatter(x, y, c='dodgerblue', alpha=0.75, s=60, label='Sample')mp.plot(test_x, pred_test_y, c='orangered', label='Regression')mp.legend()mp.show()

过于简单的模型,无论对于训练数据还是测试数据都无法给出足够高的预测精度,这种现象叫做欠拟合。

过于复杂的模型,对于训练数据可以得到较高的预测精度,但对于测试数据通常精度较低,这种现象叫做过拟合。

一个性能可以接受的学习模型应该对训练数据和测试数据都有接近的预测精度,而且精度不能太低。

训练集R2   测试集R20.3        0.4        欠拟合:过于简单,无法反映数据的规则0.9        0.2        过拟合:过于复杂,太特殊,缺乏一般性0.7        0.6        可接受:复杂度适中,既反映数据的规则,同时又不失一般性

 

转载于:https://www.cnblogs.com/maplethefox/p/11526367.html

你可能感兴趣的文章
[Operating System] {ud923} P3L1: Scheduling
查看>>
java后端发送http请求使用RestTemplate
查看>>
避免商品超卖的4种方案
查看>>
AtCoder - 1999 Candy Piles
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>
【最短路】Vijos P1022Victoria的舞会2
查看>>
(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 线性回归分析算法)...
查看>>
调整Tomcat的并发线程到5000+
查看>>
[Typescript 2] Nullable Types - Avoiding null and undefined Bugs
查看>>
[Javascirpt AST] Babel Plugin -- create new CallExpression
查看>>
_itemmod_strengthen_item
查看>>
UVa 10622 (gcd 分解质因数) Perfect P-th Powers
查看>>
hibernate SQL聚合查询
查看>>
【BZOJ4278】[ONTAK2015]Tasowanie 后缀数组
查看>>
【BZOJ2045】双亲数 莫比乌斯反演
查看>>
【CF772D】Varying Kibibits FWT
查看>>
微信网页授权调试
查看>>
不要有这样的思维定势
查看>>
十万个为什么 —— 自然的好奇
查看>>
指针应用时的注意事项
查看>>