Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
- 逻辑回归(Logistic Regression,LR)
- 逻辑回归的基本思想
- 逻辑回归模型
- 逻辑回归的目标
- 最大似然估计
- 优化方法
- 逻辑回归的损失函数:对数损失
- 逻辑回归的应用
- 逻辑回归的优缺点
- 优点
- 缺点
- 逻辑回归的扩展
- 逻辑回归的实现(Python 示例)
- 最大似然估计 (Maximum Likelihood Estimation, MLE)
- 最大似然估计的基本思想
- 似然函数
- 对数似然函数
- 最大化对数似然
- 通过最大似然估计估计参数
- 示例 1:估计高斯分布的均值和方差
- 示例 2:伯努利分布的最大似然估计
- 最大似然估计的优点和局限
- 优点
- 局限
- 参考资料
逻辑回归(Logistic Regression,LR)
逻辑回归(Logistic Regression) 是一种广泛应用于分类问题的统计方法,尤其用于二分类问题(即预测目标变量有两个类别)。尽管它的名字中带有“回归”二字,但它实际上是一种分类算法。逻辑回归通过对输入特征进行建模,输出一个概率值,表示某个类别的可能性。
逻辑回归的基本思想
逻辑回归试图找出一个合适的数学模型,将输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,…,xn) 映射到目标标签 Y Y Y 上。对于二分类问题,目标是根据输入特征预测 Y = 1 Y=1 Y=1 或 Y = 0 Y=0 Y=0 的概率。
逻辑回归的核心是 逻辑函数(Logistic Function) 或者称为 Sigmoid 函数,它将任何实数映射到 [0, 1] 之间,从而可以解释为概率。
逻辑回归模型
假设输入特征 X = ( x 1 , x 2 , … , x n ) X=(x_1, x_2, …, x_n) X=(x1,x2,…,xn) 和权重参数 w = ( w 1 , w 2 , … , w n ) w=(w_1, w_2, …, w_n) w=(w1,w2,…,wn),逻辑回归模型的输出是通过一个线性组合加上偏置项,输入到一个 Sigmoid 函数中:
z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n + b z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b z=w1x1+w2x2+⋯+wnxn+b
然后,将 z z z 通过 Sigmoid 函数 σ ( z ) σ(z) σ(z) 转换为一个概率值:
P ( Y = 1 ∣ X ) = σ ( z ) = 1 1 + e − z P(Y = 1 \mid X) = \sigma(z) = \frac{1}{1 + e^{-z}} P(Y=1∣X)=σ(z)=1+e−z1
其中, σ ( z ) σ(z) σ(z) 是 Sigmoid 函数,它将任何实数 z z z 映射到 (0, 1) 之间,表示一个类别的概率。 P ( Y = 1 ∣ X ) P(Y=1∣X) P(Y=1∣X) 就是预测样本属于类别1的概率。
- 如果 P ( Y = 1 ∣ X ) > 0.5 P(Y=1∣X)>0.5 P(Y=1∣X)>0.5,则预测类别为 1;
- 如果 P ( Y = 1 ∣ X ) ≤ 0.5 P(Y=1∣X)≤0.5 P(Y=1∣X)≤0.5,则预测类别为 0。
逻辑回归的目标
在逻辑回归中,我们的目标是通过训练数据来学习最优的权重参数 w 1 , w 2 , … , w n w_1, w_2, …, w_n w1,w2,…,wn 和偏置项 b b b,使得模型能够准确地预测数据的类别。为此,我们使用最大似然估计(Maximum Likelihood Estimation, MLE)来估计这些参数。
最大似然估计
假设我们有 m m m 个训练样本,每个样本的输入为 X ( i ) X^{(i)} X(i),标签为 Y ( i ) Y^{(i)} Y(i),其中 i = 1 , 2 , … , m i = 1, 2, \dots, m i=1,2,…,m。
逻辑回归模型的似然函数是基于每个训练样本的预测概率和真实标签的结合。对于每个样本,预测的概率为 P ( Y = 1 ∣ X ( i ) ) P(Y = 1 \mid X^{(i)}) P(Y=1∣X(i)),因此整个训练集的似然函数为:
L ( w , b ) = ∏ i = 1 m P ( Y ( i ) ∣ X ( i ) ; w , b ) L(w, b) = \prod_{i=1}^{m} P(Y^{(i)} \mid X^{(i)}; w, b) L(w,b)=i=1∏mP(Y(i)∣X(i);w,b)
因为 Y ( i ) Y^{(i)} Y(i) 是 0 或 1,所以可以将似然函数写成:
L ( w , b ) = ∏ i = 1 m [ σ ( z ( i ) ) Y ( i ) ⋅ ( 1 − σ ( z ( i ) ) ) 1 − Y ( i ) ] L(w, b) = \prod_{i=1}^{m} \left[\sigma(z^{(i)})^{Y^{(i)}} \cdot (1 - \sigma(z^{(i)}))^{1 - Y^{(i)}} \right] L(w,b)=i=1∏m[σ(z(i))Y(i)⋅(1−σ(z(i)))1−Y(i)]
为了方便优化,通常取对数似然函数(Log-Likelihood),得到:
ℓ ( w , b ) = ∑ i = 1 m [ Y ( i ) log σ ( z ( i ) ) + ( 1 − Y ( i ) ) log ( 1 − σ ( z ( i ) ) ) ] \ell(w, b) = \sum_{i=1}^{m} \left[Y^{(i)} \log \sigma(z^{(i)}) + (1 - Y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] ℓ(w,b)=i=1∑m[Y(i)logσ(z(i))+(1−Y(i))log(1−σ(z(i)))]
目标是最大化对数似然函数 ℓ ( w , b ) \ell(w, b) ℓ(w,b),即找到使对数似然函数最大化的权重 w w w 和偏置项 b b b。
优化方法
我们通常使用梯度下降法(Gradient Descent)来优化对数似然函数。梯度下降法通过计算损失函数(对数似然的负数)对模型参数的梯度来更新参数,以减小损失。
梯度下降更新规则为:
w j ← w j − α ∂ ∂ w j ℓ ( w , b ) w_j \leftarrow w_j - \alpha \frac{\partial}{\partial w_j} \ell(w, b) wj←wj−α∂wj∂ℓ(w,b)
b ← b − α ∂ ∂ b ℓ ( w , b ) b \leftarrow b - \alpha \frac{\partial}{\partial b} \ell(w, b) b←b−α∂b∂ℓ(w,b)
其中, α \alpha α 是学习率。
逻辑回归的损失函数:对数损失
由于逻辑回归是基于最大似然估计的,因此它的损失函数通常称为对数损失(Log-Loss)或交叉熵损失(Cross-Entropy Loss),公式如下:
L ( w , b ) = − 1 m ∑ i = 1 m [ Y ( i ) log ( σ ( z ( i ) ) ) + ( 1 − Y ( i ) ) log ( 1 − σ ( z ( i ) ) ) ] \mathcal{L}(w, b) = - \frac{1}{m} \sum_{i=1}^{m} \left[Y^{(i)} \log(\sigma(z^{(i)})) + (1 - Y^{(i)}) \log(1 - \sigma(z^{(i)})) \right] L(w,b)=−m1i=1∑m[Y(i)log(σ(z(i)))+(1−Y(i))log(1−σ(z(i)))]
对数损失衡量的是预测的概率分布与真实标签之间的差距。损失函数的值越小,模型的预测越准确。
逻辑回归的应用
逻辑回归适用于以下场景:
- 二分类问题:例如,电子邮件分类(垃圾邮件与非垃圾邮件)、医疗诊断(是否患病)、银行贷款申请(是否批准)等。
- 多分类问题:通过多项式逻辑回归(Multinomial Logistic Regression)扩展,可以处理多类问题,常用于文本分类或图像分类。
逻辑回归的优缺点
优点
- 简单易懂:逻辑回归是一种线性模型,易于理解和实现。
- 高效:逻辑回归在训练数据量较小的情况下能表现得很好,计算速度较快。
- 概率输出:它不仅提供类别预测,还提供每个类别的概率,这对于很多应用场景非常有用。
- 可解释性强:模型参数(即权重)能够反映特征对预测结果的影响,便于进行模型解释。
缺点
- 线性假设:逻辑回归假设特征和目标之间的关系是线性的。如果数据呈现非线性关系,逻辑回归可能无法很好地拟合数据。
- 对异常值敏感:逻辑回归对异常值比较敏感,异常值可能会影响模型的性能。
- 特征相关性问题:逻辑回归对特征之间的相关性较为敏感,强相关的特征可能会导致多重共线性问题。
逻辑回归的扩展
- 多项式逻辑回归(Multinomial Logistic Regression):用于多分类问题,模型的输出不是一个概率,而是多个类别的概率分布。
- 正则化(Regularization):为了防止过拟合,可以在逻辑回归中加入L1或L2正则化项。L1正则化能生成稀疏解,L2正则化可以避免过大权重的出现。
逻辑回归的实现(Python 示例)
使用 scikit-learn
库,可以非常方便地实现逻辑回归模型:
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score, classification_report# 加载鸢尾花数据集
data = load_iris()
X = data.data # 特征数据
y = data.target # 标签数据# 将标签转为二分类问题:1. "Setosa"(类别 0),2. 非 "Setosa"(类别 1)
y_binary = (y == 0).astype(int)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y_binary, test_size=0.3, random_state=42)# 创建逻辑回归模型
model = LogisticRegression()# 训练模型
model.fit(X_train, y_train)# 打印训练后的模型参数
print(f"模型的权重 (w): {model.coef_}")
print(f"模型的偏置 (b): {model.intercept_}")# 用测试集进行预测
y_pred = model.predict(X_test)# 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型的准确率: {accuracy * 100:.2f}%")# 输出分类报告(精确率、召回率、F1分数等)
print("\n分类报告:")
print(classification_report(y_test, y_pred))
最大似然估计 (Maximum Likelihood Estimation, MLE)
最大似然估计(MLE) 是一种常用的统计方法,用于估计模型参数,使得在给定数据下,模型的概率最大化。简单来说,最大似然估计旨在找到最有可能生成观测数据的参数值。
MLE 是一种 参数估计方法,广泛应用于许多机器学习和统计建模中,尤其在 监督学习 和 概率模型 中应用广泛。
主要作用是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
当“模型已定,参数未知”时,通过若干次试验,观察其结果,利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
最大似然估计的基本思想
假设我们有一组观测数据,记为 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn},这些数据来自某个概率分布,该分布有一个参数 θ \theta θ。我们的目标是通过最大化 似然函数 来估计参数 θ \theta θ。
具体来说,假设我们已知数据的分布类型(比如高斯分布、伯努利分布等),但我们并不知道分布的具体参数。最大似然估计就是通过寻找一个参数 θ \theta θ,使得给定这个参数下,观测到的数据的概率最大
。
似然函数
给定数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn} 和模型的参数 θ \theta θ,似然函数(Likelihood Function)表示在给定参数 θ \theta θ 下,观察到数据的概率。假设数据集中的样本独立且同分布(i.i.d.),则似然函数可以表示为:
L ( θ ; X ) = P ( X ∣ θ ) = ∏ i = 1 n P ( x i ∣ θ ) L(\theta; X) = P(X \mid \theta) = \prod_{i=1}^{n} P(x_i \mid \theta) L(θ;X)=P(X∣θ)=i=1∏nP(xi∣θ)
其中, P ( x i ∣ θ ) P(x_i \mid \theta) P(xi∣θ) 是在参数 θ \theta θ 下,样本 x i x_i xi 出现的概率。
对数似然函数
由于似然函数通常涉及乘法,计算起来可能会很复杂。为了解决这个问题,我们通常使用 对数似然函数,因为对数函数是单调递增的,因此最大化似然函数和最大化对数似然函数是等价的。对数似然函数为:
ℓ ( θ ; X ) = log L ( θ ; X ) = ∑ i = 1 n log P ( x i ∣ θ ) \ell(\theta; X) = \log L(\theta; X) = \sum_{i=1}^{n} \log P(x_i \mid \theta) ℓ(θ;X)=logL(θ;X)=i=1∑nlogP(xi∣θ)
对数似然函数将乘积转化为求和,计算更为简便。
最大化对数似然
最大似然估计的目标是找到一个参数值 θ ^ \hat{\theta} θ^,使得对数似然函数最大化,即:
θ ^ = arg max θ ℓ ( θ ; X ) \hat{\theta} = \arg\max_\theta \ell(\theta; X) θ^=argθmaxℓ(θ;X)
这就是最大似然估计的核心思想:通过找到参数 θ \theta θ 使得在该参数下,数据的对数似然值最大。
通过最大似然估计估计参数
示例 1:估计高斯分布的均值和方差
假设我们有一个来自高斯分布的数据集 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn},我们想通过最大似然估计来估计其 均值 μ \mu μ 和 方差 σ 2 \sigma^2 σ2。
高斯分布的概率密度函数为:
P ( x ∣ μ , σ 2 ) = 1 2 π σ 2 exp ( − ( x − μ ) 2 2 σ 2 ) P(x \mid \mu, \sigma^2) = \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x - \mu)^2}{2\sigma^2} \right) P(x∣μ,σ2)=2πσ21exp(−2σ2(x−μ)2)
根据似然函数的定义,数据集的似然函数为:
L ( μ , σ 2 ; X ) = ∏ i = 1 n 1 2 π σ 2 exp ( − ( x i − μ ) 2 2 σ 2 ) L(\mu, \sigma^2; X) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi \sigma^2}} \exp\left( -\frac{(x_i - \mu)^2}{2\sigma^2} \right) L(μ,σ2;X)=i=1∏n2πσ21exp(−2σ2(xi−μ)2)
对似然函数取对数得到对数似然函数:
ℓ ( μ , σ 2 ; X ) = ∑ i = 1 n [ − 1 2 log ( 2 π σ 2 ) − ( x i − μ ) 2 2 σ 2 ] \ell(\mu, \sigma^2; X) = \sum_{i=1}^{n} \left[ -\frac{1}{2} \log(2\pi \sigma^2) - \frac{(x_i - \mu)^2}{2\sigma^2} \right] ℓ(μ,σ2;X)=i=1∑n[−21log(2πσ2)−2σ2(xi−μ)2]
为了最大化对数似然函数,我们分别对 μ \mu μ 和 σ 2 \sigma^2 σ2 求导,并令其为 0,得到最大似然估计的参数值。
-
对 μ \mu μ 求导:
∂ ℓ ∂ μ = ∑ i = 1 n x i − μ σ 2 = 0 \frac{\partial \ell}{\partial \mu} = \sum_{i=1}^{n} \frac{x_i - \mu}{\sigma^2} = 0 ∂μ∂ℓ=i=1∑nσ2xi−μ=0
解得:
μ ^ = 1 n ∑ i = 1 n x i \hat{\mu} = \frac{1}{n} \sum_{i=1}^{n} x_i μ^=n1i=1∑nxi
这就是样本均值的最大似然估计。 -
对 σ 2 \sigma^2 σ2 求导:
∂ ℓ ∂ σ 2 = − n 2 σ 2 + 1 2 σ 4 ∑ i = 1 n ( x i − μ ) 2 = 0 \frac{\partial \ell}{\partial \sigma^2} = -\frac{n}{2\sigma^2} + \frac{1}{2\sigma^4} \sum_{i=1}^{n} (x_i - \mu)^2 = 0 ∂σ2∂ℓ=−2σ2n+2σ41i=1∑n(xi−μ)2=0
解得:
σ 2 ^ = 1 n ∑ i = 1 n ( x i − μ ^ ) 2 \hat{\sigma^2} = \frac{1}{n} \sum_{i=1}^{n} (x_i - \hat{\mu})^2 σ2^=n1i=1∑n(xi−μ^)2
这就是样本方差的最大似然估计。
示例 2:伯努利分布的最大似然估计
假设我们有一组来自 伯努利分布 的观测数据。伯努利分布的概率质量函数为:
P ( x ∣ p ) = p x ( 1 − p ) 1 − x P(x \mid p) = p^x (1 - p)^{1 - x} P(x∣p)=px(1−p)1−x
其中, x ∈ { 0 , 1 } x \in \{0, 1\} x∈{0,1}, p p p 是成功的概率。
假设我们有 n n n 个独立的伯努利试验观测值 X = { x 1 , x 2 , … , x n } X = \{x_1, x_2, \dots, x_n\} X={x1,x2,…,xn},我们要估计参数 p p p。则似然函数为:
L ( p ; X ) = ∏ i = 1 n p x i ( 1 − p ) 1 − x i L(p; X) = \prod_{i=1}^{n} p^{x_i} (1 - p)^{1 - x_i} L(p;X)=i=1∏npxi(1−p)1−xi
对其取对数得到对数似然函数:
ℓ ( p ; X ) = ∑ i = 1 n [ x i log p + ( 1 − x i ) log ( 1 − p ) ] \ell(p; X) = \sum_{i=1}^{n} \left[ x_i \log p + (1 - x_i) \log(1 - p) \right] ℓ(p;X)=i=1∑n[xilogp+(1−xi)log(1−p)]
最大化对数似然函数,求导并令其为 0:
∂ ℓ ∂ p = ∑ i = 1 n x i p − 1 − x i 1 − p = 0 \frac{\partial \ell}{\partial p} = \sum_{i=1}^{n} \frac{x_i}{p} - \frac{1 - x_i}{1 - p} = 0 ∂p∂ℓ=i=1∑npxi−1−p1−xi=0
解得:
p ^ = 1 n ∑ i = 1 n x i \hat{p} = \frac{1}{n} \sum_{i=1}^{n} x_i p^=n1i=1∑nxi
这就是样本中 1 的比例的最大似然估计。
最大似然估计的优点和局限
优点
- 一致性:随着样本数量 n n n 的增加,最大似然估计趋近于真实的参数值(在大样本下是无偏的)。
- 有效性:MLE 是在满足正则条件下具有最小方差的估计量(在大样本下)。
- 广泛适用:最大似然估计可以用于各种类型的概率分布,不仅限于常见的分布(如高斯分布、伯努利分布等)。
局限
- 计算复杂度高:当样本量大或分布复杂时,最大似然估计的计算可能非常复杂,需要使用数值优化方法。
- 模型假设的依赖性:MLE 假设我们知道数据的分布类型,如果选择了错误的模型分布,估计结果可能会偏差。
- 需要大量数据:对于小样本数据,最大似然估计可能会导致过拟合,或者估计不准确。
参考资料
Simplifying Logistic Regression — A Beginner’s Guide with a Real-world Practical Example
【五分钟机器学习】机器分类的基石:逻辑回归Logistic Regression
最大似然估计(通俗讲解)
相关文章:
Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)
Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计) 逻辑回归(Logistic Regression,LR)逻辑回归的基本思想逻辑回归模型逻辑回归的目标最大似然估计优化方法 逻辑回归…...
【开源】A063—基于Spring Boot的农产品直卖平台的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...
单链表---合并两个链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表, 将两个链表中最小的结点依次尾插到…...
draggable插件——实现元素的拖动排序——拖动和不可拖动的两种情况处理
最近在写后台管理系统的时候,遇到一个需求,就是关于拖动排序的功能。 我之前是写过一个关于拖动表格的功能,此功能可以实现表格中的每一行数据上下拖动实现排序的效果。 vue——实现表格的拖拽排序功能——技能提升 但是目前我这边的需求是…...
vite+vue3 配置ip和端口以及自动打开浏览器
编辑文件vite.config.ts 修改前vite.config.ts文件内容 import { defineConfig } from vite import vue from vitejs/plugin-vue// https://vite.dev/config/ export default defineConfig({plugins: [vue()], })修改vite.config.ts后文件内容 新增server内容 server:{host…...
Netty面试内容整理-Netty 概述
Netty 是一个基于 Java 的异步事件驱动网络应用框架,常用于构建高性能、高并发的网络服务。Netty 封装了 Java NIO 的复杂细节,使得开发者可以方便地构建高效的网络应用。以下是 Netty 的概述: Netty 的特点 ● 异步和事件驱动:Netty 采用异步非阻塞的 I/O 模型,基于事件驱…...
Docker搭建达梦数据库--基于 X86 架构
1、部署环境 X86_64 架构的服务器 1 台,安装好docker 拉取镜像 官方最新非授权版本有些函数方法无法使用 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/dm8_single:dm8_20230808_rev197096_x86_rh6_64查看镜像 docker images | grep dm8运行容器 docker run…...
4. 设计模式分类
4.1 创建型模式 这类模式提供创建对象的机制,能够提升已有代码的灵活性和可复用性。 序 号 类 型 业务场景 实现要点 1 工 厂 方 法 多种类型商品不同接口,统一发奖服 务搭建场景 定义一个创建对象的接口,让其子类自 己决定实例化哪一个工厂类,工厂模式 使其创建过程延迟…...
【SKFramework框架核心模块】3-12、网络请求模块
推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享QQ群:398291828小红书小破站 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【Unity3D框架】SKFramework框架完全教程《全…...
MacOS安装软件后无法启动报错:“已损坏,无法打开,你应该将它移到废纸篓“
目录 报错截图 解决方法 知识科普 报错截图 解决方法 1. 打开系统设置->安全性与隐私->选择任何来源 2. 如果打开没有看到"任何来源",如果不开启“任何来源”的选项,会直接影响到无法运行的第三方应用。开启“任何来源”的方法如下&a…...
每日速记10道java面试题14-MySQL篇
其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...
结构型-组合模式(Composite Pattern)
什么是组合模式 又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 结构 抽象根节点(Co…...
Netty面试内容整理-高级特性
Netty 提供了一些高级特性,使得它成为一个功能强大、灵活且适用于高并发、高性能场景的网络框架。以下是 Netty 的一些高级特性及其详细介绍: 零拷贝技术 ● 概念:零拷贝(Zero-Copy)是一种避免将数据从内核缓冲区复制到用户缓冲区的技术,从而减少内存拷贝,提高性能。 ●…...
【自动化】十款开源测试开发工具推荐自动化、性能、造数据、流量复制等
目录 一、AutoMeter-API 自动化测试平台二、QA Wolf 浏览器自动化测试工具三、Mimesis 用于 Python 的高性能虚假数据生成器四、Ddosify 高性能负载测试工具五、AutoCannon HTTP/1.1 基准测试工具六、Sharingan 流量录制回放工具七、randdata 随机测试数据生成工具八、Drission…...
【网络篇】HTTP知识
键入网址到网页显示,期间发生了什么? 浏览器第一步是解析URL,这样就得到了服务器名称和文件的路径名,然后根据这些信息生成http请求,通过DNS查询得到我们要请求的服务器地址,然后添加TCP头、IP头以及MAC头&…...
【飞牛云 fnos】 安装部署 Music Tag Web
在上一篇文章中,我们探讨了如何使用 Docker 和 Docker Compose 来部署 Music Tag Web。今天,我们将详细介绍如何在流行的 NAS 系统——飞牛云 FNOs 中安装 Music Tag Web,以便您能够轻松管理并丰富您的音乐库。 音乐刮削:让您的音…...
springmvc的简介
SpringMVC的介绍与第一个程序的开发步骤 1. 介绍 SpringMVC是一个实现了MVC架构模式的Web框架,底层基于Servlet实现。 SpringMVC已经将MVC架构模式实现了,因此只要我们是基于SpringMVC框架写代码,编写的程序就是符合MVC架构模式的。&#x…...
WordPress阅读文章显示太慢的处理
有两种方式, 1. 完全静态化。 尝试了几个插件,都未成功。算了放弃了。因为感觉到实际使用也不方便。 2. cache缓存 用了WP Super Cache测试了一下,打开过一次后,文章秒开,也算达到了要求。...
如何学习游戏外挂编程
学习游戏外挂编程需要掌握一定的编程基础和相关知识。以下是一些学习游戏外挂编程的步骤和建议: 学习编程基础:首先,你需要学习一种编程语言,比如C或者Python。了解基本的编程概念,如变量、函数、循环和条件语句等。这…...
AI大模型驱动数据分析:利用自然语言实现数据查询与可视化(1)
在当今AI驱动的时代,数据分析已成为各行各业不可或缺的能力。然而,传统的数据分析流程通常需要掌握SQL、数据处理和可视化等多项专业技能,这对非技术背景的业务人员来说是一个不小的挑战。 想象一下,当数据中心的负责人打开手机时…...
UE----Ios打包笔记
UE 打包 IOS 软件 1.前期准备 1.1. 首先我们需要 一台装有Xcode 的MAC笔记本(知道开机密码 最好是空的笔记本 剩余内存要大 ) 1.2. 一台IOS手机 1.3. 一个申请了开发者账户的 Apple ID (苹果账号) 知晓账号与密码最好 因为很麻烦 1.4. UE 需要 的 兼…...
Python_Flask03
这篇文章主要介绍的是数据库的增删改查操作,无多余好说的。 from flask import Flask from flask_sqlalchemy import SQLAlchemy from sqlalchemy import text from flask_migrate import Migrateapp Flask(__name__)# 本地基础信息的主机名 HOSTNAME "127.0…...
PGSQL:联合唯一索引的创建和删除
创建联合唯一索引 假设有一个表 your_table,它有多个列,你想在其中的几列上创建一个联合唯一索引。以下是创建联合唯一索引的 SQL 语句: CREATE UNIQUE INDEX idx_unique_columns ON your_table(column1, column2, ...);注意: …...
QT5 Creator (Mingw编译器) 调用VS2019 (阿里云 oss C++库) 报错的解决方法
方法就是不要用VS2019编译,要用MINgw32编译。注意要安装高版本的qt,其自带的mingw编译器才能支持,找不到qt5cored.dll,就把qt5core.dll改名为qt5cored.dll。 编译命令如下: cmake -G "MinGW Makefiles" ^-…...
使用缓存提升Web应用性能:从新手到高手的实践指南
引言 在现代Web开发中,性能优化是确保用户体验和系统稳定性的关键。使用缓存是提升网站性能的有效手段之一,可以显著减少数据库访问和计算开销。根据“网站优化第一定律”,缓存可以提升网站的响应速度,减少延迟,从而改…...
详尽的oracle sql函数
1,CHR 输入整数,返回对应字符。 用法:select chr(65),chr(78) from dual; 2,ASCII 输入字符,返回对应ASCII码。 用法:select ascii(A),ascii(B) from dual; 3,CONCAT 输入两个字符串,…...
Unity 设计模式-策略模式(Strategy Pattern)详解
策略模式(Strategy Pattern)是一种行为型设计模式,定义了一系列算法,并将每种算法封装到独立的类中,使得它们可以互相替换。策略模式让算法可以在不影响客户端的情况下独立变化,客户端通过与这些策略对象进…...
AI Agent重塑微服务治理
导读 随着技术架构的发展,微服务系统的复杂性不断增加,对运维提出了更高的要求。为了应对这一挑战,一种AI驱动的微服务治理方案被提出。该方案采用多智能体架构,将运维专家经验整合,并通过自然语言交互和智能推理&…...
SpringBoot整合knife4j,以及会遇到的一些bug
这篇文章主要讲解了“Spring Boot集成接口管理工具Knife4j怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Boot集成接口管理工具Knife4j怎么用”吧! 一…...
vue自定义组件双向数据绑定
1、使用v - model指令(推荐方式)2、手动实现双向绑定(不使用v - model语法糖)3、 .sync修饰符4、.sync 与 v - model 的比较 1、使用v - model指令(推荐方式) 在 Vue 中,v - model是一个语法糖…...
【Linux课程学习】:想对Linux说的话
🎁个人主页:我们的五年 🔍系列专栏:Linux课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一.Linux学习存在的问题: 二.Linu…...
重生之我在异世界学编程之C语言:初识一维和二维数组篇
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文数组的基本类型:一维…...
《Vue 实战:小型项目练手与感悟》
一、Vue 基础与准备 在开始 Vue 项目之前,对 JavaScript、CSS、HTML 基础知识的掌握至关重要。 一、JavaScript 基础知识要求 数组常用方法 filter ():创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 map ()&a…...
使用uniapp开发小程序场景:在百度地图上调用接口返回的设备相关信息并展示
首先在百度地图开发者平台注册微信小程序开发密钥下载百度地图SDK-bmap-wx.min.js,下载地址在项目入口index.html页面进行引入页面中进行调用,代码示例如下<map id"map" longitude"108.95" latitude"34.34" scale"3" :m…...
计算机毕业设计Python轨道交通客流预测分析可视化 智慧交通 机器学习 深度学习 人工智能 爬虫 交通大数据
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
使用 Wireshark 捕获和分析 IEC 60870-5-104 流量基本步骤
一 .IEC 60870-5-104 是什么? IEC 60870-5-104 是一种用于电力系统中数据传输的通信协议,它结合了 IEC 60870-5-101 的应用服务和 TCP/IP 网络协议。该标准定义了一种通过网络连接进行远动控制(如遥测、遥控等)的方法。 使用 Wireshark 捕…...
WPF+LibVLC开发播放器-音量控制和倍速控制
界面 界面上增加音量的控件和倍速控制控件 音量控制 主要也是一个Slider进度条控件来实现音量调节 我们这里设置默认的最大值为100,默认Value值也为100,默认声音开到最大 这里目前完全由前端控制音量调节,可以直接使用ValueChanged事件实…...
【数据中心建设资料】数据中心安全建设解决方案,数据中心整理解决方案,数据中心如何做到安全保障,数据中台全方案(Word全原件)
第一章 解决方案 1.1 建设需求 1.2 建设思路 1.3 总体方案 信息安全系统整体部署架构图 1.3.1 IP准入控制系统 1.3.2 防泄密技术的选择 1.3.3 主机账号生命周期管理系统 1.3.4 数据库账号生命周期管理系统 1.3.5 双因素认证系统 1.3.6 数据库审计系统 1.3.7 数据脱敏系统 1.3.8…...
Apache HTTPD多后缀解析漏洞
进入靶场 上来就是一个文件上传的功能 经过尝试,发现只有jpg,png,gif文件能上传上去,而题目又说了,这个是Apache的中间件,Apache文件解析漏洞涉及到一个Apache解析文件的特性,Apache默认一个文…...
html+css+JavaScript实现轮播图
html+css+JavaScript实现轮播图 实现思路 要实现一个轮播图功能,我们需要HTML来构建结构,CSS来设计样式,以及JavaScript来添加交互功能。下面我将分别分析这三个部分是如何协同工作来实现轮播图的。 HTML - 结构 HTML部分定义了轮播图的基本结构,包括图片列表、指示器和…...
Golang 八股(持续补充...)
目录 进程、线程、协程 Go语言——垃圾回收 GC的触发条件 GC调优 GMP调度和CSP模型 Groutine的切换时机 Goroutine调度原理 Goroutine的抢占式调度 Context结构原理 Context原理 Golang内存分配机制 竞态、内存逃逸 golang内存对齐机制 golang中new和make的区别&a…...
MFC实现全屏功能
之前全屏都是参考: MFC单文档(SDI)全屏程序的实现 主要思路就是将各种菜单工具栏隐藏恢复。 随着MFC的升级,MFC框架本身就具备了全屏的功能。 微软有一个全屏实现类: CFullScreenImpl Class managing full-screen mod…...
AI换脸facefusion 3.0.1安装及其使用方法(源代码安装)
文章目录 1. 本文简介2. 软件环境准备软件下载及安装代码下载 3. Conda环境4. 加速环境5. 依赖安装6. 图片测试 今天给大家分享换脸facefusion 3.0.1使用方法。不仅可以对单张图片换脸,也可以对视频换脸。如果是单张图片的话,没有GPU速度也很快ÿ…...
PCL【C++】点云融合
//图像到点云的转换//C 标准库 #include <iostream> #include <string>//OpenCV 库 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp>//PCL 库 #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #inclu…...
处理一个MP4视频,检测里面出现的人脸,并根据特征值计算相似度来追踪和显示出每个人脸的ID
使用Mediapipe, opencv 处理一个MP4视频,检测里面出现的人脸,然后使用Mediapipe 计算每个出现的人脸的特征值,并根据特征值计算相似度来追踪和显示出每个人脸的ID import cv2 import mediapipe as mp import numpy as np# 初始化Mediapipe人脸检测和FaceMesh模型 mp_face_de…...
一文了解模式识别顶会ICPR 2024的研究热点与最新趋势
简介 对模式识别研究领域前沿方向的跟踪是提高科研能力和制定科研战略的关键。本文通过图文并茂的方式介绍了ICPR 2024的研究热点与最新趋势,帮助读者了解和跟踪模式识别的前沿研究方向。本推文的作者是黄星宇,审校为邱雪和许东舟。 一、会议介绍 ICPR…...
【WRF-Urban】WPS中有关Urban的变量设置
【WRF-Urban】WPS中有关Urban的变量设置 地理数据源的配置WRF-Urban所需静态地理数据1、LANDUSE:包含城市地表分类的土地利用数据。2、URB_PARAM:城市参数数据集。3、FRC_URB2D:城市覆盖度数据集 WRF默认设置(美国)数据…...
Android中 ViewPager 和 ViewPager2 的区别
学习笔记 ViewPager 和 ViewPager2 都是 Android 中实现滑动页面效果的控件,用于在一系列页面之间进行切换。ViewPager2 是 ViewPager 的升级版本,提供了更多功能和灵活性。本文将从各个方面详细对比这两个控件,帮助你理解它们的区别和使用场…...
python使用pdfplumber工具包加载pdf格式数据
说在前面 大问题,对于两栏pdf数据,我这边提取出来的数据发现它很离谱。 它居然直接忽略了两栏特性,直接将第1栏的句子拼接上了第2栏的句子 解决方法:pypdf2尝试后可以正确识别两栏数据,非常棒。 示例 pdfplumber代…...
C++设计模式:代理模式(Proxy)(附案例代码)
什么是代理模式? 代理模式是一种结构型设计模式,主要用于为某个对象提供一个代理,以便在不直接访问对象的情况下控制对其的访问。代理可以在客户端和目标对象之间起到一个中介的作用,添加一些额外的操作,例如权限控制…...