首页 > 其他分享 >李宏毅机器学习笔记——回归相关技术介绍

李宏毅机器学习笔记——回归相关技术介绍

时间:2022-11-01 17:04:02浏览次数:56  
标签:plt 机器 李宏毅 笔记 len np data hat history


回归定义

Regression 就是找到一个函数 李宏毅机器学习笔记——回归相关技术介绍_线性回归 ,通过输入特征 李宏毅机器学习笔记——回归相关技术介绍_回归_02,输出一个数值 李宏毅机器学习笔记——回归相关技术介绍_线性回归_03

  • 连续性变量预测
  • 简单的线性回归
    单个特征,w,b
  • 多元回归
    多个特征
    多个w,b 其中b及也可以估量为w0

简单的梯度下降法

  • 步骤1:随机选取一个 李宏毅机器学习笔记——回归相关技术介绍_机器学习_04
  • 步骤2:计算微分,也就是当前的斜率,根据斜率来判定移动的方向
  • 大于0向右移动(增加李宏毅机器学习笔记——回归相关技术介绍_逻辑回归_05
  • 小于0向左移动(减少李宏毅机器学习笔记——回归相关技术介绍_逻辑回归_05
  • 步骤3:根据学习率移动
  • 重复步骤2和步骤3,直到找到最低点
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

# matplotlib没有中文字体,动态解决
plt.rcParams['font.sans-serif'] = ['Simhei'] # 显示中文
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
x_data = [338., 333., 328., 207., 226., 25., 179., 60., 208., 606.]
y_data = [640., 633., 619., 393., 428., 27., 193., 66., 226., 1591.]
x_d = np.asarray(x_data)
y_d = np.asarray(y_data)

x = np.arange(-200, -100, 1)
y = np.arange(-5, 5, 0.1)
Z = np.zeros((len(x), len(y)))
X, Y = np.meshgrid(x, y)

# loss
for i in range(len(x)):
for j in range(len(y)):
b = x[i]
w = y[j]
Z[j][i] = 0 # meshgrid吐出结果:y为行,x为列
for n in range(len(x_data)):
Z[j][i] += (y_data[n] - b - w * x_data[n]) ** 2
Z[j][i] /= len(x_data)

# linear regression
#b = -120
#w = -4
b=-2
w=0.01
lr = 0.000005
iteration = 1400000

b_history = [b]
w_history = [w]
loss_history = []
import time
start = time.time()
for i in range(iteration):
m = float(len(x_d))
y_hat = w * x_d +b
loss = np.dot(y_d - y_hat, y_d - y_hat) / m
grad_b = -2.0 * np.sum(y_d - y_hat) / m
grad_w = -2.0 * np.dot(y_d - y_hat, x_d) / m
# update param
b -= lr * grad_b
w -= lr * grad_w

b_history.append(b)
w_history.append(w)
loss_history.append(loss)
if i % 10000 == 0:
print("Step %i, w: %0.4f, b: %.4f, Loss: %.4f" % (i, w, b, loss))
end = time.time()
print("大约需要时间:",end-start)
# plot the figure
plt.contourf(x, y, Z, 50, alpha=0.5, cmap=plt.get_cmap('jet')) # 填充等高线
plt.plot([-188.4], [2.67], 'x', ms=12, mew=3, color="orange")
plt.plot(b_history, w_history, 'o-', ms=3, lw=1.5, color='black')
plt.xlim(-200, -100)
plt.ylim(-5, 5)
plt.xlabel(r'$b$')
plt.ylabel(r'$w$')
plt.title("线性回归")
plt.show()

李宏毅机器学习笔记——回归相关技术介绍_机器学习_07

​​Datawhale学习网址​​


标签:plt,机器,李宏毅,笔记,len,np,data,hat,history
From: https://blog.51cto.com/u_13859040/5814494

相关文章

  • 机器学习算法从入门到精通——线性回归算法
    线性回归算法​​线性回归算法​​​​线性回归分类​​​​单变量回归​​​​多变量回归​​​​求拟合方程方法​​​​最小二乘法​​​​岭回归​​​​Lasso回归​​......
  • 机器学习从入门到精通——决策树算法概述以及实现总结
    决策树​​决策树​​​​定义​​​​决策树​​​​概念​​​​熵​​​​条件熵​​​​经验熵,经验条件熵​​​​信息增益​​​​算法​​​​信息增益算法​​​​I......
  • 机器学习从入门到精通——贝叶斯算法及朴素贝叶斯原理推导实现
    贝叶斯算法及朴素贝叶斯​​贝叶斯算法及朴素贝叶斯​​​​朴素贝叶斯​​​​原理​​​​算法推导​​​​条件独立假设​​​​参数估计​​​​极大似然估计​​​​贝......
  • 机器学习算法从入门到精通——逻辑回归算法
    逻辑回归算法​​逻辑回归算法​​​​逻辑回归​​​​逻辑回归模型​​​​代价函数​​逻辑回归算法逻辑回归逻辑回归模型简单来说线性回归就是直接将特征值和其对应的概......
  • 统计学习方法——机器学习和统计学习
    1.统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行分析与预测的一门学科。统计学习包括监督学习、非监督学习、半监督学习和强化学习。2.统计学习方法三要......
  • 机器学习从入门到精通—— Logistic回归与最大熵模型
    Logistic回归​​Logistic回归​​​​逻辑斯谛​​​​回归模型​​​​相对应模型代码实现​​​​逻辑斯蒂​​​​最大熵模型代码实现​​Logistic回归逻辑斯谛1.逻辑斯......
  • 常系数齐次线性递推学习笔记
    写在前面的话碍于笔者水平有限,本文缺陷可能比较多,欢迎指正。前置知识:NTT。模板\(\text{Link}\)给定\(f_1,f_2,f_3\dotsf_k\)和\(a_0,a_1,a_2\dotsa_{k-1}\),求\[......
  • 【HDLBits刷题笔记】12 More Circuits
    Rule90第一次见这东西有点莫名其妙,但是其实看懂了之后就是左移和右移相异或,注意这里使用的是逻辑右移,会自动补零,不能使用算数左移<<<。moduletop_module(inputcl......
  • 笔记:java如何获取,指定范围的随机数?
    一、需求:如何获取一个指定范围的随机数,进行业务操作? 二、代码示例://传入指定的数值区间publicstaticintgetRandom(intmin,intmax){Randomrandom=newR......
  • linux使用笔记
    设置固定IPdebian默认网卡配置文件/etc/network/interfaces找到文件内对应网卡,将dhcp修改为static,并增加IP地址iface<网卡名>inetstaticaddress192.168.1.2......