欣小白的点滴 ——线性回归

编程入门 行业动态 更新时间:2024-10-27 06:22:41

欣小白的点滴          ——<a href=https://www.elefans.com/category/jswz/34/1768154.html style=线性回归"/>

欣小白的点滴 ——线性回归

一.一元线性回归
所谓线性回归,就是利用数理统计中的回归分析,来确定两种或两种以上变量间,相互依赖的定量关系的一种统计分析方法。有一元线性回归和多元线性回归。
一元线性回归其实就是从一堆训练集中去算出一条直线,使数据集到直线之间的距离差最小。
类似于这样

唯一特征X,共有m = 500个数据数量,Y是实际结果,要从中找到一条直线,使数据集到直线之间的距离差最小,如下图所示:

线性回归所提供的思路是,先假设一条直线:

可以将特征X中每一个值x(i)都带入其中,得到对应的h(x(i))。为使各个点更接近直线,h(x)更能反映数据的变化,我们引出损失函数J(Θ),


当所求得的Θ0和Θ1的偏导数等于0或者接近于0时,得到的Θ0和Θ1的值,为最佳值(全局最佳,或局部最佳)。
需要***注意***的是,由于受限于样本集合的大小,该最佳值可能为局部最佳值。
此外,初始点的选取,也将影响最佳值的推算。
公式里的α,它表示的是学习率,用来限定步长的大小,也很容易理解,毕竟得到的偏导是类似斜率的东西,只是一个方向,总得加个数值,才能表示向这个方向移动的距离。对于α的取值,一般都取的比较小,但也不要太小,太小就意味着迭代步数要增加,运算时间边长。另外,迭代的步数要自己设置。

#导入cv模块
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt#数据
a = np.random.standard_normal((1, 500))
x = np.arange(0,50,0.1)
y = np.arange(20,120,0.2)
y = y - a*10
y = y[0]#梯度下降
def Optimization(x,y,theta,learning_rate):for i in range(iter):theta = Updata(x,y,theta,learning_rate)return thetadef Updata(x,y,theta,learning_rate):m = len(x)sum = 0.0sum1 = 0.0alpha = learning_rateh = 0for i in range(m):h = theta[0] + theta[1] * x[i]sum += (h - y[i])sum1 += (h - y[i]) * x[i]theta[0] -= alpha * sum / m theta[1] -= alpha * sum1 / m return theta#数据初始化
learning_rate = 0.001
theta = [0,0]
iter = 1000
theta = Optimization(x,y,theta,learning_rate)plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
'''
plt.figure(figsize=(35,35))
plt.scatter(x,y,marker='o')
plt.xticks(fontsize=40)
plt.yticks(fontsize=40)
plt.xlabel('特征X',fontsize=40)
plt.ylabel('Y',fontsize=40)
plt.title('样本',fontsize=40)
plt.savefig("样本.jpg")
'''
#可视化
b = np.arange(0,50)
c = theta[0] + b * theta[1]plt.figure(figsize=(35,35))
plt.scatter(x,y,marker='o')
plt.plot(b,c)
plt.xticks(fontsize=40)
plt.yticks(fontsize=40)
plt.xlabel('特征X',fontsize=40)
plt.ylabel('Y',fontsize=40)
plt.title('结果',fontsize=40)
plt.savefig("结果.jpg")

更多推荐

欣小白的点滴 ——线性回归

本文发布于:2024-02-10 13:51:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1675765.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:线性   点滴   欣小白

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!