学习笔记: 机器学习经典算法-多项式回归

简介: 机器学习经典算法-个人笔记和学习心得分享

多元线性回归分析 基于数据间存在线性关系的前提假设进行数据的建模和回归分析,但在实际应用场景中很少有能够满足具有强线性关系特点的数据集,更多地是表现出 非线性关系 的数据。多项式回归 方法基于线性回归的处理逻辑提出,主要应用于非线性关系数据的 回归预测任务。

1、算法基本过程

在线性回归中模型中,类如平面直线模型 $f(x) = ax + b$,其中就有 $x$ 为样本特征,$a,b$ 为模型参数。而对于一组满足非线性关系的数据,类如样本输出标记与样本特征满足二次曲线,使用线性回归生成的拟合模型就不如二次曲线的拟合效果好。同样是一个特征的样本,那么这个样本特征 $x$ 与样本输出标记 $y$ 的曲线关系可描述为 :

$y = ax^2 + bx +c$

1.2 多项式与线性关系式的转换

从样本的 一个特征 角度来理解,二次方程 $y = ax^2_{1} + bx_{1} +c $ 描述了样本的特征 $x_{1}$ 与样本输出标记 $y$ 之间的非线性关系。但如果将方程中的 $x^2_{1}$ 视作样本的另一个特征来看( 升维处理 ),为了方便识别换元成 $x_{2} = x_1$,一元二次方程此时变成了多元线性方程 $y = ax_2 + bx_{1} + c$ ,最后应用线性回归的方法求解多项式的参数,即 多项式回归 的基本过程。 多项式回归 的关键在于为原始数据样本添加新特征(升维),这些新特征来自原始特征的多项式组合,来转换成线性关系式,从而求解多项式参数。

### Prepare datasets
import numpy as np
x = np.random.uniform(-3,3,size = 100).reshape((-1,1))
y = .5 * x ** 2 + 1*x + 2 + np.random.normal(size =(100,1))

### 通过添加特征 x^2 的方式 转换多项式为 多元线性关系式并基于线性回归的方法进行参数求解
X = np.hstack([x**2,x])
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)
lin_reg.coef_

2、scikit-learn 框架下的多项式回归处理流程

  • Step.1 基于原始特征构造新特征
### Raw datasets
import numpy as np
x = np.random.uniform(-3,3,size = 100).reshape((-1,1))
y = .5 * x ** 2 + 1*x + 2 + np.random.normal(size =(100,1))
### PolynomialFeatures 特征构造
from sklearn.preprocessing import PolynomialFeatures 
poly = PolynomialFeatures(degree=2) ### 构造最高二次幂的新特征
poly.fit(x)
X = poly.transform(x) ### 返回添加了构造特征的特征矩阵,分别是 (x^0,x^1,X^2构造特征列

原始特征数目与构造特征的数目关系
(1) 原始样本仅包含一个特征$x_1$,构造最高2次幂的特征将返回$(x_1^{0},x_1^{1},x_1^{2})$的结果。
(2) 原始样本包含两个以上的特征,如包含两个特征$x_1,x_2$,则构造最高2次幂的特征将返回$(1,x_1^{1},x_2^{1},x_1^{2}, x_1x_2 ,x_2^{2})$ 6 个特征构造结果。

import numpy as np
x = np.arange(1,11).reshape(5,2) ### Raw Features

from sklearn.preprocessing import PolynomialFeatures ### 特征构造
poly = PolynomialFeatures(degree=2) ### 构造二次幂样本特征
poly.fit(x)
poly.transform(x)   ### PolynomialFeatures


(3) 基于 2个初始特征构造最高 3 次幂的新特征, 将产生十种组合特征:
$$1,x_1,x_2$$
$$x_1^{2},x_2^{2},x_1x_2$$
$$x_1^{3},x_2^{3},x_1^{2}x_2,x_1x_2^{2}$$
在构造特征的时候,阶数越高,模型的参数发生指数级增长,意味模型复杂度越高

  • Step.2 基于添加了构造特征的数据进行线性回归
    from sklearn.linear_model import LinearRegression
    lin_reg = LinearRegression()
    lin_reg.fit(X,y)
    lin_reg.coef_
    

2.2 使用scikit-learn 的Pipline 流程处理多步骤的分析任务

### Prepare datasets
import numpy as np
x = np.random.uniform(-3,3,size = 100).reshape((-1,1))
y = .5 * x ** 2 + 1*x + 2 + np.random.normal(size =(100,1))

### make pipline
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
poly_reg = Pipeline([
    ("poly",PolynomialFeatures(degree=2)), ### 格式为 管道名,当前管道需执行的函数
    ("std_scaler",StandardScaler()),
    ("lin_reg",LinearRegression())
])

### use pipline to predict
poly_reg.fit(x,y)
poly_reg.predict(x)
目录
相关文章
|
13天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
14天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
20 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
27天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
163 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【白话机器学习】算法理论+实战之决策树
【白话机器学习】算法理论+实战之决策树
|
2月前
|
机器学习/深度学习 算法 搜索推荐
【机器学习】机器学习的基本概念、算法的工作原理、实际应用案例
机器学习是人工智能的一个分支,它使计算机能够在没有明确编程的情况下从数据中学习并改进其性能。机器学习的目标是让计算机自动学习模式和规律,从而能够对未知数据做出预测或决策。
56 2
|
2月前
|
机器学习/深度学习 数据采集 人工智能
理解并应用机器学习算法:从技术基础到实践应用
【8月更文挑战第10天】机器学习算法的应用已经深入到我们生活的方方面面,理解和掌握机器学习算法对于数据科学家、工程师乃至普通从业者来说都至关重要。通过本文的介绍,希望大家能够对机器学习有一个基本的认识,并学会如何将其应用于实际问题中。当然,机器学习是一个不断发展和演变的领域,只有不断学习和实践,才能跟上时代的步伐。
|
2月前
|
机器学习/深度学习 存储 算法
图解最常用的 10 个机器学习算法!
图解最常用的 10 个机器学习算法!
下一篇
无影云桌面