【Python机器学习】多项式回归、K近邻KNN回归的讲解及实战(图文解释 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~

多项式回归

非线性回归是用一条曲线或者曲面去逼近原始样本在空间中的分布,它“贴近”原始分布的能力一般较线性回归更强。

多项式是由称为不定元的变量和称为系数的常数通过有限次加减法、乘法以及自然数幂次的乘方运算得到的代数表达式。

多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式关系的回归分析方法。多项式回归模型是非线性回归模型中的一种。

由泰勒级数可知,在某点附近,如果函数n次可导,那么它可以用一个n次的多项式来近似。

假设确定了用一个一元n次多项式来拟合训练样本集,模型可表示如下:

那么多项式回归的任务就是估计出各θ值。

包括多项式回归问题在内的一些非线性回归问题可以转化为线性回归问题来求解,具体思路是将式中的每一项看作一个独立的特征(或者说生成新的特征),令y_1=x,y_2=x^2,…,y_n=x^n,那么一个一元n次多项式θ_0+θ_1x+θ_2x^2+…+θ_nx^n就变成了一个n元一次多项式θ_0+θ_1y_1+θ_2y_2+…+θ_ny_n,就可以采用线性回归的方法来求解。

示例:先拟定一个一元三次多项式作为目标函数,然后再加上一些噪声产生样本集,再用转化的线性回归模型来完成拟合,最后对测试集进行预测。

测试效果如下

 

 

 部分代码如下

def myfun(x):
    input:x(float):自变量
    output:函数值'''
    return 10 + 5 * x + 4 * x**2 + 6 * x**3

import numpy as np
x = np.linspace(-3,3, 7)
>>> array([-3., -2., -1.,  0.,  1.,  2.,  3.])
x_p = (np.linspace(-2.5, 2.5, 6)).reshape(-1,1) # 预测点
import random
y = myfun(x) + np.random.random(size=len(x)) * 100 - 50
y
>>> array([-136.49570384,   -8.98763646,  -23.33764477,   50.97656894,
         20.19888523,   35.76052266,  199.48378741])
from sklearn.preprocessing import PolynomialFeatures
featurizer_3 = PolynomialFeatures(degree=3)
x_3 = featurizer_3.fit_transform(x)
x_3
>>>array([[  1.,  -3.,   9., -27.],
       [  1.,  -2.,   4.,  -8.],
       [  1.,  -1.,   1.,  -1.],
       [  1.,   0.,   0.,   0.],
       [  1.,   1.,   1.,   1.],
       [  1.,   2.,   4.,   8.],
       [  1.,   3.,   9.,  27.]])

局部回归

前述的回归模型,假设所有样本之间都存在相同程度的影响,这类模型称为全局模型。在机器学习中,还有另一种思想:认为相近的样本相互影响更大,离的远的样本相互影响很小,甚至可以不计。这种以“远亲不如近邻”思想为指导得到的模型称为局部模型。局部思想在聚类、回归、分类等机器学习任务中都有应用,聚类算法中的DBSCAN算法就是以这种思想为指导的模型。

用于回归的局部模型有局部加权线性回归模型、K近邻模型和树回归模型等。

局部加权线性回归(Locally Weighted Linear Regression,LWLR)模型根据训练样本点与预测点的远近设立权重,离预测点越近的点的权重就越大。局部加权线性回归方法不形成固定的模型,对每一个新的预测点,都需要计算每个样本点的权值,在样本集非常大的时候,预测效率较低。

K近邻法(K-nearest neighbor, KNN)

是一种简单而基本的机器学习方法,可用于求解分类和回归问题。

应用K近邻法求解回归问题,需要先指定三个要素:样本间距离度量方法d(∙)、邻居样本个数k和根据k个邻居样本计算标签值方法v(∙)。

设样本集为S={s_1,s_2,…,s_m}包含m个样本,每个样本s_i=(x_i,y_i)包括一个实例x_i和一个实数标签值y_i。测试样本记为x。

K近邻法用于回归分为两步:

1)根据d(∙),从S中找出k个距离x最近的样本,即得到x的邻域N_k(x);

2)计算v(N_k(x))得到x的标签值

d(∙)常用欧氏距离。v(∙)常用求均值函数、线性回归模型和局部加权线性回归模型。

应用K近邻法求解分类问题,只需将三要素中的计算标签值的方法改为计算分类标签的方法即可。计算分类标签的方法常采用投票法。

创作不易 觉得有帮助请点赞关注收藏~~~

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一. 课程介绍本课程结合Python进行统计与数据分析的原理讲解实战,涵盖了大部分统计&数据分析模型,特别是当前比较主流的算法:参数估计、假设检验、线性回归、广义线性回归、Lasso、岭回归、广义可加模型、回归样条等;机器学习经常用到的主成分分析、因子分析、典型相关分析、聚类分析等;各种非参数统计模型,包括非参数统计推断、尺度推断、位置推断、非参数核密度估计、非参数回归等。本课程主要针对有一定Python编程基础、即将毕业参加工作的的大三大四学生,或者已经参加工作需要提升自己数据分析能力以及转行从事IT行业尤其是数据&大数据分析工作的初入职场者,或者正在攻读硕博士学位需要学习和掌握量化研究方法的研究生。本课程对于即将从事机器学习、深度学习&人工智能相关工作的程序员也有很大帮助,有利于打好坚实的理论基础。二. 课程目录第0章 课程导学第1章 数据描述性分析1.1 描述统计量1.2 数据的分布1.3 概率分布函数的图形1.4 直方图、经验分布函数与QQ图1.5 多元数据的数据特征与相关性分析1.6 多元数据的基本图形表示第2章 参数估计2.1 点估计2.2 区间估计第3章 假设检验3.1 基本原理3.2 参数检验第4章 回归分析4.1 回归分析的概念与一元线性回归4.2 多元线性回归及统计量解析4.3 逐步回归与模型选择4.4 回归诊断4.5 广义线性回归4.6 非线性回归第5章 方差分析5.1 单因素方差分析5.2 双因素方差分析第6章 判别分析与聚类分析6.1 判别分析6.2 聚类分析第7章 主成分分析、因子分析与典型相关分析7.1 主成分分析7.2 因子分析7.3 典型相关分析第8章 非参数统计8.1 经验分布和分布探索8.2 单样本非参数统计推断8.3 两独立样本的位置与尺度判断8.4 多组数据位置推断8.5 分类数据的关联分析8.6 秩相关与分位数回归8.7 非参数密度估计8.8 一元非参数回归三. 讲师简介主讲人李进华博士,本、硕、博皆就读于武汉大学信息管理学院,2005年获博士学位进入211高校任教,2012年受聘为教授。从事信息管理与数据分析方面的教学、科研与系统开发工作20余年,具备深厚理论修养和丰富实战经验。是中国最早从事Java开发的程序员和Oracle数据库的DBA之一。曾带领团队开发《葛洲坝集团三峡工程指挥中心三期工程施工管理系统》、《湖北省财政厅国有企事业单位资产管理系统》等大型MIS。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

showswoller

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值