机器学习.线性回归

斯塔1和2是权重项,斯塔0是偏置项,在训练过程中为了使得训练结果更加精确而做的微调,不是一个大范围的因素,核心影响因素是权重项

为了完成矩阵的运算,在斯塔0后面乘x0,使得满足矩阵的转换,所以在处理数据时候会添加如有上图所示的x0一列全是1的数据

为了得出这个平面,我们要做的就是找出所有的未知量斯塔

  • y为真实值,斯塔乘x是预测值,伊普西隆是误差值,每个样本的真实值和误差值都存在误差
  • 什么是机器学习呢:就是你给机器一堆数据,机器通过数据不断学习,调整参数,最终得出完美符合数据特征的参数,机器学习==调参侠
  • 我们要想求斯塔,就要将关于伊普西隆的算式转化成关于斯塔的算式

上图第三个算式左边的解释:x与斯塔组合后与y的数值越相近越好

所以p值越大越好

为什么是累乘?因为需要大量的数据去完善最后的参数,使得参数更加准确,因为乘法难解,所以可以加上对数转换成加法,而且转换后虽然L的数值改变了,但是我们要求取的是斯塔为何值使得L最大,所以不改变最后的斯塔数值

要让似然函数数值最大化,由于前面的项是一个常数项,所以后面的项就要最小化

这里的x和斯塔不是一个数,而是一个矩阵

经过求偏导,得出斯塔,但是机器学习是一个通过不断学习的过程不断完善斯塔这个参数,但是上面求解决斯塔的过程并没有一个学习的过程

做切线,走一小步,然后继续做切线,继续一小步,直到走到最低点

有一个问题:计算斯塔1和斯塔0的时候是一起计算好还是分别单独计算好呢?答案是分别计算,因为参数具有独立性

第二个问题:如何找到当前最合适的方向,求偏导

解释一下这张图上的目标函数为什么多了个平方:是因为将数据的误差效果放大

这个公式就是对目标函数求偏导得出方向,因为梯度下降是沿这原来的反方向走,所以后面那个公式前面的符号改变成+号,表示在原来的初始位置斯塔j的位置走那么长的距离

由于批量梯度下降和随机梯度下降各有各的毛病,所以一般采用小批量梯度下降法,每次更新选择一小部分数据来算,比较实用

小批量梯度下降法公式中的α就是学习率,一般是0.01或者0.001

在写代码时,只需要完成上图花圈的部分就可以,m代表所有样本的个数,y代表真实值,h斯塔是预测值,xij也是样本中本来有的
import numpy as npdef prepare_for_training(data, polynomial_degree, sinusoid_degree, normalize_data):passclass LinearRegression:#polynomial_degree,sinusoid_degree,normalize_data目前来说没有用,当成摆设,data是数据,label是真实值ydef __init__(self,data,labels,polynomial_degree=0,sinusoid_degree=0,normalize_data=True):'''对数据进行预处理操作:data_processed表示处理后的数据,features_mean表示处理后数据的平均值,features_deviation表示处理后数据的方差'''(data_processed,features_mean,features_deviation)=prepare_for_training(data,polynomial_degree=0,sinusoid_degree=0,normalize_data=True)self.data=data_processedself.labels=labelsself.features_mean=features_meanself.features_deviation=features_deviationself.polynomial_degree=polynomial_degreeself.sinusoid_degree=sinusoid_degreeself.normalize_data=normalize_datanum_feature=self.data.shape[1]#得到data数据据中的列数,因为theta与data是一一对应的关系,故此将data中的列数取出来作为theta中的行数self.theta=np.zeros((num_feature,1))#初始化theta,num_feature行,1列的矩阵def train(self,alpha,num_iteration=500):#训练模型cost_history=self.gradient_descent(alpha,num_iteration)return self.theta,cost_historydef gradient_descent(self,alpha,num_iteration):#梯度下降cost_history=[]#存储损失值for _ in range(num_iteration):self.gradient_step(alpha)cost_history.append(self.cost_function(self.data,self.labels))#添加损失值return cost_historydef gradient_step(self,alpha):#公式实现&&参数的更新num_examples=self.data.shape[0]prediction=LinearRegression.hypothesis(self.data,self.theta)delta=prediction-self.labelstheta=self.thetatheta=theta-alpha*(1/num_examples)*(np.dot(delta.T,self.data)).Tself.theta=thetadef cost_function(self,data,labels):#损失函数,计算cost损失值num_examples=data.shape[0]delta=LinearRegression.hypothesis(self.data,self.theta)-labelscost=(1/2)*np.dot(delta.T,delta)/num_examplesreturn cost[0][0]@staticmethod#计算预测值def hypothesis(data,theta):predictions=np.dot(data,theta)return predictionsdef get_cost(self,data,labels):data_processed=prepare_for_training(data,self.polynomial_degree,self.sinusoid_degree,self.normalize_data)[0]return self.cost_function(data_processed,labels)def predict(self,data):data_processed=prepare_for_training(data,self.polynomial_degree,self.sinusoid_degree,self.normalize_data)[0]predictions=LinearRegression.hypothesis(data_processed,self.theta)return predictions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809210.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

一. demo

1. 舞台-场景-控件 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.Stage;import java.util.Arrays;public class Main e…

【Spring】事务总结

目录 1. 什么是事务? 2. 事务的特性(ACID)了解么? 3. 详谈 Spring 对事务的支持 3.1. Spring 支持两种方式的事务管理 1).编程式事务管理 2)声明式事务管理 3.2. Spring 事务管理接口介绍 3.2.1. PlatformTransactionManager:事务管理…

leetcode-hot100-双指针

剪枝,减少不必要的计算 283. 移动零 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: nums [0] 输出: [0] 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 第一印象:使用一个辅助数组,同时以…

HDL FPGA 学习 - FPGA基本要素,开发流程,Verilog语法和规范、编写技巧

目录 Altera FPGA 基本要素 FPGA 开发流程和适用范围 设计和实施规范 顶层设计的要点 Verilog HDL 语法规范 编写规范 设计技巧 编辑整理 by Staok,始于 2021.2 且无终稿。转载请注明作者及出处。整理不易,请多支持。 本文件是“瞰百易”计划的…

【大数据】Flink 内存管理(四):TaskManager 内存分配(实战篇)

《Flink 内存管理》系列(已完结),共包含以下 4 篇文章: Flink 内存管理(一):设置 Flink 进程内存Flink 内存管理(二):JobManager 内存分配(含实际…

什么是媒体发稿?发稿媒体分类及发稿流程

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体发稿是一种企业推广和宣传的手段,通过媒体渠道传递企业信息和形象。 媒体发稿的含义在于,当企业有新闻、事件或其他消息需要对外公布时,可以选择…

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 阅读笔记

TABR: TABULAR DEEP LEARNING MEETS NEAREST NEIGHBORS IN 2023 论文地址:https://arxiv.org/abs/2307.14338 源代码:https://github.com/yandex-research/tabular-dl-tabr 摘要 针对表格数据问题(例如分类、回归)的深度学习&a…

阿里云-系统盘-磁盘扩容

阿里云系统磁盘扩容 之前是测试环境磁盘用的默认的有 40G,后面升级到正式的 磁盘怕不够用打算升级到 100G, 系统镜像: Alibaba Cloud Linux 3.2104 LTS 64 位 磁盘 ESSD 40G 升级步骤: 扩容与创建快照 在阿里云后台首先去扩容…

HTML+CSS+JS:轮播组件

效果演示 一个具有动画效果的卡片元素和一个注册表单&#xff0c;背景为渐变色&#xff0c;整体布局简洁美观。 Code <div class"card" style"--d:-1;"><div class"content"><div class"img"><img src"./i…

stream流-> 判定 + 过滤 + 收集

List<HotArticleVo> hotArticleVos hotArticleVoList .stream() .filter(x -> x.getChannelId().equals(wmChannel.getId())).collect(Collectors.toList()); 使用Java 8中的Stream API对一个名为hotArticleVoList的列表进行过滤操作&#xff0c;筛选出符合指定条件…

计算机设计大赛 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

java面试(网络)

TCP和UDP有什么区别&#xff1f;TCP三次握手不是两次&#xff1f; TCP&#xff1a;面向连接&#xff0c;可靠的&#xff0c;传输层通信协议。点对点&#xff0c;占用资源多&#xff0c;效率低。 UDP&#xff1a;无连接&#xff0c;不可靠&#xff0c;传输层通信协议。广播&…

国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托--校园招聘历年题库和真题

作为准备参加国有企业校园招聘的应聘者&#xff0c;掌握相关企业的招聘试题资料是至关重要的。国家能源、华能、一汽、中国交建、中国铁塔、中国烟草、中航信托等知名国有企业在中国经济中扮演着重要的角色&#xff0c;每年都会举行校园招聘活动&#xff0c;吸引大批毕业生和应…

【国产MCU】-CH32V307-定时器同步模式

定时器同步模式 文章目录 定时器同步模式1、定时器同步模式介绍2、驱动API介绍3、定时器同步模式实例1、定时器同步模式介绍 CH32V307的定时器能够输出时钟脉冲(TRGO),也能接收其他定时器的输入(ITRx)。不同的定时器的ITRx的来源(别的定时器的TRGO)是不一样的。 通用定…

RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单&#xff01;&#xff01;&#xff01;&#xff01; 那么就来讲一下我们的RCE吧 目录 ​编辑 1. &&#xff1f; |&#xff1f; ||&#xff1f; &&&#xff1f; 2.PHP命令执行函数&& ||"" 1."" &…

(202402)多智能体MetaGPT入门1:MetaGPT环境配置

文章目录 前言拉取MetaGPT仓库1 仅仅安装最新版2 拉取源码本地安装MetaGPT安装成果全流程展示 尝试简单使用1 本地部署大模型尝试&#xff08;失败-->成功&#xff09;2 讯飞星火API调用 前言 感谢datawhale组织开源的多智能体学习内容&#xff0c;飞书文档地址在https://d…

【LNMP】云导航项目部署及环境搭建(复杂)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、项目介绍1.1项目环境架构LNMP1.2项目代码说明 二、项目环境搭建2.1 Nginx安装2.2 php安装2.3 nginx配置和php配置2.3.1 修改nginx文件2.3.2 修改vim /etc/p…

基于IDEA+Mysql+Tomcat+Vue开发的框架的汇美食电子商城的设计与实现

基于IDEAMysqlTomcatVue开发的框架的汇美食电子商城的设计与实现 项目介绍&#x1f481;&#x1f3fb; 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于Vue框架的汇美食电子商城的设计与实现的开发全过程。通过分…

HuggingFists系统功能介绍(1)--系统概述

HuggingFists是一款低代码AI应用工具&#xff0c;力图发展为LangChain的低代码平替工具。HuggingFists发起于数由科技的Sengee数据科学计算框架&#xff0c;因此其界面风格继承了数据科学工具的很多特征。有别于完全基于LangChain衍生出的低代码工具Flowise&#xff0c;其风格更…

一个具有强大PDF处理能力的.Net开源项目

PDF具有跨平台、可读性强、不可修改性、无需特定阅读软件、内容安全等好处&#xff0c;在工作中经常都会用到。 所以&#xff0c;我们在项目开发中&#xff0c;经常需要生成PDF的文件&#xff0c;或者把Html、Xml等文件转化为PDF格式。 今天给大家推荐一个具有PDF处理能力的.…