新手村:逻辑回归-理解04:熵是什么?
新手村:逻辑回归04:熵是什么?
熵是什么?
前置条件
在开始学习逻辑回归中的熵理论之前,需要掌握以下基础知识:
-
概率论与统计学:
- 概率分布(如伯努利分布、正态分布)。
- 条件概率和贝叶斯定理。
- 期望值和方差的基本概念。
-
线性代数:
- 向量和矩阵的基本运算。
- 线性组合的概念。
-
微积分:
- 导数和偏导数的计算。
- 极值问题和梯度下降的基本思想。
-
机器学习基础:
- 分类与回归的区别。
- 基本的监督学习模型(如线性回归)。
-
Python编程:
- 熟悉NumPy和Pandas库的基本操作。
- 基本的Matplotlib可视化技能。
章节 | 内容概述 | 重要知识点 | 通俗解释 | 知识点评分(1-5) |
---|---|---|---|---|
第1章:熵的基本概念 | 介绍熵的定义及其在信息论中的意义。 | - 熵的数学定义 - 香农熵 - 联合熵与条件熵 | 熵可以理解为“不确定性”的量化:信息越多,不确定性越低。 | 5(核心概念) |
第2章:交叉熵与对数损失函数 | 讲解交叉熵的定义及其在分类任务中的作用。 | - 交叉熵公式 - 对数损失函数 - 最大似然估计 | 交叉熵衡量预测分布与真实分布的距离,类似于“误差”。 | 5(核心概念) |
第3章:逻辑回归与熵的关系 | 将熵理论应用于逻辑回归模型。 | - Sigmoid函数 - 逻辑回归的目标函数 - 损失函数优化 | 逻辑回归通过最小化交叉熵来找到最佳参数,从而降低分类误差。 | 5(核心概念) |
第4章:梯度下降与参数优化 | 学习如何通过梯度下降优化逻辑回归模型的参数。 | - 梯度下降算法 - 学习率选择 - 收敛性分析 | 梯度下降像是“找最低点”,每一步都朝着减少误差的方向前进。 | 4(重要但不核心) |
第5章:教学示例与代码实现 | 使用一个具体的数据集进行逻辑回归建模。 | - 数据预处理 - 特征工程 - 模型训练与评估 | 从数据到模型的完整流程,帮助理解理论与实践的结合。 | 4(重要但不核心) |
第6章:后续练习题与进阶学习 | 提供练习题,并规划下一阶段的学习内容。 | - 练习题类型 - 进阶资源推荐 - 下一阶段目标 | 通过练习巩固知识,并为更复杂的模型打下基础。 | 3(辅助内容) |
第1章:熵的基本概念
⭐️⭐️⭐️ 1.1 熵的数学定义
熵
是信息论中的一个重要概念,用于衡量随机变量的不确定性
。
假设随机变量 X X X 的概率分布为 P ( X = x i ) = p i P(X = x_i) = p_i P(X=xi)=pi,则熵 H ( X ) H(X) H(X) 定义为:
H ( X ) = − ∑ i p i ln ( p i ) H(X) = -\sum_{i} p_i \ln(p_i) H(X)=−i∑piln(pi)
其中, p i p_i pi 是事件 x i x_i xi 发生的概率, ln \ln ln 表示以2为底的对数。
示例字符串
example_string = "123123124351512431234123414321368969867898706785874674"
通俗解释:
想象你正在猜一个骰子的结果。如果骰子是公平的(每个面的概率都是 1 / 6 1/6 1/6),那么不确定性最高;如果骰子被做了手脚(比如某一面的概率接近1),那么不确定性最低。熵就是用来量化这种不确定性的指标。
1.2 ⭐️香农熵
香农熵是熵的一种形式,专门用于
描述离散随机变量的信息量
。
例如,对于二分类问题(如是否购买手机),伯努利分布的熵为:
H ( p ) = − p log 2 ( p ) − ( 1 − p ) log 2 ( 1 − p ) H(p) = -p \log_2(p) - (1-p) \log_2(1-p) H(p)=−plog2(p)−(1−p)log2(1−p)
其中 p p p 是事件发生的概率。
通俗解释:
假设你正在预测一个人是否会点击某个广告。如果点击的概率是0.5(完全随机),那么不确定性最大;如果点击的概率接近0或1(几乎确定),那么不确定性最小。
1.3 联合熵与条件熵
联合熵 H ( X , Y ) H(X, Y) H(X,Y) 衡量两个随机变量 X X X 和 Y Y Y 的联合不确定性:
H ( X , Y ) = − ∑ x , y P ( x , y ) log 2 ( P ( x , y ) ) H(X, Y) = -\sum_{x,y} P(x, y) \log_2(P(x, y)) H(X,Y)=−x,y∑P(x,y)log2(P(x,y))
条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X) 衡量在已知 X X X 的情况下, Y Y Y 的剩余不确定性:
H ( Y ∣ X ) = − ∑ x , y P ( x , y ) log 2 ( P ( y ∣ x ) ) H(Y|X) = -\sum_{x,y} P(x, y) \log_2(P(y|x)) H(Y∣X)=−x,y∑P(x,y)log2(P(y∣x))
通俗解释:
联合熵就像是两个人一起猜谜语时的总不确定性,而条件熵则是当你知道一部分答案后,剩下的不确定性。
⭐️⭐️⭐️第2章:交叉熵与对数损失函数
2.1 交叉熵公式
交叉熵衡量两个概率分布之间的差异。假设真实分布为 P P P,预测分布为 Q Q Q,则交叉熵 H ( P , Q ) H(P, Q) H(P,Q) 定义为:
H ( P , Q ) = − ∑ i P ( i ) log ( Q ( i ) ) H(P, Q) = -\sum_{i} P(i) \log(Q(i)) H(P,Q)=−i∑P(i)log(Q(i))
通俗解释:
交叉熵可以看作是“预测错误的成本”。如果你的预测分布越接近真实分布,交叉熵就越小;反之,预测分布偏离真实分布越多,交叉熵就越大。
2.2 对数损失函数
在逻辑回归中,对数损失函数是对交叉熵的具体应用。对于二分类问题,对数损失函数为:
L ( w ) = − 1 N ∑ i = 1 N [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] L(w) = -\frac{1}{N} \sum_{i=1}^N [y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)] L(w)=−N1i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)]
其中 y i y_i yi 是真实标签, y ^ i \hat{y}_i y^i 是预测概率。
通俗解释:
对数损失函数衡量的是模型预测的准确性。
- 如果预测概率 y ^ \hat{y} y^接近真实标签(如 y = 1 y=1 y=1 且 y ^ = 0.9 \hat{y}=0.9 y^=0.9),损失会很小;
- 如果预测概率 y ^ \hat{y} y^远离真实标签(如 y = 1 y=1 y=1 且 y ^ = 0.1 \hat{y}=0.1 y^=0.1),损失会很大。
⭐️2.3 最大似然估计
新手村:逻辑回归-理解03:逻辑回归中的最大似然函数
逻辑回归通过最大化似然函数(等价于最小化交叉熵)来优化参数。似然函数 L ( w ) L(w) L(w) 定义为:
L ( w ) = ∏ i = 1 N P ( y i ∣ x i ; w , b ) L(w) = \prod_{i=1}^N P(y_i|x_i; w,b) L(w)=i=1∏NP(yi∣xi;w,b)
取对数后得到对数似然函数:
log L ( w ) = ∑ i = 1 N [ y i log ( y ^ i ) + ( 1 − y i ) log ( 1 − y ^ i ) ] \log L(w) = \sum_{i=1}^N [y_i \log(\hat{y}_i) + (1-y_i) \log(1-\hat{y}_i)] logL(w)=i=1∑N[yilog(y^i)+(1−yi)log(1−y^i)]
通俗解释:
最大似然估计的目标是找到一组参数,使得模型预测的概率分布最接近真实分布。
⭐️第3章:逻辑回归与熵的关系
3.1 Sigmoid函数
Sigmoid函数将线性组合 z = w ⋅ x + b z = w \cdot x + b z=w⋅x+b 映射到概率空间:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
通俗解释:
Sigmoid函数就像一个“压缩器”,把任何实数压缩到0到1之间,方便解释为概率。
#####⭐️⭐️ 3.2 逻辑回归的目标函数
逻辑回归的目标是最小化对数损失函数(即最大化似然函数)
。通过梯度下降法不断调整参数 w w w 和 b b b,使预测概率 y ^ \hat{y} y^ 更接近真实标签 y y y。
通俗解释:
逻辑回归的核心思想是通过调整模型参数,让预测结果尽可能准确,同时用交叉熵来衡量预测的误差。
第4章:梯度下降与参数优化
4.1 梯度下降算法
梯度下降是一种迭代优化算法,用于最小化损失函数。更新规则为:
w : = w − η ⋅ ∂ L ∂ w w := w - \eta \cdot \frac{\partial L}{\partial w} w:=w−η⋅∂w∂L
其中 η \eta η 是学习率。
通俗解释:
梯度下降就像是沿着山坡向下走,每次迈出一步,直到找到最低点。
4.2 学习率选择
学习率 η \eta η 决定了每次更新的步长。如果学习率过大,可能会错过最优解;如果过小,收敛速度会很慢。
通俗解释:
学习率就像是走路的步伐大小,太大容易踩空,太小走得太慢。
第5章:教学示例与代码实现
教学示例
假设我们有一个简单的数据集,包含学生的考试成绩和是否被录取的信息。我们将使用逻辑回归预测学生是否会被录取。
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 数据集
data = {'Exam1': [45, 78, 65, 89, 90],'Exam2': [52, 89, 70, 95, 85],'Admitted': [0, 1, 0, 1, 1]
}# 数据预处理
X = np.array([[data['Exam1'][i], data['Exam2'][i]] for i in range(len(data['Exam1']))])
y = np.array(data['Admitted'])# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练逻辑回归模型
model = LogisticRegression()
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 评估
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
第6章:后续练习题与进阶学习
练习题
- 使用自定义的梯度下降算法实现逻辑回归。
- 修改上述代码,尝试添加多项式特征。
- 讨论为什么逻辑回归不能直接用于多分类问题。
进阶学习内容
- 支持向量机(SVM)。
- 决策树与随机森林。
- 神经网络与深度学习。
术语与术语解释
术语 | 解释 |
---|---|
熵 | 衡量随机变量不确定性的指标。 |
交叉熵 | 衡量两个概率分布之间的差异。 |
对数损失函数 | 在分类任务中常用的损失函数,基于交叉熵。 |
Sigmoid函数 | 将任意实数映射到[0,1]区间的函数,用于概率估计。 |
梯度下降 | 一种优化算法,用于最小化损失函数。 |
总结陈述
逻辑回归中的熵理论是机器学习的重要基础之一
。通过学习熵、交叉熵以及它们在逻辑回归中的应用,你可以更好地理解分类模型的工作原理。建议按照上述计划逐步深入学习,并通过代码实践巩固理论知识。
代码
香农熵
import numpy as np
import matplotlib.pyplot as plt# 计算香农熵的函数
def shannon_entropy(p):if p == 0 or p == 1:return 0else:return - (p * np.log2(p) + (1-p) * np.log2(1-p))# 定义概率范围从0到1
probabilities = np.linspace(0, 1, 400)
entropies = [shannon_entropy(p) for p in probabilities]# 绘制香农熵随概率变化的曲线
plt.figure(figsize=(8, 6))
plt.plot(probabilities, entropies, label='香农熵')
plt.title('香农熵与事件发生概率的关系')
plt.xlabel('事件发生概率 (p)')
plt.ylabel('熵')
plt.grid(True)
plt.legend()
plt.show()
联合熵和条件熵
import numpy as np
import matplotlib.pyplot as plt# 定义联合概率分布P(x, y)
joint_prob = np.array([[0.1, 0.2], [0.3, 0.4]])# 计算边缘概率P(x)和P(y)
marginal_X = joint_prob.sum(axis=1) # P(x), 按列求和
marginal_Y = joint_prob.sum(axis=0) # P(y), 按行求和# 计算条件概率P(y|x)
conditional_prob_Y_given_X = joint_prob / marginal_X[:, None] # P(y|x)# 联合熵H(X, Y)
def joint_entropy(joint_prob):non_zero_probs = joint_prob[joint_prob > 0] # 过滤掉零概率项return -np.sum(non_zero_probs * np.log2(non_zero_probs)) # 条件熵H(Y|X)
def conditional_entropy(joint_prob, marginal_X):cond_ent = 0for i in range(joint_prob.shape[0]): # 遍历每个xpx = marginal_X[i]if px > 0:py_given_x = joint_prob[i] / px # P(y|x)non_zero_py_given_x = py_given_x[py_given_x > 0] # 过滤掉零概率项cond_ent -= px * np.sum(non_zero_py_given_x * np.log2(non_zero_py_given_x))return cond_ent# 计算联合熵和条件熵
h_xy = joint_entropy(joint_prob)
h_y_given_x = conditional_entropy(joint_prob, marginal_X)# 打印结果
print(f"联合熵 H(X, Y): {h_xy:.4f}")
print(f"条件熵 H(Y|X): {h_y_given_x:.4f}")# 可视化联合概率分布和条件概率分布
fig, axes = plt.subplots(1, 2, figsize=(12, 5))# 绘制联合概率分布热力图
im = axes[0].imshow(joint_prob, cmap='Blues', interpolation='nearest')
axes[0].set_title("联合概率分布 P(x, y)")
axes[0].set_xlabel("Y")
axes[0].set_ylabel("X")
for (i, j), val in np.ndenumerate(joint_prob):axes[0].text(j, i, f"{val:.2f}", ha='center', va='center', color='black', fontsize=12)
fig.colorbar(im, ax=axes[0])# 绘制条件概率分布条形图
bar_width = 0.35
indices = np.arange(len(marginal_X))
bars = []
for i in range(joint_prob.shape[1]):bar = axes[1].bar(indices + i * bar_width, conditional_prob_Y_given_X[:, i], bar_width, label=f"P(y={i}|x)")bars.append(bar)
axes[1].set_title("条件概率分布 P(y|x)")
axes[1].set_xticks(indices + bar_width / 2)
axes[1].set_xticklabels([f"x={i}" for i in indices])
axes[1].legend()plt.tight_layout()
plt.show()
交叉熵
import numpy as np
import matplotlib.pyplot as plt# 定义交叉熵函数
def cross_entropy(P, Q):"""计算交叉熵 H(P, Q):param P: 真实分布 (list 或 numpy array):param Q: 预测分布 (list 或 numpy array):return: 交叉熵值"""P = np.array(P)Q = np.array(Q)# 过滤掉Q中的零概率项以避免log(0)错误Q_nonzero_mask = Q > 0return -np.sum(P[Q_nonzero_mask] * np.log2(Q[Q_nonzero_mask]))# 示例的真实分布P
P = [0.5, 0.3, 0.2]# 构造一系列不同的预测分布Q,并计算对应的交叉熵
q1_values = np.linspace(0.01, 0.98, 100) # 第一个分量q1从0.01到0.98
entropy_values = []for q1 in q1_values:q2 = (1 - q1) * 0.6 # 剩余概率按固定比例分配给q2和q3q3 = (1 - q1) * 0.4Q = [q1, q2, q3]entropy_values.append(cross_entropy(P, Q))# 找到最小交叉熵及其对应的Q
min_index = np.argmin(entropy_values)
optimal_q1 = q1_values[min_index]
optimal_Q = [optimal_q1, (1 - optimal_q1) * 0.6, (1 - optimal_q1) * 0.4]
min_cross_entropy = entropy_values[min_index]# 输出最优解
print(f"最小交叉熵: {min_cross_entropy:.4f}")
print(f"对应的最优预测分布 Q: {optimal_Q}")# 可视化交叉熵随q1变化的趋势
plt.figure(figsize=(10, 6))
plt.plot(q1_values, entropy_values, label="交叉熵", color='blue')
plt.scatter(optimal_q1, min_cross_entropy, color='red', label=f"最小交叉熵 ({min_cross_entropy:.4f})", zorder=5)
plt.axvline(x=optimal_q1, color='gray', linestyle='--', linewidth=1)plt.title("交叉熵随预测分布的第一个分量 $q_1$ 的变化", fontsize=16)
plt.xlabel("$q_1$", fontsize=14)
plt.ylabel("交叉熵值", fontsize=14)
plt.grid(True)
plt.legend(fontsize=12)
plt.tight_layout()
plt.show()
场景设定
假设我们有一个真实分布 P = [ 0.5 , 0.3 , 0.2 ] P = [0.5, 0.3, 0.2] P=[0.5,0.3,0.2],代表某个事件发生的三种可能性的概率。接着,我们尝试使用不同的预测分布 Q Q Q 来逼近 P P P,并通过计算交叉熵来评估预测的准确性。
我们将逐步调整 Q Q Q的值,并观察交叉熵如何变化。为了简化问题,这里只调整 Q Q Q的第一个分量 q 1 q_1 q1,其他分量按比例分配剩余概率。
代码解析
-
交叉熵公式:
- 函数
cross_entropy
根据公式 H ( P , Q ) = − ∑ i P ( i ) log 2 ( Q ( i ) ) H(P, Q) = -\sum_i P(i) \log_2(Q(i)) H(P,Q)=−∑iP(i)log2(Q(i))实现。 - 使用掩码过滤掉 Q Q Q 中的所有零概率项,以避免出现 log ( 0 ) \log(0) log(0)错误。
- 函数
-
构造预测分布:
- 我们让 Q Q Q的第一个分量 q 1 q_1 q1 在区间 [ 0.01 , 0.98 ] [0.01, 0.98] [0.01,0.98] 内变化。
- 其他两个分量 q 2 q_2 q2 和 q 3 q_3 q3 按照固定的比值分配剩余概率( q 2 = 0.6 × ( 1 − q 1 ) q_2 = 0.6 \times (1-q_1) q2=0.6×(1−q1), q 3 = 0.4 × ( 1 − q 1 ) q_3 = 0.4 \times (1-q_1) q3=0.4×(1−q1))。
-
寻找最优解:
- 记录每个 q 1 q_1 q1对应的交叉熵值,并找出使交叉熵最小化的 q 1 q_1 q1值。
- 最优预测分布 Q Q Q应该接近真实分布 P P P。
相关文章:
新手村:逻辑回归-理解04:熵是什么?
新手村:逻辑回归04:熵是什么? 熵是什么? 前置条件 在开始学习逻辑回归中的熵理论之前,需要掌握以下基础知识: 概率论与统计学: 概率分布(如伯努利分布、正态分布)。条件概率和贝叶斯定理。期…...
Javaweb后端登录会话技术jwt令牌
jwt生成与校验 是base4补位的 最后面是签名,签名不是base64,是通过签名算法加密后来的 令牌长度不是固定的,长度取决于原始内容,载荷,大小 头有,类型,签名算法 base64可以对任意的二进制数据进…...
图像对比分析并生成报告
pip install pyautogui """ 图像对比分析工具 功能:实现像素级差异、结构相似性(SSIM)、直方图相似度和特征匹配率四种对比方法 作者:智能助手 版本:1.2 日期:2025-02-27""" import os import cv2 …...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例1,TableView16_01.vue 基础行拖拽排序示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例1,TableView16_01.vu…...
vue-如何将组件内容作为图片生成-html2canvas
1.引入必要的库 这里呢我们使用 html2canvas 库来将 HTML 元素转换为画布(canvas),然后再将其导出为图片。首先,确保在项目中安装了 html2canvas: npm install html2canvas 2. 组件结构 然后在我们的vue文件里面&a…...
单片机 - RAM 与内存、ROM 与硬盘 之间的详细对比总结
RAM 与 内存 RAM(Random Access Memory,随机存取存储器) 和 内存 这两个术语通常是 同义词,即 内存 常常指的就是 RAM。 1. RAM(内存) 定义:RAM 是计算机中的 主存储器,用于临时存…...
Linux 练习一 NFS和DNS
练习四 任务需求:客户端通过访问 www.nihao.com 后,能够通过 dns 域名解析,访问到 nginx 服务中由 nfs 共享的首页文件,内容为:Very good, you have successfully set up the system. 各个主机能够实现时间同步&#…...
aab 转 apk
googleplay发布的游戏对外前,测试同学要安装到手机上先行测试,所以就有了这个需求。网上找了一篇文章讲的很详细了,文档是英语的,这里摘抄重要的部分做下记录: https://www.geekdashboard.com/extract-apk-files-from…...
JAVA开发:实例成员与静态成员
判断Java中的实例成员与静态成员 在Java中,可以通过以下几种方式判断一个成员是实例成员还是静态成员: 1. 通过声明方式判断 静态成员使用static关键字修饰,实例成员不使用: public class MyClass {// 实例成员int instanceVa…...
DeepSeek面试——模型架构和主要创新点
本文将介绍DeepSeek的模型架构多头潜在注意力(MLA)技术,混合专家(MoE)架构, 无辅助损失负载均衡技术,多Token 预测(MTP)策略。 一、模型架构 DeepSeek-R1的基本架构沿用…...
[项目]基于FreeRTOS的STM32四轴飞行器: 十二.角速度加速度滤波
基于FreeRTOS的STM32四轴飞行器: 十二.滤波 一.滤波介绍二.对角速度进行一阶低通滤波三.对加速度进行卡尔曼滤波 一.滤波介绍 模拟信号滤波: 最常用的滤波方法可以在信号和地之间并联一个电容,因为电容通交隔直,信号突变会给电容充电&#x…...
《基于SpringBoot的图书网购平台的设计与实现》开题报告
个人主页:大数据蟒行探索者 一、选题的依据及意义 1.1选题来源 市场需求驱动:如今,互联网深度融入人们生活,阅读场景愈发多元化,线上购书成为主流趋势之一。读者期望随时随地浏览海量图书资源,对比价格…...
Python 非异步函数执行异步函数的方案
import asyncio import sys from your_module import browser_main # 替换为你的实际模块名 async def _keep_alive(): """保持程序持续运行""" while True: await asyncio.sleep(1) def run_browser(index: int None): """ 执…...
计算机期刊推荐 | 工程技术-电子与电气, 计算机
IET Microwaves Antennas & Propagation的新特刊:《天线与超材料的设计、合成、仿真与实验》 学科领域: 工程技术-电子与电气, 计算机 期刊类型: SCI/SSCI/AHCI 收录数据库: SCI(SCIE) ISSN: 1751-8725 中科院…...
【开源宝藏】30天学会CSS - DAY9 第九课 牛顿摆动量守恒动画
以下是一份逐步拆解教程,带你从零理解并复刻这个牛顿摆(Pendulum of Newton)动画效果,这是一个经典的物理演示模型,现在通过纯 HTML 和 CSS 实现出来,视觉效果炫酷、结构简洁。 🎯 动画效果说明…...
对三维物体模型的阈值操作
对三维物体模型的阈值操作 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头2. point_normal_x、point_normal_y、point_normal_z有什么区别?3. 去除离群点 1. 使用point_coord_x、point_coord_y、point_coord_z阈值分割麻辣兔头 dev_open_win…...
【Unity网络编程知识】使用Socket实现简单TCP通讯
1、Socket的常用属性和方法 创建Socket TCP流套接字 Socket socketTcp new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 1.1 常用属性 1)套接字的连接状态 socketTcp.Connected 2)获取套接字的类型 socketTcp.So…...
简记_单片机硬件最小系统设计
以STM32为例: 一、电源 1.1、数字电源 IO电源:VDD、VSS:1.8~3.6V,常用3.3V,去耦电容1 x 10u N x 100n ; 内核电源:内嵌的稳压器输出:1.2V,给内核、存储器、数字外设…...
Android Launcher实战:完美复刻iOS风格Hotseat布局优化
一、需求背景与效果呈现 在Android 13系统深度定制过程中,原生Launcher的Hotseat布局因视觉效果平庸需要进行UI重构。产品团队要求仿照iOS系统设计,实现以下核心特性: 取消传统横屏铺满效果 采用居中显示布局方案 支持圆角背景与智能边距调…...
2025-3-25算法打卡
一,走迷宫 1.题目描述: 给定一个 NMNM 的网格迷宫 GG。GG 的每个格子要么是道路,要么是障碍物(道路用 11 表示,障碍物用 00 表示)。 已知迷宫的入口位置为 (x1,y1)(x1,y1),出口位置为 (x…...
Python:进程的常用方法,注意细节,进程线程对比
进程常用方法: start():启动进程实例 is_alive():判断子进程的存活状态,返回True或False,子进程执行完后的状态为False join([timeout]):是否等待子进程执行结束(在当前位置阻塞主进程)主进程等子进程多长…...
北京交通大学第三届C语言积分赛
作者有言在先: 题解的作用是交流思路,不是抄作业的。可以把重点放在思路分析上而不是代码上,毕竟每个人的代码风格是不一样的,看别人的代码就跟做程序填空题一样。先看明白思路再看代码。 还有就是,deepseek真的很好用…...
架构设计之自定义延迟双删缓存注解(下)
架构设计之自定义延迟双删缓存注解(下) 小薛博客官方架构设计之自定义延迟双删缓存注解(下)地址 为了保证Cache和ClearAndReloadCache的灵活性,特意加入EL表达式解析 1、Cache package com.xx.cache;import java.lang.annotation.*; import java.util.concurren…...
SingleMod
SingleMod SingleMod是一种深度学习模型,专为利用纳米孔直接RNA测序(DRS)数据在单RNA分子中精确检测m6A修饰而设计。该模型通过深度多实例回归框架进行训练,能够充分利用广泛的甲基化率标签。SingleMod是一个通用框架,可轻松适配其他核酸修饰的检测模型训练。 注意: Si…...
SQL-查询漏洞
一、查询注入的数据类型 //list.php<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatiable" content"IEedge"><meta name"viewport" content&…...
Maven 多模块项目(如微服务架构)中,父 POM(最外层) 和 子模块 POM(具体业务模块)的区别和联系
文章目录 **1. 父 POM 的核心职责****1.1 依赖管理 (dependencyManagement)****1.2 插件管理 (pluginManagement)****1.3 其他公共配置** **2. 子模块 POM 的核心职责****2.1 依赖声明 (dependencies)****2.2 插件启用与覆盖 (plugins)** **3. 核心对比表****4. 使用场景示例**…...
【AIGC】图片变视频 - SD ComfyUI视频生成
效果图 完整过程 SD ComfyUI 下载 下载 https://pan.quark.cn/s/64b808baa960 解压密码:bilibili-秋葉aaaki 完整 https://www.bilibili.com/video/BV1Ew411776J/ SD ComfyUI 安装 1.解压 2.将controlnet内部文件复制到 ComfyUI-aki-v1.6\ComfyUI\models\control…...
思考我的未来职业
李升伟 编译 关于我 我是一名专注于后端开发的软件工程师,拥有十年专业编程经验。从学生时代起,编程就是我的热情所在,并一直保持着这个长期爱好。此外,我也热爱动漫和电影。 然而过去几年,婚姻、家庭责任和育儿让生…...
StarRocks数据导入
文章目录 StarRocks数据导入Broker LoadETL 集群导数非 ETL 集群导数Broker Load 任务查看BrokerLoad⼤数据量导⼊优化参数推荐配置BrokerLoad 排查思路 Insert IntoInsert Into大数据量导入优化参数 Stream LoadStreamLoad⼤数据量导⼊优化参数推荐配置Stream Load 排查思路 R…...
mmdetection安装
链接: link...
光学像差的类型与消除方法
### **光学像差的类型、理解与消除方法** 光学像差是指实际光学系统成像时,由于透镜或反射镜的非理想特性导致的光线偏离理想路径,从而影响成像质量的现象。像差可分为**单色像差**(与波长无关)和**色差**(与波长相关…...
Manus AI 破局多语言手写识别,解锁智能新天地
Manus AI 破局多语言手写识别,解锁智能新天地 前言 在人工智能技术不断渗透各行各业的背景下,手写识别领域长期面临多语言适配难、复杂场景泛化能力弱等挑战。ManusAI凭借其创新的算法架构和多模态融合技术,成功突破传统OCR(光学…...
文字颜色的渐变(svg实现)
一 上下渐变(有底部阴影) 效果如图: svg代码如下: <svg width"300" height"100" xmlns"http://www.w3.org/2000/svg"><defs><linearGradient id"textGradient" x1"…...
Java-设计模式
Java-设计模式 ⓪设计模式基础 ❶设计模式分类 创建型模式 用于描述对象实例化(创建对象)的模式,即用于解耦对象的实例化过程 GoF(四人组)书中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 …...
“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验
“我是GM”之NAS搭建Luanti游戏服务器,开启沙盒游戏新体验 哈喽小伙伴们好,我是Stark-C~ 曾几何时,哪怕是现在,估计依然有很多小伙伴沉迷于开放性和自由度极高的《我的世界》这种沙盒游戏吧~。 我个人到现在手机上还有这款游戏…...
K8S学习之基础五十:k8s中pod时区问题并通过kibana查看日志
k8s中pod默认时区不是中国的,挂载一个时区可以解决 vi pod.yaml apiVersion: v1 kind: Pod metadata:name: counter spec:containers:- name: countimage: 172.16.80.140/busybox/busybox:latestimagePullPolicy: IfNotPresentargs: [/bin/sh,-c,i0;while true;do …...
光电效应及普朗克常数的测定数据处理 Python实现
内容仅供参考,如有错误,欢迎指正,如有疑问,欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP (分段三次埃尔米特插值多项式) 因为实验时记录的数…...
hyperf中关于时间的设定
下面我来总结这三者的用法和它们之间的关系: 1. protected ?string $dateFormat U; 作用: 定义数据库日期字段的存储格式‘U’ 表示使用 Unix 时间戳格式(秒级,10位数字) 影响范围: 决定了模型从数据…...
编程实现自我指涉(self-reference)
从计算机的组成原理出发,编程实现自我指涉(self-reference)本质上是通过代码操纵代码,形成逻辑上的闭环。这种能力不仅是编程语言设计中的一个奇妙现象,更是计算理论、计算机架构、乃至哲学层面的一种深刻映射。让我们…...
数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充
前言 以矩阵图类型和像素图类型作为图像类数据的基础,但在使用过程中有个问题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析. 引入 原帖数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计(前端架构)-CSDN博客里有对…...
php写入\查询influxdb数据
namespace app\index\controller;use InfluxDB2\Client; use InfluxDB2\Model\WritePrecision; use InfluxDB2\Point;class Demo {/*** 显示资源列表** return \think\Response*/public function index(){$token 你的TOKEN;$org zzlichi;$bucket initdb;$client new Client…...
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布
新手村:逻辑回归-理解02:逻辑回归中的伯努利分布 伯努利分布在逻辑回归中的潜在含义及其与后续推导的因果关系 1. 伯努利分布作为逻辑回归的理论基础 ⭐️ 逻辑回归的核心目标是: 建模二分类问题中 目标变量 y y y 的概率分布。 伯努利分布(…...
Python正则表达式(一)
目录 一、正则表达式的基本概念 1、基本概念 2、正则表达式的特殊字符 二、范围符号和量词 1、范围符号 2、匹配汉字 3、量词 三、正则表达式函数 1、使用正则表达式: 2、re.match()函数 3、re.search()函数 4、findall()函数 5、re.finditer()函数 6…...
JavaScript基础-事件委托(代理、委派)
在Web开发中,处理用户交互时经常需要监听DOM元素上的事件。然而,当页面上存在大量的动态生成的元素时,直接给每个元素绑定事件处理器可能会导致性能问题和代码管理复杂度增加。这时,事件委托提供了一种更加高效且易于维护的解决方…...
《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型
《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型 《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型理解重叠 I/O 模型重叠 I/O本章讨论的重叠 I/O 的重点不在于 I/O 创建重叠 I/O 套接字执行重叠 I/O 的 WSASend 函数进行重叠 I/O 的 WSA…...
【区块链安全 | 第二篇】区块链概念详解
文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点(Node)5. 区块(Block)6. 区块链(Blockchain)7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易(Transaction&am…...
Android实践开发制作小猴子摘桃小游戏
Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取:Android可以存在版本差异项目如果不能正确运行,可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…...
“11.9元“引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 ✨
💥 "11.9元"引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 🎯 🔍 用 Mermaid原生防御体系图 #mermaid-svg-XZtcYBnmHrF9bFjc {font-family:"trebuchet ms",verdana,arial,sans-serif;fon…...
【C++】回调函数和回调对象
文章目录 回调可调用对象函数指针作回调函数对象作回调函数对象的使用std::function【C11】作回调使用 【C11】Lambda表达式作回调【C11】bind对象作回调std::bind的使用作回调使用 回调 当发生某种事件时需要调用或触发另一个事件即为回调,回调的核心即为将可调用…...
电子产品可靠性预计怎么做?
目录 1、电子产品可靠性预计的目的 2、电子产品可靠性预计的常用方法 2.1、基于统计数据的预计方法 2.2、物理模型预计方法 2.3、加速寿命试验 2.4、基于仿真的预计方法 3、电子产品可靠性预计的步骤 3.1、定义可靠性指标 3.2、收集数据 3.3、建立模型 3.4、进行仿真…...