【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**3import 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近邻法求解分类问题,只需将三要素中的计算标签值的方法改为计算分类标签的方法即可。计算分类标签的方法常采用投票法。
创作不易 觉得有帮助请点赞关注收藏~~~
【Python机器学习】多项式回归、K近邻KNN回归的讲解及实战(图文解释 附源码)相关推荐
- 【Python机器学习】层次聚类AGNES、二分K-Means算法的讲解及实战演示(图文解释 附源码)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 层次聚类 在聚类算法中,有一类研究执行过程的算法,它们以其他聚类算法为基础,通过不同的运用方式试图达到提高效率,避免局部最优等目的,这类算法主要有 ...
- Python爬虫鲁迅先生《经典语录》保存到Excel表格(附源码)
Python爬虫鲁迅先生<经典语录>保存到Excel表格(附源码) 前言 今天用Python 爬取鲁迅先生<经典语录>,直接开整~ 代码运行效果展示 开发工具 Python版本 ...
- 【Python机器学习】聚类算法任务,评价指标SC、DBI、ZQ等系数详解和实战演示(附源码 图文解释)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.聚类任务 设样本集S={x_1,x_2,-,x_m}包含m个未标记样本,样本x_i=(x_i^(1),x_i^(2),-,x_i^(n))是一 ...
- AI实战!开源一个机器学习/情感分析实战项目(附源码/教程)|湾区人工智能...
分享一个在公司做的机器学习文本分类项目的demo,该分类项目是一个通用的文本分类项目,这里的数据集我酒店用户评价数据,分类模型为二分类,正面评价和负面评价,这里所说的通用,就是你可以根据你自己的数据, ...
- 【敬初学者】Python基础学完了,该怎么知道自己学的怎么样呢?十个经典实战小项目附源码
前言 1.街霸游戏 1.1 KO街霸 程序完整源码 程序的输出界面 1.2 春丽VS巴洛克 参考源码 2.猜谜游戏 2.1简单的猜数字游戏 项目要求 参考源码 2.2 进阶的猜姓名游戏 项目要求 参考 ...
- c iostream.源码_通达信《K线上画趋势线预警》精选指标(附源码)
通达信<K线上画趋势线预警>精选指标 K线上画趋势线预警源码: N:=5; MA5:=EMA(C,5)COLORWHITE; MA13:=EMA(C,13)COLORCYAN; MA21: ...
- 100个Python实战项目(附源码),练完即可就业,从入门到进阶
前言: "读"代码是不能给你带来任何收益的,正如"读书"一样,如果在读的时候你不琢磨,保管你读完仨月准忘了一大半.真正需要的是去"试"代码, ...
- 【Python游戏】Python基于pygame实现的人机大战的斗兽棋小游戏 | 附源码
前言 有粉丝说要我出一期Python版本的斗兽棋,今天宠粉狂魔的我不就来啦!! 虽然是一个简单的小游戏,但是对于新手小伙伴来说还是有一定的小难度的哟!要是不理解都可以找到小编的哈!! 相关文件 关注小 ...
- Python一键获取某排名第一的手游,所有英雄皮肤(附源码)
目录 最近总是有老妹喊我打王者带她们上分,但是我吧不经常玩,有哪些皮肤,叫什么名字,长啥样都不知道,万一妹妹问起来答不上岂不是很尴尬! 这不得先把功课做足了,于是我用Python把这些皮肤全部给爬下来 ...
最新文章
- java常用的集合对象_java常用实体类、集合类
- php 计算字符串相邻最大重复数_php查找字符串出现次数的方法
- 4、线程范围内的数据共享之ThreadLocal
- windows 2008 server 各版本功能差异
- CentOS7.6安装WirёGuαrd(一)
- 相机标定(五)—— 相机模型详细介绍
- Orchard 之:Widget,兼看 Layer 在权限控制中的作用
- laravel validate
- c语言对c99标准声明,C语言三大标准C89,C99和C11
- matlab怎么排序数组,如何在MATLAB中排序结构数组?
- 分布式数据同步工具之DataX Web的基本使用
- 电脑没有“立体声混音”设备怎么办,虚拟声卡安装教程
- 2304558-25-4,DBCO-PEG2-acid分子量是464.5的小分子PEG试剂带有PEG连接物和DBCO基团
- CentOS6.5的安装及本地源的配置
- [TypeScript]中字符和ASCII码转换
- 李开复建议:想创业的青年先去小公司磨练
- 完全二叉树 满二叉树
- cmos sensor (图像传感器) CSI接口
- 解码百度核心:移动的无色墙,AI的无形剑
- 老婆为什么是别人的好?
热门文章
- Java NIO epoll 空转问题 + Netty 解决方法
- Mac Idea使用技巧
- android跳转到淘宝详情页的小demo
- bonjour browser 下载
- JavaScript常用事件详解
- macbook m1的ffmpeg安装
- 【Python小游戏】某程序员将套圈游戏玩儿到了巅峰,好嗨哟~Pygame代码版《牛牛套圈》已上线,大人的套圈游戏太嗨了,小孩勿进。
- Linux实现生产者消费者模型
- Dva.js+umi入门案例(models层,services层,components层详细代码与解析)
- c语言时间等待函数linux,常用C语言time时间函数