当前位置: 首页 > news >正文

建设银行企业官方网站保定网站建设开发

建设银行企业官方网站,保定网站建设开发,潍坊网站开发,网络技术基础知识总结 本系列是机器学习课程的系列课程,主要介绍机器学习中回归算法,包括线性回归,岭回归,逻辑回归等部分。 参考 动图 Jupyter 本门课程的目标 完成一个特定行业的算法应用全过程: 懂业务会选择合适的算法数据处…

总结

本系列是机器学习课程的系列课程,主要介绍机器学习中回归算法,包括线性回归,岭回归,逻辑回归等部分。

参考

动图 @ Jupyter

本门课程的目标

完成一个特定行业的算法应用全过程:

懂业务+会选择合适的算法+数据处理+算法训练+算法调优+算法融合
+算法评估+持续调优+工程化接口实现

机器学习定义

关于机器学习的定义,Tom Michael Mitchell的这段话被广泛引用:
对于某类任务T性能度量P,如果一个计算机程序在T上其性能P随着经验E而自我完善,那么我们称这个计算机程序从经验E中学习
在这里插入图片描述

回归算法

导入依赖

# 导入依赖
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import time
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体 # 解决中文乱码问题(仅针对windows电脑)
plt.rcParams['axes.unicode_minus'] = False  # 解决负号无法显示问题

生成模拟数据

# 生成模拟数据
np.random.seed(42)
X = np.linspace(0, 10, 100)
X

输出为
在这里插入图片描述

生成y值

# 根据x生成y
true_slope = 2.5 # 斜率
true_intercept = 1.0 #  截距
# y = true_slope * X + true_intercept + np.random.normal(0, 2, len(X))*2
y = true_slope * np.power(X,2)*0.8  + true_intercept + np.random.normal(0, 2, len(X)) - + np.random.normal(0, 2, len(X))
y

输出为
在这里插入图片描述

绘制动图

# 初始化画布
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle("线性回归模型动态演示", fontsize=14)

输出为
在这里插入图片描述

# 绘制左边的子图
# 因为画布只展示一次,每次都要重新绘制
# 初始化画布
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle("线性回归模型动态演示", fontsize=14)
# 左图:数据点和拟合直线
ax1.set_xlim(0, 10)
ax1.set_ylim(np.min(y)-2, np.max(y)+2)
ax1.set_xlabel("X")
ax1.set_ylabel("y")
scatter = ax1.scatter(X, y, c="blue", alpha=0.6, label="数据点")
#lw是线宽
line, = ax1.plot([], [], 'r-', lw=2, label="拟合直线") 
ax1.legend()plt.show()

输出为:
在这里插入图片描述

# 绘制右边的子图
# 因为画布只展示一次,每次都要重新绘制
# 初始化画布
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle("线性回归模型动态演示", fontsize=14)
# 左图:数据点和拟合直线
ax1.set_xlim(0, 10)
ax1.set_ylim(np.min(y)-2, np.max(y)+2)
ax1.set_xlabel("X")
ax1.set_ylabel("y")
scatter = ax1.scatter(X, y, c="blue", alpha=0.6, label="数据点")
#lw是线宽
line, = ax1.plot([], [], 'r-', lw=2, label="拟合直线") 
ax1.legend()# 右图:损失函数(MSE)随迭代的变化
ax2.set_xlim(0, 100)
ax2.set_ylim(0, 800)
ax2.set_xlabel("迭代次数")
ax2.set_ylabel("均方误差 (MSE)")
loss_line, = ax2.plot([], [], 'g-', lw=2, label="MSE")
ax2.legend()plt.show()

输出为:
在这里插入图片描述

# 为解决jupyter中不显示动图问题,采取的方案
# %pylab 魔法命令可以使numpy和matplotlib中的科学计算功能生效,
# 这些功能被称为基于向量和矩阵的高效操作,交互可视化特性。
# 它能够让我们在控制台进行交互式计算和动态绘图。 
from matplotlib import pylab
%pylab# 因为画布只展示一次,每次都要重新绘制
# 初始化画布
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle("线性回归模型动态演示", fontsize=14)
# 左图:数据点和拟合直线
ax1.set_xlim(0, 10)
ax1.set_ylim(np.min(y)-2, np.max(y)+2)
ax1.set_xlabel("X")
ax1.set_ylabel("y")
scatter = ax1.scatter(X, y, c="blue", alpha=0.6, label="数据点")
#lw是线宽
line, = ax1.plot([], [], 'r-', lw=2, label="拟合直线") 
ax1.legend()# 右图:损失函数(MSE)随迭代的变化
ax2.set_xlim(0, 100)
ax2.set_ylim(0, 800)
ax2.set_xlabel("迭代次数")
ax2.set_ylabel("均方误差 (MSE)")
loss_line, = ax2.plot([], [], 'g-', lw=2, label="MSE")
ax2.legend()# 初始化参数和损失记录
current_slope = 0.0 # 斜率
current_intercept = 0.0 # 截距
mse_history = []# 梯度下降参数
learning_rate = 0.02
n_iterations = 100# 动画更新函数 frame是帧数
def update(frame):global current_slope, current_intercept# 计算梯度y_pred = current_slope * X + current_intercept# y_pred = current_slope * np.power(X,2) + current_intercepterror = y_pred - ygrad_slope = 2 * np.mean(error * X) # slope是斜率grad_intercept = 2 * np.mean(error) # intercept是截距# 更新参数current_slope -= learning_rate * grad_slope # current_slope是斜率  current_intercept -= learning_rate * grad_intercept # current_intercept是截距# 计算当前MSEmse = np.mean(error**2) # 均方误差mse_history.append(mse) #   均方误差# 更新左图:拟合直线# set_data()是一个元组,set_data()[0]是直线的x坐标,set_data()[1]是直线的y坐标# 当x为0时,y为current_intercept,当x为10时,y为current_slope*10 + current_interceptline.set_data([0, 10], [current_intercept, current_slope*10 + current_intercept])# line.set_data([0, 10], [current_intercept, current_slope*np.power(10,2) + current_intercept])# 更新右图:损失曲线 loss_line.set_data(np.arange(len(mse_history)), mse_history)ax2.set_xlim(0, len(mse_history)+5)# 添加动态文本ax1.set_title(f"斜率: {current_slope:.2f}, 截距: {current_intercept:.2f}")ax2.set_title(f"当前MSE: {mse:.2f}")# time.sleep(0.5)return line, loss_line#, scatter# 创建动画
# frames是帧数,interval是间隔时间,blit是是否只更新变化的部分
ani = FuncAnimation(fig, update, frames=n_iterations, interval=100, blit=False)
plt.tight_layout() # 调整布局plt.show()

输出为:
在这里插入图片描述

完整代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import time
import math
import scipyplt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体 # 解决中文乱码问题(仅针对windows电脑)
plt.rcParams['axes.unicode_minus'] = False  # 解决负号无法显示问题# 生成模拟数据
np.random.seed(42)
X = np.linspace(0, 10, 100)# 数据归一化
# X_normalized = (X - np.min(X)) / (np.max(X) - np.min(X))true_slope = 2.5
true_intercept = 1.0
# y = true_slope * X + true_intercept + np.random.normal(0, 2, len(X))*2
y = true_slope * np.power(X,2)*0.8  + true_intercept + np.random.normal(0, 2, len(X)) - + np.random.normal(0, 2, len(X))# 初始化画布
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle("线性回归模型动态演示", fontsize=14)# 左图:数据点和拟合直线
ax1.set_xlim(0, 10)
ax1.set_ylim(np.min(y)-2, np.max(y)+2)
ax1.set_xlabel("X")
ax1.set_ylabel("y")
scatter = ax1.scatter(X, y, c="blue", alpha=0.6, label="数据点")
#lw是线宽
line, = ax1.plot([], [], 'r-', lw=2, label="拟合直线") 
ax1.legend()# 右图:损失函数(MSE)随迭代的变化
ax2.set_xlim(0, 100)
ax2.set_ylim(0, 800)
ax2.set_xlabel("迭代次数")
ax2.set_ylabel("均方误差 (MSE)")
loss_line, = ax2.plot([], [], 'g-', lw=2, label="MSE")
ax2.legend()# 初始化参数和损失记录
current_slope = 0.0 # 斜率
current_intercept = 0.0 # 截距
mse_history = []# 梯度下降参数
learning_rate = 0.02
n_iterations = 100# 动画更新函数 frame是帧数
def update(frame):global current_slope, current_intercept# 计算梯度y_pred = current_slope * X + current_intercept# y_pred = current_slope * np.power(X,2) + current_intercepterror = y_pred - ygrad_slope = 2 * np.mean(error * X) # slope是斜率grad_intercept = 2 * np.mean(error) # intercept是截距# 更新参数current_slope -= learning_rate * grad_slope # current_slope是斜率  current_intercept -= learning_rate * grad_intercept # current_intercept是截距# 计算当前MSEmse = np.mean(error**2) # 均方误差mse_history.append(mse) #   均方误差# 更新左图:拟合直线# set_data()是一个元组,set_data()[0]是直线的x坐标,set_data()[1]是直线的y坐标# 当x为0时,y为current_intercept,当x为10时,y为current_slope*10 + current_interceptline.set_data([0, 10], [current_intercept, current_slope*10 + current_intercept])# line.set_data([0, 10], [current_intercept, current_slope*np.power(10,2) + current_intercept])# 更新右图:损失曲线 loss_line.set_data(np.arange(len(mse_history)), mse_history)ax2.set_xlim(0, len(mse_history)+5)# 添加动态文本ax1.set_title(f"斜率: {current_slope:.2f}, 截距: {current_intercept:.2f}")ax2.set_title(f"当前MSE: {mse:.2f}")# time.sleep(0.5)return line, loss_line#, scatter# 创建动画
# frames是帧数,interval是间隔时间,blit是是否只更新变化的部分
ani = FuncAnimation(fig, update, frames=n_iterations, interval=100, blit=False)
plt.tight_layout() # 调整布局
plt.show()
http://www.dtcms.com/a/488858.html

相关文章:

  • 建立网站备案需要什么资料小程序有做门户网站
  • 苏州网站建设招聘wordpress充值密码没有链接
  • 南京网站制作网页抖音推广方式有哪些
  • 怎么在新建网站上做分享代码网络设置了代理是什么意思
  • 上海网站建设公司电wordpress归档页面自定义
  • 建网站为什么每年都要续费wordpress注册关键词
  • 用织梦做的网站下载wordpress素材库无法显示
  • 重庆知名网站企业文化建设
  • 网站首页内链怎么做wordpress分类目录html
  • 网站做推广企业建设一个公司网站多少钱
  • 宁波营销型网站建设关于建设网站的情况说明书
  • 广州万网网站网站管理助手怎么使用
  • seo网站优化专员番茄小说推广对接平台
  • 如何检查网站是否做cdn加速谁家网站用户体验做的好
  • 钮奇网站建设网站开发vue
  • 上海网站建设 浦东wordpress script
  • 湖北住房和城乡建设厅官方网站地产网站模板
  • 电子商务网站建设与运营方向硬件开发工程师职责
  • 网站建设的界面f分大连做app的公司
  • 三网合一网站建设计划做网站的公司前三名
  • 西宁网站搭建网站导航网
  • 濮阳建站公司哪个好可以做英语阅读理解的网站
  • 给你一个网站你怎么做的事业单位网站后台建设方案
  • 杭州网络公司做网站报价网页设计怎么赚钱
  • 专业外包网站建设公司排名南联网站建设公司
  • 余姚专业网站建设公司网站开发和网页上传
  • 深圳那个网站建设微信二次开发
  • 如何让别人看到自己做的网站揭阳智能模板建站
  • 化工网站源码电脑网站策划书
  • 莱西网站建设哪家好网片生产厂家