机器学习理论知识补充

文章目录

  • 1、什么是线性回归
    • 1.1、损失函数
  • 2、什么是逻辑回归
    • 2.2、损失函数

案例来源

1、什么是线性回归

用一个例子来解释什么是线性回归比较容易理解

假设你想在商场开一家店,想提前预测一下开这家店会不会赚钱,就需要计算成本和收入,成本可以很轻松计算出来(房租+人工+设备),但是收入怎么计算呢。这个时候正好你有一份同类型店的数据,是日均人流量和日均收入的数据,画成散点图的形式可以发现,每增加一定人流量,收入也是成比例增加的,此时我们想到了线性回归来预测我们的收入,

在这里插入图片描述

线性回归:一个自变量一个应变量,两者之间可以用一条直线近似表示两个变量之间的关系,通过知道一个变量预测另外一个变量的值,这个例子中,自变量x就是日均人流量,因变量y就是收入,线性回归其实就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。找直线的过程就是在做线性回归,只不过这个叫法更有逼格而已。

在这里插入图片描述

1.1、损失函数

既然找直线,肯定有一个评判标注,来判断那条直线是最好的,只要算一下实际收入和我们找出的直线,根据人流量预测出来的收入之间的差距就行了。说白了就是算两点的距离。当我们把所有实际收入和预测出来的收入的差距算出来然后做个加和,我们就能量化出现在我们预测的收入和实际收入之间的误差。然后把每条小竖线的长度加起来就等于我们现在通过这条直线预测出的收入与实际收入之间的差距。那每条小竖线的长度的加和怎么算?欧式距离加和,公式如下。(其中y(i)表示的是实际收入,y^(i)表示的是预测收入)在这里插入图片描述
在这里插入图片描述

损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准。这个函数的值越小,说明直线越能拟合我们的数据

使用python代码实现线性回归
库安装

pip install -U scikit-learn

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from pylab import *def linear_regression():mpl.rcParams['font.sans-serif'] = ['SimHei']X = np.array([[2, 5, 7, 9, 12, 13, 15]]).reshape(7, 1)Y = np.array([[12, 31, 44, 51, 72, 76, 85]]).reshape(7, 1)# 建立线性回归模型regr = linear_model.LinearRegression()# 拟合regr.fit(X, Y)# 不难得到直线的斜率、截距a, b = regr.coef_, regr.intercept_print("----:", a, b)# 作图# 1.真实数据的点plt.scatter(X, Y, color='blue', label='原始数据点')# 2.拟合的直线plt.plot(X, regr.predict(X), color='red', linewidth=4, label='拟合线')plt.xlabel("人流量")plt.ylabel("收入")plt.grid()plt.legend()plt.show()

在这里插入图片描述

2、什么是逻辑回归

什么是分类问题?

例:判断以下每条数据所属哪个类别,就是分类问题。体温、水生都是这条数据的特征,通过这些特征判断所属种类就是一个分类问题。

在这里插入图片描述

什么叫二分类问题?
只有两个类别,就叫二分类问题,是哺乳类就是1,不是就是0。

在这里插入图片描述

逻辑回归是怎么解决二分类问题?

举例说明:左边:x轴是卖出咖啡的数量,y轴是直观的可以发现,我们预测的y值是一个连续的值,每个x对应一个y值,我们称这类问题为回归问题
右边:x轴是卖出咖啡的数量,红色部分是卖出咖啡去除成本还不能盈利,蓝色部分是可以盈利。这个图就可以看出是一个分类问题,并且还是一个二分类问题。

在这里插入图片描述

逻辑回归 = 线性回归 + sigmoid函数
在这里插入图片描述
在这里插入图片描述

通过sigmoid函数,我们可以很轻松的将回归问题的结果变成从[0,1]之间的某一个数,将线性回归的结果作为sigmoid函数的输入
在这里插入图片描述

2.2、损失函数

逻辑回归中的损失函数通常使用的是对数损失函数(Log Loss)或交叉熵损失函数(Cross-Entropy Loss),它用于衡量模型的预测结果与真实标签之间的差异。
对于二分类问题,在逻辑回归中使用的是对数损失函数,其表达式如下:
L(y, ŷ) = -[y * log(ŷ) + (1 - y) * log(1 - ŷ)]
其中,
L 表示损失函数。
y 是真实标签(0 或 1)。
ŷ 是模型的预测概率值。
当 y = 1 时,损失函数的第一项 y * log(ŷ) 起作用,当预测概率 ŷ 越接近 1(即预测为正类别的概率越高),损失函数的值趋近于 0。当预测概率 ŷ 越接近 0(即预测为负类别的概率越高),损失函数的值趋近于无穷大,表示错误的预测。
当 y = 0 时,损失函数的第二项 (1 - y) * log(1 - ŷ) 起作用,当预测概率 ŷ 越接近 0(即预测为负类别的概率越高),损失函数的值趋近于 0。当预测概率 ŷ 越接近 1(即预测为正类别的概率越高),损失函数的值趋近于无穷大,表示错误的预测。
通过最小化损失函数,我们可以调整模型的参数(权重和偏置)来使预测结果尽可能接近真实标签,从而提高模型的准确性。

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

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

相关文章

软件测试中的顶级测试覆盖率技术

根据 CISQ 报告,劣质软件每年给美国公司造成约2.08 万亿美元的损失。虽然软件工具是企业和行业领域的必需品,但它们也容易出现严重错误和性能问题。人类手动测试不再足以检测和消除软件错误。 因此,产品或软件开发公司必须转向自动化测试&am…

用CSS实现单行、多行文本溢出隐藏

单行文本溢出 overflow: hidden; // 溢出隐藏 text-overflow: ellipsis; // 溢出用省略号显示 white-space: nowrap; // 规定段落中的文本不进行换行 多行文本溢出 overflow: hidden; // 溢出隐藏 text-overflow: ellipsis; // 溢出…

【2024系统架构设计】案例分析- 2 系统开发基础

目录 一 基础知识 二 真题 一 基础知识 1 结构化的需求分析 结构化特点:自顶向下,逐步分解,面向数据。 三大模型:

java将文件转成流文件返回给前端

环境:jdk1.8,springboot2.5.3,项目端口号:9100 1.待转换的文件 一、路径 二、文件内容 2.controller中代码 package com.example.pdf.controller;import com.example.pdf.service.GetFileStreamService; import org.springframework.web.b…

webpack练习之手写loader

手写一个style-loader来把样式文件插入head里面,准备工作 vue webpack就自己弄了,webpack的一些配置也自己配置好 一、创建index.css文件 .box{width: 100px;height: 100px;background-color: red; }然后在vue的main.js文件中引入它 二、创建自定义l…

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令,也不是可运行的程序? 点击链接地址,下载压缩包。 完成后解压 使用方式(三种): 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下,使用nc&a…

时间滑动窗口限流

限流算法——时间滑动窗口 背景: 在当今的微服务架构中,会存在流量剧增的情况,需要适当的限流才能保证我们服务不会被打崩,因此一些限流组件就随之诞生,主流的接口限流组件,如 spring cloud alibaba sent…

程序员开发技术整理(持续整理中)

前端技术: vue-前端框架element-前端框架bootstrap-前端框架echarts-图标组件 C#后端技术: webservice:soap架构:简单的通信协议,用于服务通信ORM框架:对象关系映射,如EF:对象实体…

android——枚举enum

在Kotlin中,枚举(Enum)是一种特殊的类,用于表示固定数量的常量。它允许你定义一组命名的常量值,这些值在程序中具有固定的意义。Kotlin的枚举功能强大,支持多种特性,如伴生对象、构造函数、属性…

图的基础和图的遍历(--蓝桥云)

图的基础概念 度数&#xff1a;出边入边的条数 有向边&#xff1a;有箭头 图的存储方式 //邻接表 List<int []> list[N] list<x>//存放x的所有出点的信息 list[i][j]{first,second}//其中first表示从i出发的某个出点的编号&#xff08;这个出点是i的第j个出点&…

《Effective C++》《杂项讨论——53、不要忽视编译器的警告》

文章目录 1、term53:Pay attention to compiler warnings2、面试相关3、总结4、参考 1、term53:Pay attention to compiler warnings 许多程序员习惯性地忽略编译器警告。他们认为&#xff0c;毕竟&#xff0c;如果问题很严重&#xff0c;编译器应该给一个错误信息而非警告信息…

记录一个写自定义Flume拦截器遇到的错误

先说结论&#xff1a; 【结论1】配置文件中包名要写正确 vim flume1.conf ... a1.sources.r1.interceptors.i1.type com.atguigu.flume.interceptor.MyInterceptor2$MyBuilder ... 标红的是包名&#xff0c;表黄的是类名&#xff0c;标蓝的是自己加的内部类名。这三个都…

C++RTTI(运行时类型识别)

静态类型与动态类型 当我们使用存在继承关系的类型时&#xff0c;必须将一个变量或其他表达式的静态类型与该表达式表示对象的动态类型区分开来。 表达式的静态类型在编译时总是已知的&#xff0c;它是变量声明时的类型或表达式生成的类型&#xff1b;动态类型则是变量或表计…

百度蜘蛛池平台在线发外链-原理以及搭建教程

蜘蛛池平台是一款非常实用的SEO优化工具&#xff0c;它可以帮助网站管理员提高网站的排名和流量。百度蜘蛛池原理是基于百度搜索引擎的搜索算法&#xff0c;通过对网页的内容、结构、链接等方面进行分析和评估&#xff0c;从而判断网页的质量和重要性&#xff0c;从而对网页进行…

前端学习--品优购项目

文章目录 前端学习--品优购项目1.案例铺垫文件建立与命名必备文件网站favicon图标网站TDK三大标签SEO优化常用命名 2.LOGO SEO优化3.实际代码4.申请免费域名 前端学习–品优购项目 1.案例铺垫 文件建立与命名 一个项目中为了方便实用和查找内容会有多个文件夹&#xff0c;比如…

windows10搭建reactnative,运行android全过程

环境描述 win10,react-native-cli是0.73&#xff0c;nodeJS是20&#xff0c;jdk17。这都是完全根据官网文档配置的。react-native环境搭建windows。当然官网文档会更新&#xff0c;得完全按照配置来安装&#xff0c;避免遇到环境不兼容情况。 安装nodeJS并配置 这里文档有详…

如何制作Word模板并用Java导出自定义的内容

1前言 在做项目时会按照指定模板导出word文档,本文讲解分析需求后,制作word模板、修改模板内容,最终通过Java代码实现按照模板自定义内容的导出。 2制作word模板 2.1 新建word文档 新建word文档,根据需求进行编写模板内容,调整行间距和段落格式后将指定替换位置留空。…

文件操作(随机读写篇)

1. 铺垫 建议先看&#xff1a; 文件操作&#xff08;基础知识篇&#xff09;-CSDN博客 文件操作&#xff08;顺序读写篇&#xff09;-CSDN博客 首先要指出的是&#xff0c;本篇文章中的“文件指针”并不是指FILE*类型的指针&#xff0c;而是类似于打字时的光标的东西。 打…

竞赛 python+深度学习+opencv实现植物识别算法系统

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的植物识别算法研究与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;4分 &#x1f9ff; 更多…

【pytest】pytest` 中几种常用的参数化方法

pytest 是一个强大的 Python 测试框架&#xff0c;它提供了多种参数化测试的方法。参数化测试允许你使用不同的输入集来运行相同的测试逻辑&#xff0c;从而确保代码在各种条件下都能正常工作。以下是 pytest 中几种常用的参数化方法&#xff1a; 1. 使用 pytest.mark.paramet…