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

线性判别分析(Linear Discriminant Analysis,LDA)

Linear Discriminant Analysis(LDA)

输入:

			 原始数据$D=((x_1,y_1),(x_2,y_2),...,(x_m,y_m)$ 、​			类别标签$Y=[y_1,y_2,...,y_n]$、​			降维到的维度d

输出:

投影矩阵W、投影后的样本$Z$、

算法步骤:

  • 1.计算类内散度矩阵 S w S_w Sw
  • 2.计算类间散度矩阵 S b S_b Sb
  • 3.计算矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb
  • 4.计算 S w − 1 S b S_w^{-1}S_b Sw1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . , w d ) (w_1,w_2,...,w_d) (w1,w2,...,wd)得到投影矩阵W
  • 5.对样本集中的每一个样本特征 x i x_i xi,转换为新的样本 z i = W T x i z_i=W^Tx_i zi=WTxi
  • 6.得到输出样本集 D ′ = ( ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( z m , y m ) ) D'= ((z_1,y_1),(z_2,y_2),...,(z_m,y_m)) D=((z1,y1),(z2,y2),...,(zm,ym))

二类LDA

对于两个类别的中心点 μ 0 , μ 1 μ_0,μ_1 μ0,μ1,在直线 w w w的投影为 w T μ 0 w^Tμ_0 wTμ0 w T μ 1 w^Tμ_1 wTμ1

  • 让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^Tμ_0−w^Tμ_1||_2^2 ∣∣wTμ0wTμ122
  • 希望同一种类别数据的投影点尽可能的接近 Σ x ∈ w i ( w T x − w T μ i ) 2 Σ_{x∈w_i}(w^Tx-w^Tμ_i)^2 Σxwi(wTxwTμi)2尽可能小,也就是要同类样本投影点的协方差 w T Σ 0 w 和 w T Σ 1 w w^TΣ_0w和w^TΣ_1w wTΣ0wwTΣ1w尽可能的小,即最小化 w T Σ 0 w + w T Σ 1 w w^TΣ_0w+w^TΣ_1w wTΣ0w+wTΣ1w

优化的目标函数:
J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w J(w)=\frac{||w^Tμ_0-w^Tμ_1||_2^2}{w^TΣ_0w+w^TΣ_1w} =\frac{w^T(μ_0-μ_1)(μ_0-μ_1)^Tw}{w^T(Σ_0+Σ_1)w}\\ J(w)=wTΣ0w+wTΣ1w∣∣wTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw
定义类内散度矩阵
S w = Σ 0 + Σ 1 = ∑ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + ∑ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T \\ S_w =Σ_0+Σ_1\\ =∑_{x∈X_0}(x−μ_0)(x−μ_0)^T+∑_{x∈X_1}(x−μ_1)(x−μ_1)^T\\ Sw=Σ0+Σ1=xX0(xμ0)(xμ0)T+xX1(xμ1)(xμ1)T
定义类间散度矩阵
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(μ_0−μ_1)(μ_0−μ_1)^T Sb=(μ0μ1)(μ0μ1)T
对此目标函数的优化:
J ( w ) = ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w w T ( Σ 0 + Σ 1 ) w J(w)=\frac{||w^Tμ_0-w^Tμ_1||_2^2}{w^TΣ_0w+w^TΣ_1w} =\frac{w^T(μ_0-μ_1)(μ_0-μ_1)^Tw}{w^T(Σ_0+Σ_1)w}\\ J(w)=wTΣ0w+wTΣ1w∣∣wTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)Tw
方法一:使用拉格朗日乘子法

可以将分母进行归一化:如果分子分母都可以任意取值那将会有无穷解,故将分母限制长度为1。

此时:
{ J ( w ) = w T S b w w T S w w s . t . w T S w w = 1 \begin{cases} J(w) =\frac{w^TS_bw}{w^TS_ww}\\ s.t.\ w^TS_ww = 1 \end{cases} {J(w)=wTSwwwTSbws.t. wTSww=1
使用拉格朗日乘子法:
c ( w ) = w T S b w − λ ( w T S w w − 1 ) → d c ( w ) d w = 2 S b w − 2 λ S w w = 0 → S b w = λ S w w → S w − 1 S b w = λ w c(w) = w^TS_bw - \lambda(w^TS_ww-1)\\ →\frac{dc(w)}{dw}=2S_bw-2\lambda S_ww = 0\\ →S_bw = \lambda S_ww\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ →S_w^{-1}S_bw=\lambda w\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ c(w)=wTSbwλ(wTSww1)dwdc(w)=2Sbw2λSww=0Sbw=λSww                            Sw1Sbw=λw                          
由上式得:求解的w就是矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb的特征向量

方法二:使用瑞利商的结论

瑞利商是指这样的函数

R ( A , x ) = x H A x x H x R(A,x)=\frac{x^HAx}{x^Hx} R(A,x)=xHxxHAx

它有性质:

它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小的特征值,也就是满足 λ m i n ≤ x H A x x H x ≤ λ m a x λ_{min}≤\frac{x^HAx}{x^Hx}≤λ_{max} λminxHxxHAxλmax

广义瑞利商。广义瑞利商是指这样的函数 R ( A , B , x ) R(A,B,x) R(A,B,x):

R ( A , x ) = x H A x x H B x R(A,x)=\frac{x^HAx}{x^HBx} R(A,x)=xHBxxHAx

我们令 x = B − 1 / 2 x ′ x=B−1/2x′ x=B1/2x,则分母转化为: x H B x = x ′ H ( B − 1 2 ) H B B − 1 2 x ′ = x ′ H B − 1 2 B B − 1 2 x ′ = x ′ H x ′ x^HBx=x′H(B^{\frac{−1}2})^HBB^{\frac{−1}2}x′=x′^HB^{\frac{−1}2}BB^{\frac{−1}2}x′=x′^Hx′ xHBx=xH(B21)HBB21x=xHB21BB21x=xHx

而分子转化为:

x H A x = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x^HAx=x′^HB^{−1/2}AB^{−1/2}x′ xHAx=xHB1/2AB1/2x

此时我们的 R ( A , B , x ) R(A,B,x) R(A,B,x)转化为 R ( A , B , x ′ ) R(A,B,x′) R(A,B,x):

R ( A , B , x ′ ) = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x ′ H x ′ R(A,B,x′)=\frac{x′^HB^{−1/2}AB^{−1/2}x′}{x′^Hx′} R(A,B,x)=xHxxHB1/2AB1/2x

利用前面的瑞利商的性质,我们可以很快的知道, R ( A , B , x ′ ) R(A,B,x′) R(A,B,x)的最大值为矩阵 B − 1 / 2 A B − 1 / 2 B^{−1/2}AB^{−1/2} B1/2AB1/2的最大特征值,或者说矩阵 B − 1 A B^{-1}A B1A的最大特征值,而最小值为矩阵 B − 1 A B^{-1}A B1A的最小特征值。这里用到了对矩阵进行标准化。

方法三:直接对w进行求偏导
∂ J ( w ) ∂ w = ∂ ∂ w ( w T S b w w T S w w ) = w T S w w ∂ ( w T S b w ) ∂ w − w T S b w ∂ ( w T S w w ) ∂ w = 0 → ( w T S w w ) 2 S b w − ( w T S b w ) 2 S w w = 0 除以 w T S w w : → ( w T S w w w T S w w ) S b w − ( w T S b w w T S w w ) S w w = 0 → S b w − J S w w = 0 → S w − 1 S b w − J w = 0 → J w = S w − 1 S b w → J w = S w − 1 ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w → J w = S w − 1 ( μ 0 − μ 1 ) ( ( μ 0 − μ 1 ) T w ) ) ⏟ c ∈ R → J w = c S w − 1 ( μ 0 − μ 1 ) → w = c J S w − 1 ( μ 0 − μ 1 ) \frac {\partial J(w)}{\partial w} = \frac {\partial }{\partial w}(\frac{w^TS_bw}{w^TS_ww})=w^TS_ww\frac{\partial (w^TS_bw)}{\partial w} - w^TS_bw\frac{\partial (w^TS_ww)}{\partial w} = 0 \\ →(w^TS_ww)2S_bw - (w^TS_bw)2S_ww=0\\ 除以w^TS_ww:\\ →(\frac{w^TS_ww}{w^TS_ww})S_bw - (\frac{w^TS_bw}{w^TS_ww})S_ww=0\\ →S_bw-JS_ww=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ →S_w^{-1}S_bw-Jw=0\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ →Jw=S_w^{-1}S_bw\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ →Jw=S_w^{-1}(μ_0-μ_1)(μ_0-μ_1)^Tw\ \ \ \ \ \ \ \ \\ →Jw=S_w^{-1}(μ_0-μ_1)\underbrace{((μ_0-μ_1)^Tw))}_{\text c∈R}\ \\ →Jw=cS_w^{-1}(μ_0-μ_1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ →w=\frac cJS_w^{-1}(μ_0-μ_1)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ wJ(w)=w(wTSwwwTSbw)=wTSwww(wTSbw)wTSbww(wTSww)=0(wTSww)2Sbw(wTSbw)2Sww=0除以wTSww:(wTSwwwTSww)Sbw(wTSwwwTSbw)Sww=0SbwJSww=0                                 Sw1SbwJw=0                               Jw=Sw1Sbw                                      Jw=Sw1(μ0μ1)(μ0μ1)Tw        Jw=Sw1(μ0μ1)cR ((μ0μ1)Tw)) Jw=cSw1(μ0μ1)                         w=JcSw1(μ0μ1)                         
Fisher’s linear discirminant

多类LDA

优化的目标函数:
J ( w ) = W T S b W W T S w W J(w)=\frac{W^TS_bW}{W^TS_wW}\\ J(w)=WTSwWWTSbW
其中:
S b = ∑ j = 1 k N j ( μ j − μ ) ( μ j − μ ) T , μ 为所有样本的均值向量、 N j 为第 j 类样本的个数 S w = ∑ j = 1 k S w j = ∑ j = 1 k ∑ x ∈ X j ( x − μ j ) ( x − μ j ) T S_b=\sum_{j=1}^kN_j(μ_j-μ)(μ_j-μ)^T,μ为所有样本的均值向量、N_j为第j类样本的个数\\ S_w=\sum_{j=1}^kS_{wj}=\sum_{j=1}^k\sum_{x∈X_j}(x-μ_j)(x-μ_j)^T\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Sb=j=1kNj(μjμ)(μjμ)T,μ为所有样本的均值向量、Nj为第j类样本的个数Sw=j=1kSwj=j=1kxXj(xμj)(xμj)T                                                       
有一个问题,就是 W T S b W W^TS_bW WTSbW W T S w W W^TS_wW WTSwW都是矩阵,不是标量,无法作为一个标量函数来优化!

常见的一个LDA多累优化目标函数定义为:
a r g m a x ⏟ w J ( W ) = ∏ d i a g ( W T S b W ) ∏ d i a g ( W T S w W → J ( W ) = ∏ i = 1 d ( w i T S b w i ) ∏ i = 1 d ( w i T S w w i ) = ∏ i = 1 d w i T S b w i w i T S w w i \underbrace{arg\ max\ }_{\text w} J(W)=\frac{∏diag(W^TS_bW)}{∏diag(W^TS_wW}\\ →J(W)= \frac{∏_{i=1}^d(w_i^TS_bw_i)}{∏_{i=1}^d(w_i^TS_ww_i)}=∏_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i} w arg max J(W)=diag(WTSwWdiag(WTSbW)J(W)=i=1d(wiTSwwi)i=1d(wiTSbwi)=i=1dwiTSwwiwiTSbwi
广义瑞利商

最大值是矩阵 S w − 1 S b S^{−1}_wS_b Sw1Sb的最大特征值,最大的d个值的乘积就是矩阵 S w − 1 S b S^{−1}_wS_b Sw1Sb的最大的d个特征值的乘积,此时对应的矩阵W为这最大的d个特征值对应的特征向量张成的矩阵。

相关文章:

线性判别分析(Linear Discriminant Analysis,LDA)

Linear Discriminant Analysis(LDA) 输入: 原始数据$D((x_1,y_1),(x_2,y_2),...,(x_m,y_m)$ 、​ 类别标签$Y[y_1,y_2,...,y_n]$、​ 降维到的维度d输出: 投影矩阵W、投影后的样本$Z$、算法步骤: 1.计算类内散度…...

git的分支及标签使用及情景演示

目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 ​编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中,不同环境的作用如下: 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中…...

深度解析找不到msvcp120.dll相关问题以及解决方法

​在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来很大的困扰。那么,如何解决msvcp120.dll丢失的问题呢?本文将为大家介绍…...

SQL Server 2022 安装步骤——SQL Server设置身份验证教程

目录 前言: 安装详细步骤: 第一步: 第二步: 第三步: 第四步: SQL Server 连接的方式: Window验证: SQL Server验证: 两者之间区别: 总结: SQL Server身份验证登录配置教程:​ 第一步: 第二步: 第三步: 番外篇: 前言: 本文讲解,如何安装SQL Server安…...

Maven各方面配置好了却无法显示版本

今天配置了maven环境,各方面都配置好了命令行却一直没办法显示maven的版本,原因 竟是两个JDK导致maven无法选择,因为maven依赖于JDK,导致在选择JDK的时候差生了二义 性,在环境变量里面删除不常用的JDK,只…...

Jdk 1.8 for mac 详细安装教程(含版本切换)

Jdk 1.8 for mac 详细安装教程(含版本切换) 官网下载链接 https://www.oracle.com/cn/java/technologies/downloads/#java8-mac 一、选择我们需要安装的jdk版本,这里以jdk8为例,下载 macOS 版本,M芯片下载ARM64版本…...

02MyBatisPlus条件构造器,自定义SQL,Service接口

一、条件构造器 1.MyBatis支持各种复杂的where条件,满足开发的需求 Wrapper是条件构造器,构建复杂的where查询 AbstractWrapper有构造where条件的所有方法,QueryWrapper继承后并有自己的select指定查询字段。UpdateWrapper有指定更新的字段的…...

c语言练习11周(6~10)

输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。 题干 输入任意字串&#xff0c;将串中除了首尾字符的其他字符升序排列显示&#xff0c;串中字符个数最多20个。输入样例gfedcba输出样例gbcdefa 选择排序 #include<s…...

钉钉API与集简云无代码开发连接:电商平台与营销系统的自动化集成

连接科技与能源&#xff1a;钉钉API与集简云的一次集成尝试 在数字化时代&#xff0c;许多公司面临着如何将传统的工作方式转变为更智能、高效的挑战。某能源科技有限公司也不例外&#xff0c;他们是一家专注于能源科技领域的公司&#xff0c;产品包括节能灯具、光伏逆变器、电…...

C++算法:包含三个字符串的最短字符串

涉及知识点 有序集合 字符串 题目 给你三个字符串 a &#xff0c;b 和 c &#xff0c; 你的任务是找到长度 最短 的字符串&#xff0c;且这三个字符串都是它的 子字符串 。 如果有多个这样的字符串&#xff0c;请你返回 字典序最小 的一个。 请你返回满足题目要求的字符串。…...

华为开源carbondata中的使用问题处理

carbondata中的使用问题处理 Q&#xff1a;什么是不良记录&#xff1f; A&#xff1a;由于数据类型不兼容而无法加载到CarbonData中的记录或为空或具有不兼容格式的记录被归类为不良记录。 Q&#xff1a;CarbonData中的不良记录存储在哪里&#xff1f; A&#xff1a;不良记录…...

AI:76-基于机器学习的智能城市交通管理

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…...

区块链游戏,游戏开发

区块链游戏是一种基于区块链技术的新兴游戏类型&#xff0c;它具有去中心化、安全性高、透明度高、可追溯等特点。与传统的游戏开发相比&#xff0c;区块链游戏开发需要更多的技术和知识储备&#xff0c;同时也需要更加注重游戏本身的玩法和用户体验。 在区块链游戏中&#xff…...

单片机程序无法下载?

原因一&#xff1a;电源问题 电源可能是导致STM32微控制器无法下载程序的一个常见原因。确保电源稳定对于正常运行和下载程序至关重要。以下是一些电源问题&#xff1a; 1. 电源电压不足&#xff1a;如果STM32微控制器没有足够的电压供应&#xff0c;它可能无法正常工作或下载程…...

【数据库】【sql】如何用SQL实现跨行计算

【背景】 这里的跨行计算不是指整体聚合类的函数比如SUM等的功能&#xff0c;而是指递归算法。 比如我接到有需求&#xff0c;有一个结果字段需要是目前所有行该字段的和&#xff0c;这是属于递归类的算法&#xff0c;SQL中如何实现呢&#xff1f; 【方法】 可以使用窗口函数…...

Oracle(概念含安装)

Oracle是一种关系数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;是由美国甲骨文公司&#xff08;Oracle Corporation&#xff09;开发的。它是一个客户端/服务器系统&#xff0c;可以在各种操作系统上运行&#xff0c;包括Windows、Linux和Unix等。Oracle的设计重点…...

P6入门:项目初始化4-项目详情之预算日志及汇总Budget

前言 使用项目详细信息查看和编辑有关所选项目的详细信息&#xff0c;在项目创建完成后&#xff0c;初始化项目是一项非常重要的工作&#xff0c;涉及需要设置的内容包括项目名&#xff0c;ID,责任人&#xff0c;日历&#xff0c;预算&#xff0c;资金&#xff0c;分类码等等&…...

CSS 中BFC是什么?

在CSS中&#xff0c;BFC&#xff08;块级格式化上下文&#xff09;是一个重要的概念&#xff0c;它对于理解和解决布局中的一些问题非常有帮助。本文将深入探讨BFC是什么&#xff0c;以及如何使用代码来详细解释BFC的概念和应用。 引言 在Web开发中&#xff0c;页面布局是一个…...

uniapp的几种跳转方式

1、UniApp是一个跨平台的应用开发框架&#xff0c;可以用于开发同时支持多个平台&#xff08;如iOS、Android、H5等&#xff09;的应用程序。在UniApp中&#xff0c;有多种方式可以实现页面之间的跳转。以下是其中一些常用的跳转方式&#xff1a; 页面跳转&#xff08;navigat…...

【MySQL】初识数据库

目录 1.概念2.基本使用显示当前的数据库列表创建数据库使用数据库创建表向表中插入数据查看创建的表中的数据 3.SQL的分类4.存储引擎 1.概念 MySQL本质是基于C(mysql)S(mysqld)模式的一种网络服务。 mysqld&#xff1a;它是数据库的服务器端&#xff08;这是一个守护进程&…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...