这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】机器学习十大算法(一)--fromAya

共14条 1/2 1 2 跳转至

【原创】机器学习十大算法(一)--fromAya

工程师
2022-06-30 16:33:03     打赏
机器学习十大算法(一)1 线性回归

1.1基本原理

回归用于确定输入变量和输出变量之间的关系,回归模型是表示输入变量到输出变量之间关系的映射函数。回归分析通常分为模型学习和预测两个过程,前者主要根据给定的训练数据集构建回归模型,后者则根据新的输入数据预测相应的输出。

回归模型包括一元线性回归模型与多元线性回归模型,基本形式如下:

1.png

x=[x1,x2,,xn],参数wi(i=1,2,…,n)w0分别称为权重系数与常数。

其中,当n取值为1时为一元线性回归模型(即只包括一个目变量和一个因变量且二者之间为线性映射关系),大于1时则为多元线性回归模型(即包括两个或两个以上的自变量且因变量和自变量之间是线性映射关系)。

以图所示一元线性回归模型为例,线性回归的目的在于确定一条直线(如y = ax +b)以最小的误差(如r1、r2等)的方式拟合数据。在实际中,期望每个点均在该直线上(即r1、r2等误差均为0)是难以做到的,因而一般希望每个点尽量离该直线近一些或整体误差最小(即r1、r2等误差之和最小)。

2.png

1.2求取模型参数

为了求取模型参数ab,通常可通过以下几个步骤完成:

ü  根据样本集{(xi,yi)}(i= 1,2,,n),确定平方损失函数Ri(a,b)=(yi - axi-b)2;

ü  构建代价函数L(a,b) = 

ü  通过特定算法〔如最小二乘算法、梯度下降算法等)确定代价函数取最小值时的参数ab

1.3编程实现(以最小二乘法确定代价函数)

最小二乘法:将求代价函数L(a,b)最小值的问题就转变成了求极值问题,进而通过求参数ab的偏导数的方式确定其最优值,即:

3.jpg

最终解:

4.png

def  LSM(x,y):
    n = len(x)
    sumX,sumY,sumXY,sumXX =0,0,0,0
    for i in range(0,n):
        sumX  += x[i]
        sumY  += y[i]
        sumXX += x[i]*x[i]
        sumXY += x[i]*y[i]
    a = (n*sumXY -sumX*sumY)/(n*sumXX -sumX*sumX)
    b = (sumXX*sumY - sumX*sumXY)/(n*sumXX-sumX*sumX)
    return a,b

1.4习题练习

1.在指定斜率与截距(如k=2b=5)直线L0上随机采样50个真值点(X0),然后根据X0生成噪声服从正态分布(如均值为1、方差为2)的样本(Xn)。

2.利用Scikit-learn线性回归库拟合Xn以生成拟合直线L1

代码:线性回归
import numpy as np
import matplotlib.pyplot as plt
#1.在指定斜率与截距(如k=2、b=5)直线L0上随机采样50个真值点(X0),
#然后根据X0生成噪声服从正态分布(如均值为1、方差为2)的样本(Xn)。
x=np.linspace(1,10,50).reshape(50,1)
k=2;b=5
x0=k*x+b # 原始点
mu=1;sigma=2
zao=np.random.normal(mu,sigma,50).reshape(50,1)
xn=np.add(x0,zao) #噪声点
# 2.利用Scikit-learn线性回归库拟合Xn以生成拟合直线L1。
from sklearn.linear_model import LinearRegression
lr=LinearRegression(fit_intercept=True)
lr.fit(x,xn)
pre=lr.predict(x)# 预测值
# 3.将X0、Xn、L0与L1绘制在一起以比较其之间的差异。
plt.scatter(x,x0,c='r',label='x0')
plt.scatter(x,xn,c='y',label='xn')
plt.plot(x,x0,color='b',label='L0')
plt.plot(x,pre,color='g',label='L1')
plt.legend()

结果展示:

QQ截图20220630163115.jpg




院士
2022-06-30 22:57:01     打赏
2楼

学习


专家
2022-06-30 23:29:48     打赏
3楼

感谢分享


高工
2022-07-01 16:51:52     打赏
4楼

谢谢分享


工程师
2022-07-01 20:32:08     打赏
5楼

6666666666666666


专家
2022-07-01 21:26:46     打赏
6楼

学习学习


专家
2022-07-01 21:29:16     打赏
7楼

看看


院士
2022-07-02 07:28:39     打赏
8楼

谢谢楼主分享的文章~!


高工
2022-07-02 07:30:09     打赏
9楼

谢谢分享


院士
2022-07-02 08:31:28     打赏
10楼

感谢分享


共14条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]