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

蒙牛网站建设百度搜索引擎关键词

蒙牛网站建设,百度搜索引擎关键词,泸州网站建设公司,专注外贸建站总结 本系列是机器学习课程的系列课程,主要介绍机器学习中回归算法,包括线性回归,岭回归,逻辑回归等部分。 参考 动图 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/wzjs/105682.html

相关文章:

  • 无锡本地网站班级优化大师头像
  • 网站seo优化多少钱广州seo优化排名推广
  • ui设计师作品集网站域名是什么意思呢
  • 牡丹江网站制作营销软文300字范文
  • 400电话申请优化网哪个牌子好
  • 西安哪有学做淘宝网站关键词推广计划
  • 深圳住房建设局网站申报软文写作范文
  • 网站前台展示简述搜索引擎优化的方法
  • 注册公司代理记账头像图片seo推广优化多少钱
  • 什么是网站建设方案百度一下首页百度一下知道
  • 秦皇岛做网站外包佛山本地网站建设
  • 天津单位网站建设地推任务网
  • java动态网站建设视频北京seo外包 靠谱
  • 深圳市房地产信息平台官网seo诊断分析
  • 微信辅助做单网站产品销售推广方案
  • 衡阳网站建设衡阳千度网络西安seo盐城
  • 汉口网站建设公司n127网推广
  • 家庭宽带做网站稳定互联网营销案例
  • 手机网站营销志鸿优化设计答案网
  • 网上拿手工做的网站电商网站对比表格
  • 工商企业查询网seo免费推广软件
  • 北京云网站建设网站交换链接的常见形式
  • 织梦网站首页空白谷歌paypal官网入口
  • 保定专业网站建设免费seo排名软件
  • 静态网页做的网站怎么发到网上互联网推广员是做什么的
  • 阿里网站域名要购卖吗91关键词排名
  • 无需下载即可观看网页宁波seo的公司联系方式
  • 石家庄+外贸网站建设公司推广通
  • 江西合创建设工程有限公司 网站网站统计平台
  • 手机文章网站源码微信广告推广价格表