机器学习.线性回归

斯塔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://www.mzph.cn/news/702994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息安全管理与评估赛题解析-通信数据(含环境)

通信数据分析 文章目录 通信数据分析1.pcapng:被入侵主机的IP是?被入侵主机的口令是?用户目录下第二个文件夹的名称是?/etc/passwd中倒数第二个用户的用户名是?2.pcapng:服务器自带的后门文件名是什么?服务器的内网IP是多少?攻击者往服务器中写入的key是什么?相关资源…

编码后的字符串lua

-- 长字符串 local long_string "你好你好你好你好你好你好你好你好" local encoded_string "" for i 1, #long_string do local char_code string.byte (long_string, i) encoded_string encoded_string .. char_code .. "," end encoded_…

redis数据结构源码分析——压缩列表ziplist(I)

前面讲了跳表的源码分析,本篇我们来聊一聊另外一个重点结构——压缩列表 文章目录 存储结构字节数组结构节点结构 压缩编码zipEntryzlEntry ZIP_DECODE_PREVLENZIP_DECODE_LENGTH API解析ziplistNew(创建压缩列表)ziplistInsert(插入)ziplistDelete(删除)ziplistFi…

复旦大学EMBA联合澎湃科技:共议科技迭代 创新破局

1月18日,由复旦大学管理学院、澎湃新闻、厦门市科学技术局联合主办,复旦大学EMBA项目、澎湃科技承办的“君子知道”复旦大学EMBA前沿论坛在厦门成功举办。此次论坛主题为“科技迭代 创新破局”,上海、厦门两地的政策研究专家、科学家、科创企…

CCAA审核员职业健康安全管理体系基础考试大纲

职业健康安全管理体系基础考试大纲(第1版) 1.总则 本大纲依据CCAA《管理体系审核员注册准则》制定,适用于拟向CCAA申请注册职业健康安全管理体系审核员实习级别的人员。 2.考试要求 2.1考试科目 申请注册职业健康安全管理体系审核员实习…

2024年漳州本地有正规等保测评机构吗?在哪里?

我们大家都知道,企业办理等保一定要找有资质的等保测评机构。因此不少漳州企业在问,2024年漳州本地有正规等保测评机构吗?在哪里?这里我们小编通过查找来为大家解答一下,仅供参考! 目前福建漳州本地没有正规…

10 Redis之SB整合Redis+ 高并发问题 + 分布式锁

7. SB整合Redis Spring Boot 中可以直接使用 Jedis 实现对 Redis 的操作,但一般不这样用,而是使用 Redis操作模板 RedisTemplate 类的实例来操作 Redis。 RedisTemplate 类是一个对 Redis 进行操作的模板类。该模板类中具有很多方法,这些方…

HTTP---------状态码

当服务端返回 HTTP 响应时,会带有一个状态码,用于表示特定的请求结果。比如 HTTP/1.1 200 OK,里面的 HTTP/1.1 表示协议版本,200 则是状态码,OK 则是对状态码的描述。 由协议版本、状态码、描述信息组成的行被称为起始…

SpringBoot中Websocket的简单使用

目录 1 Websocket的定义及一些使用场景 2 使用方法 2.1 导入依赖坐标 2.2 创建WebSocket服务 2.3 编写配置类注册WebSocket 2.4 在需要处使用WebSocket服务 1 Websocket的定义及一些使用场景 定义:Websocket实现了浏览器与服务器全双工通信一浏览器和服务器只…

WebSocket服务多节点部署问题及解决方案

多节点部署问题 伪广播问题:在多节点部署时,每个节点只能向与其直接连接的客户端广播消息,导致其他节点的客户端无法接收到消息。 解决方案 使用消息中间件:引入如Redis PUBSUB或Kafka等消息中间件,作为所有节点共享…

C语言:苹果和虫子

题目描述 你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果? 输入输出格式 输入格式 输入仅一行&#xff0c…

北京硒鼓耗材回收价位,硒鼓回收价格,回收

联系我的时候请说是在百猫网看到的! 硒鼓回收价格:最专业的硒鼓回收 顺达耗材回收 俗话说,顾客是最好的,良好的品牌效应是推动发展的关键之一。 北京顺达耗材回收有限公司为中小企业创造良好的二手消费市场,不断贯彻…

皓学IT:MySQL02

一、了解表 1.1.概述 表是处理数据和建立关系型数据库及应用程序的基本单元,是构成数据库的基本元素之一,是数据库中数据组织并储存的单元,所有的数据都能以表格的形式组织,目的是可读性强。 1.2.表结构简述 一个表中包括行和列…

Go语言开发小技巧易错点100例(十三)

往期回顾: Go语言开发小技巧&易错点100例(一)Go语言开发小技巧&易错点100例(二)Go语言开发小技巧&易错点100例(三)Go语言开发小技巧&易错点100例(四)Go…

微服务流量控制组件Sentinel

启动Sentinel控制台 从github下载jar包执行java -Dserver.port9005 -jar sentinel-dashboard-1.8.7.jar 启动控制台登录控制台,账号密码默认 sentinel sentinel.dashboard.auth.username -----指定用户名启动sentinel.dashboard.auth.password -----指定密码启动 微服务引入依赖…

Uncertainty-Aware Mean Teacher(UA-MT)

Uncertainty-Aware Mean Teacher 0 FQA:1 UA-MT1.1 Introduction:1.2 semi-supervised segmentation1.3 Uncertainty-Aware Mean Teacher Framework 参考: 0 FQA: Q1: 不确定感知是什么意思?不确定信息是啥?Q2:这篇文章的精妙的点…

Java面试——锁

​ 公平锁: 是指多个线程按照申请锁的顺序来获取锁,有点先来后到的意思。在并发环境中,每个线程在获取锁时会先查看此锁维护的队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会…

停止一个正在运行的线程的正确姿势

1、使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2、使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作 废的方法。 3、使用interrupt方法中断线程。 class MyThread extend…

线性代数的几何意义简单总结

矩阵的意义 矩阵既可以理解为一组(列)基向量,也可以理解为线性变换。 某个向量左乘矩阵表示向量在用新的基向量表示对应在原始坐标系下的坐标,也可以视为经过线性变换后的坐标。 原始基向量都是单位矩阵,其他矩阵都…

284.【华为OD机试真题】二叉树的广度优先遍历(二叉树的构建和层次遍历—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-二叉树的广度优先遍历二.解题思路三.题解代码P…