逻辑回归:损失和正则化技术的深入研究
逻辑回归:损失和正则化技术的深入研究
引言
逻辑回归是一种广泛应用于分类问题的统计模型,尤其在机器学习领域中占据着重要的地位。尽管其名称中包含"回归",但逻辑回归本质上是一种分类算法。它的核心思想是在线性回归的基础上添加一个Sigmoid函数,将线性回归的输出映射到[0,1]区间,从而将连续值问题转换为概率分类问题[1]。
逻辑回归模型的训练过程与线性回归有两个关键区别:损失函数的选择和正则化的应用。本研究报告将深入探讨这两个方面,帮助读者理解逻辑回归模型的工作原理及其优化方法。
损失函数
逻辑回归与线性回归的损失函数差异
在线性回归中,我们通常使用平方损失函数(也称为L2损失函数)作为损失函数。平方损失函数计算预测值与实际值之间的平方差:
Loss = 1 2 ( y predicted − y actual ) 2 \text{Loss} = \frac{1}{2}(y_{\text{predicted}} - y_{\text{actual}})^2 Loss=21(ypredicted−yactual)2
其中, y predicted y_{\text{predicted}} ypredicted是模型的预测值, y actual y_{\text{actual}} yactual是实际值。
然而,在逻辑回归中,我们使用对数损失函数(也称为交叉熵损失)作为损失函数。对数损失函数的计算公式为:
Loss = − 1 m ∑ i = 1 m [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log(\hat{y}_i) + (1 - y_i)\log(1 - \hat{y}_i)] Loss=−m1i=1∑m[yilog(y^i)+(1−yi)log(1−y^i)]
其中:
- m m m是样本数量
- y i y_i yi是第 i i i个样本的真实标签(0或1)
- y ^ i \hat{y}_i y^i是模型对第 i i i个样本的预测概率
对数损失函数在逻辑回归中的应用有以下几个原因:
- 处理概率输出:由于逻辑回归的输出是概率(范围在0到1之间),对数损失函数可以有效地衡量预测概率与真实标签之间的差异。
- 解决梯度下降问题:在线性回归中,使用平方损失函数在梯度下降过程中可能会遇到梯度消失或梯度爆炸的问题。而对数损失函数可以提供更稳定的梯度。
- 处理类别不平衡:在类别不平衡的数据集中,对数损失函数可以给予少数类更多的权重,从而提高模型的性能。
对数损失函数的数学推导
对数损失函数的推导基于最大似然估计。假设我们有一个二分类问题,其中每个样本 i i i都有一个特征向量 x i x_i xi和一个标签 y i y_i yi(0或1)。逻辑回归模型的预测概率可以表示为:
y ^ i = P ( y i = 1 ∣ x i ) = σ ( w T x i + b ) \hat{y}_i = P(y_i=1|x_i) = \sigma(w^T x_i + b) y^i=P(yi=1∣xi)=σ(wTxi+b)
其中, σ \sigma σ是Sigmoid函数, w w w是权重向量, b b b是偏置项。
根据二项分布的似然函数,我们可以写出所有样本的似然函数:
L ( w , b ) = ∏ i = 1 m P ( y i ∣ x i ; w , b ) = ∏ i = 1 m y ^ i y i ( 1 − y ^ i ) 1 − y i L(w, b) = \prod_{i=1}^{m} P(y_i|x_i; w, b) = \prod_{i=1}^{m} \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1 - y_i} L(w,b)=i=1∏mP(yi∣xi;w,b)=i=1∏my^iyi(1−y^i)1−yi
为了最大化似然函数,我们通常会取对数,得到对数似然函数:
log L ( w , b ) = ∑ i = 1 m [ y i log y ^ i + ( 1 − y i ) log ( 1 − y ^ i ) ] \log L(w, b) = \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] logL(w,b)=i=1∑m[yilogy^i+(1−yi)log(1−y^i)]
最大化对数似然函数等价于最小化负的对数似然函数,即对数损失函数:
Loss = − 1 m ∑ i = 1 m [ y i log y ^ i + ( 1 − y i ) log ( 1 − y ^ i ) ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] Loss=−m1i=1∑m[yilogy^i+(1−yi)log(1−y^i)]
对数损失函数的梯度计算
为了使用梯度下降算法优化逻辑回归模型,我们需要计算对数损失函数对权重 w w w和偏置 b b b的梯度。
假设模型的输出为:
y ^ = σ ( w T x + b ) \hat{y} = \sigma(w^T x + b) y^=σ(wTx+b)
其中, σ ( a ) = 1 1 + e − a \sigma(a) = \frac{1}{1 + e^{-a}} σ(a)=1+e−a1。
那么,对数损失函数对权重 w w w的梯度为:
∂ Loss ∂ w = 1 m ∑ i = 1 m ( y ^ i − y i ) x i \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i ∂w∂Loss=m1i=1∑m(y^i−yi)xi
对偏置 b b b的梯度为:
∂ Loss ∂ b = 1 m ∑ i = 1 m ( y ^ i − y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ∂b∂Loss=m1i=1∑m(y^i−yi)
这些梯度可以直接用于梯度下降算法来更新权重和偏置。
正则化
正则化的必要性
在逻辑回归中,正则化是防止过拟合的重要手段。过拟合是指模型在训练数据上表现很好,但在测试数据上表现不佳的现象。正则化通过降低模型的复杂度来提高其泛化能力。
逻辑回归模型的损失函数通常会添加一个正则化项:
Loss = 对数损失 + λ ⋅ 正则化项 \text{Loss} = \text{对数损失} + \lambda \cdot \text{正则化项} Loss=对数损失+λ⋅正则化项
其中, λ \lambda λ是正则化系数,控制正则化项的强度。
L2正则化
L2正则化(也称为Ridge正则化)是最常用的正则化方法之一。在L2正则化中,正则化项是权重向量的L2范数的平方:
正则化项 = 1 2 ∥ w ∥ 2 2 = 1 2 ∑ j = 1 n w j 2 \text{正则化项} = \frac{1}{2} \|w\|^2_2 = \frac{1}{2} \sum_{j=1}^{n} w_j^2 正则化项=21∥w∥22=21j=1∑nwj2
其中, n n n是特征的数量, w j w_j wj是第 j j j个特征的权重。
L2正则化的损失函数可以表示为:
Loss = − 1 m ∑ i = 1 m [ y i log y ^ i + ( 1 − y i ) log ( 1 − y ^ i ) ] + λ ⋅ 1 2 ∑ j = 1 n w j 2 \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot \frac{1}{2} \sum_{j=1}^{n} w_j^2 Loss=−m1i=1∑m[yilogy^i+(1−yi)log(1−y^i)]+λ⋅21j=1∑nwj2
L2正则化的梯度计算如下:
对权重 w w w的梯度:
∂ Loss ∂ w = 1 m ∑ i = 1 m ( y ^ i − y i ) x i + λ w \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i + \lambda w ∂w∂Loss=m1i=1∑m(y^i−yi)xi+λw
对偏置 b b b的梯度:
∂ Loss ∂ b = 1 m ∑ i = 1 m ( y ^ i − y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ∂b∂Loss=m1i=1∑m(y^i−yi)
L2正则化的效果是通过增加权重的平方和来惩罚模型的复杂度,从而使得权重向量的长度被限制在一个较小的范围内。这有助于防止模型对训练数据过于敏感,从而提高其泛化能力。
L1正则化
L1正则化(也称为Lasso正则化)是另一种常用的正则化方法。在L1正则化中,正则化项是权重向量的L1范数:
正则化项 = ∥ w ∥ 1 = ∑ j = 1 n ∣ w j ∣ \text{正则化项} = \|w\|_1 = \sum_{j=1}^{n} |w_j| 正则化项=∥w∥1=j=1∑n∣wj∣
L1正则化的损失函数可以表示为:
Loss = − 1 m ∑ i = 1 m [ y i log y ^ i + ( 1 − y i ) log ( 1 − y ^ i ) ] + λ ⋅ ∑ j = 1 n ∣ w j ∣ \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot \sum_{j=1}^{n} |w_j| Loss=−m1i=1∑m[yilogy^i+(1−yi)log(1−y^i)]+λ⋅j=1∑n∣wj∣
L1正则化的梯度计算如下:
对权重 w w w的梯度:
∂ Loss ∂ w = 1 m ∑ i = 1 m ( y ^ i − y i ) x i + λ ⋅ sign ( w ) \frac{\partial \text{Loss}}{\partial w} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) x_i + \lambda \cdot \text{sign}(w) ∂w∂Loss=m1i=1∑m(y^i−yi)xi+λ⋅sign(w)
其中, sign ( w ) \text{sign}(w) sign(w)是权重向量的符号函数,即:
sign ( w j ) = { 1 , w j > 0 − 1 , w j < 0 0 , w j = 0 \text{sign}(w_j) = \begin{cases} 1, & w_j > 0 \\ -1, & w_j < 0 \\ 0, & w_j = 0 \end{cases} sign(wj)=⎩ ⎨ ⎧1,−1,0,wj>0wj<0wj=0
对偏置 b b b的梯度:
∂ Loss ∂ b = 1 m ∑ i = 1 m ( y ^ i − y i ) \frac{\partial \text{Loss}}{\partial b} = \frac{1}{m} \sum_{i=1}^{m} (\hat{y}_i - y_i) ∂b∂Loss=m1i=1∑m(y^i−yi)
L1正则化的一个重要特点是它可以产生稀疏权重向量,即一些权重会变成零。这有助于特征选择,因为权重为零的特征可以被排除在模型之外。
弹性网络正则化
弹性网络正则化是L1和L2正则化的结合。它的正则化项可以表示为:
正则化项 = α ∥ w ∥ 1 + ( 1 − α ) ⋅ 1 2 ∥ w ∥ 2 2 \text{正则化项} = \alpha \|w\|_1 + (1 - \alpha) \cdot \frac{1}{2} \|w\|^2_2 正则化项=α∥w∥1+(1−α)⋅21∥w∥22
其中, α \alpha α是介于0和1之间的参数,控制L1和L2正则化的相对强度。
弹性网络正则化的损失函数可以表示为:
Loss = − 1 m ∑ i = 1 m [ y i log y ^ i + ( 1 − y i ) log ( 1 − y ^ i ) ] + λ ⋅ [ α ∥ w ∥ 1 + ( 1 − α ) ⋅ 1 2 ∥ w ∥ 2 2 ] \text{Loss} = -\frac{1}{m} \sum_{i=1}^{m} [y_i \log \hat{y}_i + (1 - y_i) \log (1 - \hat{y}_i)] + \lambda \cdot [\alpha \|w\|_1 + (1 - \alpha) \cdot \frac{1}{2} \|w\|^2_2] Loss=−m1i=1∑m[yilogy^i+(1−yi)log(1−y^i)]+λ⋅[α∥w∥1+(1−α)⋅21∥w∥22]
弹性网络正则化结合了L1和L2正则化的优点。它不仅可以产生稀疏权重向量,还可以处理特征之间的相关性问题。
早停法
早停法是另一种防止过拟合的方法。它通过监控模型在验证集上的性能来决定何时停止训练。具体来说,当模型在验证集上的性能连续若干个epoch没有改善时,训练过程就会被停止。
早停法的实现通常包括以下步骤:
- 将训练数据集划分为训练集和验证集。
- 在每个epoch结束时,计算模型在验证集上的损失或准确率。
- 如果模型在验证集上的性能连续若干个epoch没有改善,就停止训练过程。
早停法的一个重要参数是"耐心"(patience),它表示在停止训练之前等待的epoch数量。耐心的值可以根据具体问题进行调整。
早停法的优点是它可以防止模型过度拟合训练数据,同时充分利用训练数据中的信息。此外,早停法还可以作为正则化的一种形式,因为它限制了模型的训练步骤。
实际应用中的考虑因素
特征缩放
在逻辑回归中,特征缩放(也称为特征归一化)是一个重要的考虑因素。由于逻辑回归使用梯度下降算法来优化权重,特征的尺度可能会影响算法的收敛速度。
常见的特征缩放方法包括:
- 标准化:将每个特征减去其均值并除以其标准差,使得特征的均值为0,标准差为1。
- 归一化:将每个特征缩放到[0,1]范围内,通过减去最小值并除以最大值与最小值的差。
在逻辑回归中,特征缩放可以加速梯度下降算法的收敛,同时也可以提高模型的性能。
处理类别不平衡
在实际应用中,数据集可能存在类别不平衡的问题,即一个类别的样本数量远多于另一个类别。这会导致逻辑回归模型偏向于多数类,从而降低模型的性能。
处理类别不平衡的方法包括:
- 重新采样:通过过采样少数类或欠采样多数类来平衡类别分布。
- 调整类别权重:在损失函数中为少数类赋予更高的权重。
- 使用不同的评估指标:例如精确率、召回率、F1分数等,而不是仅仅依赖准确率。
在逻辑回归中,可以使用class_weight
参数来调整类别权重。例如,在scikit-learn的逻辑回归实现中,可以设置class_weight='balanced'
来自动调整类别权重。
处理多分类问题
逻辑回归本质上是用于二分类问题的,但可以通过多种方法将其扩展到多分类问题。
常见的多分类方法包括:
- 一对多(One-vs-All):将多分类问题分解为多个二分类问题,每个二分类问题对应一个类别与其他类别的比较。
- 一对一(One-vs-One):将多分类问题分解为多个二分类问题,每个二分类问题对应两个类别之间的比较。
- ** softmax回归**:在逻辑回归的基础上,使用softmax函数将输出转换为概率分布。
在scikit-learn中,逻辑回归默认使用一对多方法来处理多分类问题。
超参数调优
逻辑回归模型有几个重要的超参数需要调优,包括:
- 正则化系数(C):在scikit-learn中,C是正则化强度的倒数。较小的C表示更强的正则化。
- 求解器(solver):不同的求解器适用于不同的场景。例如,'lbfgs’适用于小数据集,'sag’和’saga’适用于大数据集。
- 最大迭代次数(max_iter):控制算法的最大迭代次数。
- 学习率(learning_rate):在’sgd’求解器中使用,控制每一步的更新幅度。
超参数调优可以通过网格搜索(Grid Search)或随机搜索(Random Search)来实现。在scikit-learn中,可以使用GridSearchCV
或RandomizedSearchCV
来完成这一任务。
Python实例
以下是一个完整的Python实例,展示了如何使用scikit-learn库实现逻辑回归模型,并应用对数损失函数和正则化技术。
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# 加载Iris数据集
data = load_iris()
X = data.data
y = data.target
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression(solver='saga', max_iter=1000, random_state=42)
# 训练模型
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy:.2f}")
# 打印混淆矩阵
print("Confusion Matrix:")
print(confusion_matrix(y_test, y_pred))
# 打印分类报告
print("Classification Report:")
print(classification_report(y_test, y_pred))
# 应用L2正则化
model_l2 = LogisticRegression(solver='lbfgs', max_iter=1000, random_state=42, C=0.1)
model_l2.fit(X_train, y_train)
y_pred_l2 = model_l2.predict(X_test)
accuracy_l2 = accuracy_score(y_test, y_pred_l2)
print(f"Accuracy with L2 Regularization: {accuracy_l2:.2f}")
# 使用GridSearchCV进行超参数调优
param_grid = {'C': [0.01, 0.1, 1, 10, 100], 'solver': ['lbfgs', 'saga']}
grid_search = GridSearchCV(LogisticRegression(max_iter=1000, random_state=42), param_grid, cv=5)
grid_search.fit(X_train, y_train)
# 获取最佳模型
best_model = grid_search.best_estimator_
# 预测测试集
y_pred_best = best_model.predict(X_test)
# 计算准确率
accuracy_best = accuracy_score(y_test, y_pred_best)
print(f"Accuracy with Best Parameters: {accuracy_best:.2f}")
# 打印最佳参数
print("Best Parameters:")
print(grid_search.best_params_)
结论
逻辑回归是一种强大的分类算法,其损失函数和正则化技术是模型性能的关键因素。通过对数损失函数,逻辑回归可以有效地处理概率输出,并提供稳定的梯度。通过正则化技术,逻辑回归可以防止过拟合,提高模型的泛化能力。
在实际应用中,我们需要根据具体问题选择合适的正则化方法、调整超参数,并处理数据集中的不平衡问题。通过合理的模型设计和参数调整,逻辑回归可以成为解决分类问题的有效工具。
相关文章:
逻辑回归:损失和正则化技术的深入研究
逻辑回归:损失和正则化技术的深入研究 引言 逻辑回归是一种广泛应用于分类问题的统计模型,尤其在机器学习领域中占据着重要的地位。尽管其名称中包含"回归",但逻辑回归本质上是一种分类算法。它的核心思想是在线性回归的基础上添…...
如何改电脑网络ip地址完整教程
更改电脑的网络IP地址以满足特定的网络需求,本文将为您提供一份详细的步骤指南。其实,改变IP地址并不是一件复杂的事,能解决因为IP限制带来的麻烦。以下是操作指南: 方法一:Windows 系统,通过图形界面修改 …...
Scenario Dreamer:用于生成驾驶模拟环境的矢量化潜扩散模型
25年3月来自加拿大 Mila AI研究院、蒙特利尔大学、蒙特利尔理工、普林斯顿、加拿大 CIFAR AI Chair 计划和 Torc 机器人公司的论文“Scenario Dreamer: Vectorized Latent Diffusion for Generating Driving Simulation Environments”。 Scenario Dreamer,是一个完…...
# 基于PyTorch的食品图像分类系统:从训练到部署全流程指南
基于PyTorch的食品图像分类系统:从训练到部署全流程指南 本文将详细介绍如何使用PyTorch框架构建一个完整的食品图像分类系统,涵盖数据预处理、模型构建、训练优化以及模型保存与加载的全过程。 1. 系统概述 本系统实现了一个基于卷积神经网络(CNN)的…...
【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
引言 Model Context Protocol (MCP) 是一种开放标准,旨在规范模型与应用程序之间的交互方式。本文作为MCP TypeScript-SDK系列的第一篇,将详细介绍如何搭建MCP开发环境,包括Node.js与TypeScript环境配置、SDK安装、开发工具推荐以及项目结构设计,帮助你快速入门MCP应用开发…...
unity脚本-FBX自动化模型面数校验
根据目前模型资源平均面数预算进行脚本制作,自动化校验模型面数是否符合规范。 *注:文件格式为.cs。需要放置在unity资源文件夹Assets>Editor下。 测试效果(拖一个fbx文件进unity时自动检测): 以下为完整代码 us…...
压力容器的优化设计
1 优化设计概述 优化设计是一种寻找确定最优设计方案的技术。所谓“最优设计”,指的是一种方案可以满足所有的设计要求,而且所需的支出(如重量,面积,体积,应力,费用等)最小。也就是…...
在Windows上安装Git
一、安装 Git 下载 Git地址:Git - Downloads (git-scm.com) 1、在页面中找到适用于 Windows 系统的最新版本安装包(通常为.exe 格式文件),点击下载链接。 出于访问Git官网需要科学上网,不会的可以私信我要软件包&…...
python包管理器,conda和uv 的区别
python包管理器,conda和uv 的区别 以下是 conda 和 uv 在 Python 包管理中的深度对比,结合知识库内容进行分析: 1. 核心设计理念 conda 以“环境为中心”,强调跨语言支持(如 Python、R、Julia)和严格的依赖…...
Oracle在ERP市场击败SAP
2024年,甲骨文(Oracle)以87亿美元的ERP收入和6.63%的市场份额,首次超越SAP,成为全球最大的ERP应用软件供应商,结束了SAP自上世纪80年代以来在该领域的长期霸主地位。据APPS RUN THE WORLD的市场调研&#x…...
Kafka 消息积压监控和报警配置的详细步骤
Kafka 消息积压监控和报警配置的详细步骤示例,涵盖常用工具(如 Prometheus Grafana、云服务监控)和自定义脚本方法: 一、监控配置 方法1:使用 Prometheus Grafana kafka-exporter 步骤1:部署 kafka-ex…...
记录一次使用面向对象的C语言封装步进电机驱动
简介 (2025/4/21) 本库对目前仅针对TB6600驱动下的42步进电机的基础功能进行了一定的封装, 也是我初次尝试以面向对象的思想去编写嵌入式代码, 和直流电机的驱动步骤相似在调用stepmotor_attach()函数和stepmotor_init()函数之后仅通过结构体数组stepm然后指定枚举变量中的id即…...
QTextDocument 入门
一、QTextDocument QTextDocument 是 Qt 中用于处理富文本文档的核心类,支持文本格式、图片、表格等复杂内容。 1. QTextDocument 入门 1.1 基本概念 QTextDocument 是 Qt 中用于处理富文本内容的核心类,它提供了: 结构化文本存储(段落、列表、表格等) 文本格式支持(…...
Arthas进阶用法
目录 查看已加载的类反编译代码动态执行代码排查 HTTP 请求问题热更新代码获取 Spring Context 并操作查看 JVM 信息自定义命令Web Console重置与退出 查看已加载的类 sc 命令 :可以查找所有 JVM 已经加载到的类。如果搜索的是接口,还会搜索所有的实现类…...
三生原理与现有密码学的核心区别?
AI辅助创作: 三生原理与现有密码学的核心区别 一、哲学基础与设计逻辑 动态生成 vs 静态分析 三生原理以“阴阳动态平衡”为核心,通过参数化生成(如素数构造中的阴阳元联动公式)模拟系统演化过程,而现有密码…...
定义python中的函数和类
1.函数 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回 1.1 定义函数 def showshow(sex):if sex1:return manelse:retu…...
明远智睿2351开发板四核1.4G Linux处理器:驱动创新的引擎
在科技日新月异的今天,创新成为了推动社会进步的核心动力。而在这场创新的浪潮中,一款性能卓越、功能全面的处理器无疑是不可或缺的引擎。今天,我们介绍的这款四核1.4G处理器搭配Linux系统的组合,正是这样一款能够驱动未来创新的强…...
【前端】【业务逻辑】【面试】JSONP处理跨域原理与封装
🧠 一、JSONP 是什么? 项目内容📌 全称JSON with Padding📍 用途跨域请求数据的一种方式,绕过同源策略📦 本质通过 <script> 标签加载远程 JS 文件,这个文件执行一个回调函数并传入数据 …...
深入探索RAG:用LlamaIndex为大语言模型扩展知识,实现智能检索增强生成
大型语言模型(LLM),如ChatGPT和Llama,在回答问题方面表现出色,但它们的知识仅限于训练时所获取的信息。它们无法访问私有数据,也无法在训练截止日期之后学习新知识。那么,核心问题就是……我们如…...
移远通信智能模组助力东成“无边界智能割草机器人“闪耀欧美市场
2025年4月21日,移远通信宣布,旗下SC206E-EM智能模组已成功应用于江苏东成电动工具有限公司旗下的DCK TERRAINA无边界智能割草机器人。 这款智能模组高度集成计算、通信、定位等多元能力,以小型化、低功耗、实时性强和低成本等综合优势&#…...
测试-时间规模化定律可以改进世界基础模型吗?
25年3月来自 UT Austin、UW Madison 和 Nvidia 的论文“Can Test-Time Scaling Improve World Foundation Model?”。 世界基础模型(WFM)通过根据当前的观察和输入预测未来状态来模拟物理世界,已成为许多物理智能(PI)…...
VMwaer虚拟机复制粘贴、ROS系统安装
一、VMwaer虚拟机复制粘贴设置:设置完记得重启VMwaer 1.首先确定 虚拟机设置-->选项-->客户机隔离-->勾选 启用拖放 启用复制粘贴 2.如果还是不能粘贴 可能是 没有 VMware Tools 可参考 怎么在linux安装vmware tools-CSDN博客 设置完记得重启VMwaer。…...
安装 vmtools
第2章 安装 vmtools 1.安装 vmtools 的准备工作 1)现在查看是否安装了 gcc 查看是否安装gcc 打开终端 输入 gcc - v 安装 gcc 链接:https://blog.csdn.net/qq_45316173/article/details/122018354?ops_request_misc&request_id&biz_id10…...
HCIP(综合实验2)
1.实验拓补图 2.实验要求 1.根据提供材料划分VLAN以及IP地址,PC1/PC2属于生产一部员工划分VLAN10,PC3属于生产二部划分VLAN20 2.HJ-1HJ-2交换机需要配置链路聚合以保证业务数据访问的高带宽需求 3.VLAN的放通遵循最小VLAN透传原则 4.配置MSTP生成树解决二层环路问题…...
机器学习第一篇 线性回归
数据集:公开的World Happiness Report | Kaggle中的happiness dataset2017. 目标:基于GDP值预测幸福指数。(单特征预测) 代码: 文件一:prepare_for_traning.py """用于科学计算的一个库…...
Spark-Streaming简介及核心编程
一、核心概念: 1.Spark-Streaming 是流式数据处理框架,基于 **DStream(离散化流)** 抽象,将实时数据划分为多个时间区间的 RDD 序列。 DStream 本质是RDD 序列,每个时间区间数据对应一个 RDD。 2.特点&a…...
优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论
优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论 目录 优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论信息论信息熵明确问题主题提供具体细节限定回答方向规范语言表达概率论最优化理论信息论 原理:信息论中的熵可以衡量信息的不确定性。…...
Sqlserver安全篇之_Sqlcmd命令使用windows域账号认证sqlserver遇到问题如何处理的案例
sqlcmd https://learn.microsoft.com/zh-cn/sql/tools/sqlcmd/sqlcmd-connect-database-engine?viewsql-server-ver16 sqlcmd -S指定的数据库连接字符串必须有对应的有效的SPN信息,否则会报错SSPI Provider: Server not found in Kerberos database. 正常连接 1、…...
基于华为云 ModelArts 的在线服务应用开发(Requests 模块)
基于华为云 ModelArts 的在线服务应用开发(Requests 模块) 一、本节目标 了解并掌握 Requests 模块的特点与用法学会通过 PythonRequests 访问华为云 ModelArts 在线推理服务熟悉 JSON 模块在 Python 中的数据序列化与反序列化掌握 Python 文件 I/O 的基…...
Graph Database Self-Managed Neo4j 知识图谱存储实践1:安装和基础知识学习
Neo4j 是一个原生图数据库,这意味着它在存储层实现了真正的图模型。它不是在其他技术之上使用“图抽象”,而是以您在白板上绘制想法的相同方式在Neo4j中存储数据。 自2007年以来,Neo4j已经发展成为一个丰富的工具、应用程序和库的生态系统。…...
【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:配置虚拟环境案例2:智能代码补全案例3:调试配置 运行结果…...
vscode:Live Server Preview插件
这个插件不用另外打开浏览器;它是直接在Vscode里面预览html的,并且是自动实时更新的,不用不停地CtrlS保存查看 使用方法:F1 -> 弹出一个窗口输入live,选择即可。 运行结果如下:...
关于在Springboot中设置时间格式问题
目录 1-设置全局时间格式1.Date类型的时间2.JDK8时间3.使Date类和JDK8时间类统统格式化时间 2-关于DateTimeFormat注解 1-设置全局时间格式 1.Date类型的时间 对于老项目来说,springboot中许多类使用的是Date类型的时间,没有用到LocalDateTime等JDK8时…...
双周报Vol.70: 运算符重载语义变化、String API 改动、IDE Markdown 格式支持优化...多项更新升级!
2025-04-21 语言更新 async 函数的调用处语法改为和 error 相同的 f!(..),原语法 f!!(..) 将触发警告 运算符重载的语义从基于方法迁移到了基于 trait,以后重载运算符需要通过给 moonbitlang/core/builtin 中对应的 trait 添加 impl 的形式。各个运算符…...
AI 技术发展:从起源到未来的深度剖析
一、AI 的起源与早期发展 人工智能(AI)作为计算机科学的重要分支,其诞生可以追溯到 20 世纪中叶。1943 年,艾伦・图灵提出图灵机的概念,为计算机科学和 AI 理论奠定了基础。1950 年,图灵又提出著名的图灵…...
【前端】【业务逻辑】 数据大屏自适应方案汇总
前端数据大屏自适应设计方案全解析 在前端数据大屏的开发中,自适应设计是关键环节,它能确保大屏在不同设备和屏幕尺寸上都能呈现出良好的视觉效果和交互体验。除了常见的 transform: scale、rem/vw、Flex/Grid 等方案外,还有其他有效的方法可…...
Java基础复习(JavaSE进阶)第六章 IO流体系
6-1 File类 01 122、File、IO流概述 02 123、File类:对象的创建 03 124、File类:判断、判断信息相关的方法 04 125、File类:创建、删除文件的方法 05 126、File类:遍历文件夹的方法 6-2 前置知识 01 127、前置知识:方…...
kvm下的ceph主机启动io请求统计
背景 假如一个主机存储在ceph里面,我们想统计下一次启动过程中的io读取的情况,那么可以通过下面的方法来统计 启动时间也可以通过在宿主机里面去查看,通过日志这边要方便一点,无需登录到虚拟机内部 日志开启 [global] fsid 406…...
go-Casbin使用
本次测试代码是基于单租户的RBAC鉴权 依赖 github.com/casbin/casbin/v2 github.com/casbin/gorm-adapter/v2文件存储规则文件 model.pml [request_definition] r sub, obj, act[policy_definition] p sub, obj, act[role_definition] g _, _ # 用户,角色[polic…...
基于YOLOv11的106种手语识别分析系统
基于YOLOv11的手语识别分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】多平台适配优化,支持Windows、macOS和Linux系统,确保中文字体正常渲染 【四】识别的类别数量:106种,具体类…...
CentOS创建swap内存
服务器版本为CentOS7 一、检查现有 swap 空间 sudo swapon --show如果系统中没有 swap 空间或者现有的 swap 空间不足,可以继续后续步骤来创建 swap 空间。 二、创建 swap 文件(推荐 2GB 作为示例) sudo dd if/dev/zero of/swapfile bs1M …...
OpenHarmony OS 5.0与Android 13显示框架对比
1. 架构概述 1.1 OpenHarmony OS 5.0架构 OpenHarmony OS 5.0采用分层架构设计,图形显示系统从底层到顶层包括: 应用层:ArkUI应用和第三方应用框架层:ArkUI框架、窗口管理API系统服务层:图形合成服务、窗口管理服务…...
详解Node.js中的setImmediate()函数
setImmediate() 是 Node.js 提供的一个定时器函数,用于在 事件循环的 “Check” 阶段 执行回调函数。它与 setTimeout() 相似,但两者有着显著的区别,主要体现在回调函数的执行时机上。 什么是事件循环(Event Loop) 在…...
使用C#写的HTTPS简易服务器
由于监控网络之用,需要写一个https服务器。 由于用到https,因此还需一个域名证书,可以免费申请,也可以用一个现有的。 接下来还需在Windows上安装证书,注册证书。 安装证书 找到证书,点击,一路…...
C# 事件知识文档
C# 事件知识文档 概述 在 C# 中,事件(Event) 是一种特殊的机制,它基于委托实现,用于支持发布-订阅模式。事件允许对象在发生特定操作时通知其他对象,而无需直接引用这些对象。这种机制非常适合于实现诸如用户界面交互、状态变化通知等场景。 核心概念 发布者(Publishe…...
C++进阶--二叉搜索树
文章目录 C进阶--二叉搜索树概念算法复杂度模拟实现结构定义插入查找删除剩余的次要接口中序遍历: 构造,析构,拷贝构造,赋值重载 结语 很高兴和大家见面,给生活加点impetus!!开启今天的编程之路…...
互联网大厂Java面试:从基础到进阶的技术点探讨
场景:赵大宝的面试旅程 在互联网大厂的面试现场,严肃的面试官李老师正在准备对求职者赵大宝进行一场Java技术栈的深度考核。赵大宝是一位以幽默著称的程序员,面试官希望通过这次面试能全面了解他的技术能力。 第一轮提问 李老师࿱…...
【MCP Node.js SDK 全栈进阶指南】中级篇(1):MCP动态服务器高级应用
前言 在初级篇中,我们已经掌握了MCP TypeScript-SDK的基础知识,包括开发环境搭建、基础服务器开发、资源开发、工具开发、提示模板开发以及传输层配置等核心内容。随着我们对MCP的理解不断深入,是时候进入更高级的应用场景了。 MCP的一个强大特性是其动态性,能够在运行时…...
LM35 温度传感器介绍
【本文基于Arduino项目】 1. LM35 温度传感器简介 LM35 是一款 精密模拟温度传感器,由德州仪器(TI)推出,具有线性输出、无需校准、低功耗等特点,广泛应用于环境监测、工业控制等领域。 主要特性 参数规格测量范围-…...
【网络应用程序设计】实验一:本地机上的聊天室
个人博客:https://alive0103.github.io/ 代码在GitHub:https://github.com/Alive0103/XDU-CS-lab 能点个Star就更好了,欢迎来逛逛哇~❣ 主播写的刚够满足基本功能,多有不足,仅供参考,还请提PR指正ÿ…...