# 利用梯度下降法解决回归问题

### 文章目录

1.梯度下降法基本原理

2.线性回归的例子

X = [1,2,3,4,5,6,7,8,9,10]
Y = [1,3,4,5.4,4.8,6.3,8.4,10.1,10.9,11.4]


alpha = 0.05



def h(a,x,b):
return a*x+b



def J(a,b,X,Y,m):
sum = np.dot(h(a,X,b)-Y,h(a,X,b)-Y)
return sum/(2*m)



def J1(a,b,X,Y,m):
sum1 = 0
for j in range(0,m):
sum1 = sum1+h(a,X[j],b)-Y[j]
return sum1/m

def J2(a,b,X,Y,m):
sum2 = np.dot(h(a,X,b)-Y,X)
return sum2/m



a = Y[0]/X[0]
b = 0
m = 10



while np.abs(J1(a,b,X,Y,m))>=1e-5 or np.abs(J2(a,b,X,Y,m))>=1e-5:
a = a-alpha*J2(a,b,X,Y,m)
b = b-alpha*J1(a,b,X,Y,m)


a,b以及代价函数的值为：1.1509,0.2000,0.1771

import matplotlib.pyplot as plt
import numpy as np

alpha = 0.05

def h(a,x,b):
return a*x+b

def J(a,b,X,Y,m):
sum = np.dot(h(a,X,b)-Y,h(a,X,b)-Y)
return sum/(2*m)

def J1(a,b,X,Y,m):
sum1 = 0
for j in range(0,m):
sum1 = sum1+h(a,X[j],b)-Y[j]
return sum1/m

def J2(a,b,X,Y,m):
sum2 = np.dot(h(a,X,b)-Y,X)
return sum2/m

X = np.array([1,2,3,4,5,6,7,8,9,10])
Y = np.array([1,3,4,5.4,4.8,6.3,8.4,10.1,10.9,11.4])
plt.scatter(X,Y)

a = Y[0]/X[0]
b = 0
m = 10

while np.abs(J1(a,b,X,Y,m))>=1e-5 or np.abs(J2(a,b,X,Y,m))>=1e-5:
a = a-alpha*J2(a,b,X,Y,m)
b = b-alpha*J1(a,b,X,Y,m)

print(a,b,J(a,b,X,Y,m))
x = np.arange(0.5,10.5,0.01)
y = a*x+b
plt.plot(x,y,c='red')
plt.legend(['predict line'])
plt.show()


3.非线性回归的例子

X = [1,2,3,4]
Y = [3.2,6.5,14.5,20.6]

import matplotlib.pyplot as plt
import numpy as np

alpha = 0.01

def h(a,b,c,x):
return a*x*x+b*x+c

def J(a,b,c,X,Y,m):
sum = np.dot(h(a,b,c,X)-Y,h(a,b,c,X)-Y)
return sum/(2*m)

def J_a(a,b,c,X,Y,m):
sum1 = np.dot(h(a,b,c,X)-Y,X**2)
return sum1/m

def J_b(a,b,c,X,Y,m):
sum2 = np.dot(h(a,b,c,X)-Y,X)
return sum2/m

def J_c(a,b,c,X,Y,m):
sum3 = 0
for t in range(0,m):
sum3 = sum3+h(a,b,c,X[t])-Y[t]
return sum3/m

X = np.array([1,2,3,4])
Y = np.array([3.2,6.5,14.5,20.6])
plt.scatter(X,Y)

a = 1
b = 0
c = 0
m = 4

while np.abs(J_a(a,b,c,X,Y,m))>=1e-5 or np.abs(J_b(a,b,c,X,Y,m))>=1e-5 or np.abs(J_c(a,b,c,X,Y,m))>=1e-5:
a = a-alpha*J_a(a,b,c,X,Y,m)
b = b-alpha*J_b(a,b,c,X,Y,m)
c = c-alpha*J_c(a,b,c,X,Y,m)

print(a,b,c,J(a,b,c,X,Y,m))
x = np.arange(0.5,4.5,0.01)
y = a*x*x+b*x+c
plt.plot(x,y,c='red')
plt.legend(['predicted'])
plt.show()



Original: https://blog.csdn.net/weixin_50744311/article/details/119703168
Author: 阿库塔姆
Title: 利用梯度下降法解决回归问题

(0)

### 大家都在看

• #### 【代码审计-PHP】phpStudy（新版） + PhpStorm + XDebug动态调试

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月26日
099
• #### [CG] 顶点动画贴图 (Vertex Animation Texture, VAT)

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年10月9日
0230
• #### 【高级渲染特性】抗锯齿技术介绍

什么是锯齿 图像的边缘有明显的像素边界，看起来不自然，好像锯齿一样 什么是抗锯齿 消除或者减轻锯齿 为什么会出现锯齿 计算器屏幕上显示的图像由一个个像素组成，绘制斜线的时候需要按照…

人工智能 2023年6月18日
061
• #### opencv SimpleBlobDetector blob分析斑点检测原理详解

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月12日
0132
• #### 数据分析初级操作学习【预处理、集中与离散分析、相关分析】

数据分析初级学习 大家好！我是 未来村村长！就是那个” 请你跟我这样做，我就跟你那样做！“的村长👨‍🌾！上次发布了[Pandas库的使用教程，每个程序都配图…

人工智能 2023年7月7日
043
• #### 论文阅读：（ECCV 2022）Simple Baseline for Image Restoration

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月24日
0227
• #### 自动驾驶激光雷达、摄像头、毫米波雷达融合算法

无人驾驶汽车多传感器冗余下的数据融合算法研究 【论文】详见知网链接、ELSEVIER链接、IEEE链接，【开源项目】详见github链接 【编译运行】详见DWD_sensor_fu…

人工智能 2023年6月1日
062
• #### 语音识别(ASR)论文优选：端到端模型是否满足工业界落地需求Are E2E ASR models ready for an industrial usage?

声明：平时看些文章做些笔记分享出来，文章中难免存在错误的地方，还望大家海涵。搜集一些资料，方便查阅学习：http://yqli.tech/page/speech.html。语音合成…

人工智能 2023年5月25日
065
• #### 使用网格搜索优化支持向量机(SVM)实现预测回归

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月19日
0136
• #### 图像分类、目标检测、语义分割、实例分割等计算机视觉方向基本概念

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月5日
0198
• #### 一种基于精神卫生访谈信息实现长文本语音识别增强处理的方法

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年9月2日
0185
• #### 解决：Clipping input data to the valid range for imshow with RGB data

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月20日
0209
• #### 爆肝5万字❤️Open3D 点云数据处理基础（Python版）

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月21日
0117
• #### 9.神经网络层和前向传播

目录 neural network layer神经网络层 simple complex forward propagation前向传播 创建神经网络 neural network …

人工智能 2023年7月13日
033
• #### Linux 安装python 3.8(Linux 的版本为 Centos 7)

Linux 安装python 3.8(Linux 的版本为 Centos 7) 前言：喜欢傻瓜式复制粘贴的，不会思考安装过程中报错的，不建议看这个，可以去看看其他的，看了安装不了，…

人工智能 2023年7月5日
055
• #### OpenCV C++案例实战二十二《手势识别》

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月21日
0221