概率分布与概率密度

前言

本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见《机器学习数学通关指南》


正文

在这里插入图片描述

🔍 1. 概率分布基础

概率分布描述随机变量取值的统计规律性,在机器学习中扮演着核心角色。主要分为两大类:

  • 离散型随机变量 🎲:通过**概率质量函数(PMF)**描述取值概率

    • 特点:取值可列(有限或可数无限)
    • 经典例子:二项分布 P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k) = C_n^k p^k (1-p)^{n-k} P(X=k)=Cnkpk(1p)nk、泊松分布 P ( X = k ) = λ k e − λ k ! P(X=k) = \frac{\lambda^k e^{-\lambda}}{k!} P(X=k)=k!λkeλ
    • 机器学习应用:分类问题、文本词频统计、事件计数
  • 连续型随机变量 📈:通过**概率密度函数(PDF)**描述概率分布

    • 特点:取值不可列,单点概率为零,通过区间积分计算概率 P ( a < X ≤ b ) = ∫ a b f ( x ) d x P(a < X \leq b) = \int_a^b f(x) dx P(a<Xb)=abf(x)dx
    • 经典例子:正态分布 f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π 1e2σ2(xμ)2、均匀分布 f ( x ) = 1 b − a ,   a ≤ x ≤ b f(x) = \frac{1}{b-a},\ a \leq x \leq b f(x)=ba1, axb
    • 机器学习应用:回归问题、参数估计、噪声建模

📊 2. 概率质量函数 vs. 概率密度函数

特性概率质量函数 (PMF)概率密度函数 (PDF)
适用变量离散型(类别、次数、计数等)连续型(身高、时间、距离等)
取值范围 0 , 1 0,1 0,1$0,+∞)(可大于1!)
概率计算直接给出: P ( X = k ) P(X=k) P(X=k)积分求区间: P ( a ≤ X ≤ b ) = ∫ a b f ( x ) d x P(a\leq X\leq b) = \int_a^b f(x)dx P(aXb)=abf(x)dx
归一化条件 ∑ a l l   k P ( X = k ) = 1 \sum_{all\ k} P(X=k)=1 all kP(X=k)=1 ∫ − ∞ ∞ f ( x ) d x = 1 \int_{-\infty}^{\infty} f(x)dx=1 f(x)dx=1
图形表示离散点/柱状图连续曲线
ML工具包scipy.stats.pmf, torch.distributionsscipy.stats.pdf, torch.distributions

🧠 3. 直观理解与可视化

离散分布可视化 🎯

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# 二项分布可视化
n, p = 10, 0.3
x = np.arange(0, n+1)
pmf = stats.binom.pmf(x, n, p)

plt.figure(figsize=(10, 6))
plt.bar(x, pmf, alpha=0.7, color='skyblue')
plt.stem(x, pmf, linefmt='r-', markerfmt='ro', basefmt='k-')
plt.title('二项分布 PMF (n=10, p=0.3)')
plt.xlabel('事件发生次数 k')
plt.ylabel('概率 P(X=k)')
plt.grid(alpha=0.3)
plt.show()

连续分布可视化 🌊

import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# 正态分布可视化
mu, sigma = 0, 1
x = np.linspace(-4, 4, 1000)
pdf = stats.norm.pdf(x, mu, sigma)
cdf = stats.norm.cdf(x, mu, sigma)

fig, ax = plt.subplots(1, 2, figsize=(14, 6))
ax[0].plot(x, pdf, 'b-', lw=2)
ax[0].fill_between(x, pdf, where=(x>-2)&(x<2), alpha=0.3)
ax[0].set_title('正态分布 PDF')

ax.plot(x, cdf, 'r-', lw=2)
ax.set_title('正态分布 CDF')
plt.tight_layout()
plt.show()

📝 直观理解:

  • 离散PMF: 像"概率表",每个值对应一个概率棒
  • 连续PDF: 像"概率密度图",曲线下特定区域的面积表示概率

🔧 4. 机器学习中的应用

贝叶斯推断中的先验与后验 🧩

# 示例:基于beta分布作为先验的二项分布后验计算
import numpy as np
import matplotlib.pyplot as plt
import scipy.stats as stats

# 先验: Beta(2,2) - 表示对成功概率的初始信念
prior_a, prior_b = 2, 2

# 观测数据: 10次试验,7次成功
n_trials = 10
n_success = 7

# 后验: Beta(prior_a + n_success, prior_b + n_trials - n_success)
posterior_a = prior_a + n_success
posterior_b = prior_b + (n_trials - n_success)

# 可视化先验和后验
x = np.linspace(0, 1, 1000)
prior = stats.beta.pdf(x, prior_a, prior_b)
posterior = stats.beta.pdf(x, posterior_a, posterior_b)

plt.figure(figsize=(10, 6))
plt.plot(x, prior, 'b-', lw=2, label=f'先验: Beta({prior_a},{prior_b})')
plt.plot(x, posterior, 'r-', lw=2, label=f'后验: Beta({posterior_a},{posterior_b})')
plt.fill_between(x, posterior, alpha=0.2, color='r')
plt.legend()
plt.title('贝叶斯更新: 先验→后验')
plt.xlabel('θ (成功概率)')
plt.ylabel('概率密度')
plt.grid(alpha=0.3)
plt.show()

机器学习算法中的概率分布 🤖

模型/场景相关概率分布应用
逻辑回归伯努利分布二分类问题中的标签分布
朴素贝叶斯多项分布/高斯分布文本分类/连续特征建模
LDA主题模型狄利克雷分布、多项分布文档-主题和主题-词分布
VAE正态分布潜在空间编码
GAN各种分布生成真实样本的分布
强化学习多项分布/正态分布策略选择/连续动作空间

🔍 5. 重要概率分布及其ML应用

离散分布 🎲

  1. 伯努利分布 P ( X = 1 ) = p , P ( X = 0 ) = 1 − p P(X=1)=p, P(X=0)=1-p P(X=1)=p,P(X=0)=1p

    • ML应用: 二分类问题的标签、Dropout正则化
  2. 二项分布 P ( X = k ) = C n k p k ( 1 − p ) n − k P(X=k)=C_n^k p^k (1-p)^{n-k} P(X=k)=Cnkpk(1p)nk

    • ML应用: 集成学习中的多数投票、异常检测阈值
  3. 多项分布 P ( X 1 = n 1 , . . . , X k = n k ) = n ! n 1 ! . . . n k ! p 1 n 1 . . . p k n k P(X_1=n_1,...,X_k=n_k)=\frac{n!}{n_1!...n_k!}p_1^{n_1}...p_k^{n_k} P(X1=n1,...,Xk=nk)=n1!...nk!n!p1n1...pknk

    • ML应用: 文本特征表示、朴素贝叶斯分类器
  4. 泊松分布 P ( X = k ) = λ k e − λ k ! P(X=k)=\frac{\lambda^k e^{-\lambda}}{k!} P(X=k)=k!λkeλ

    • ML应用: 事件计数建模、异常检测

连续分布 📈

  1. 正态分布 f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f(x)=\frac{1}{\sigma\sqrt{2\pi}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} f(x)=σ2π 1e2σ2(xμ)2

    • ML应用: 特征标准化、神经网络权重初始化、高斯过程
  2. 均匀分布 f ( x ) = 1 b − a , a ≤ x ≤ b f(x)=\frac{1}{b-a}, a\leq x\leq b f(x)=ba1,axb

    • ML应用: 超参数随机搜索、随机初始化
  3. 贝塔分布 f ( x ) = x α − 1 ( 1 − x ) β − 1 B ( α , β ) , 0 ≤ x ≤ 1 f(x)=\frac{x^{\alpha-1}(1-x)^{\beta-1}}{B(\alpha,\beta)}, 0\leq x\leq 1 f(x)=B(α,β)xα1(1x)β1,0x1

    • ML应用: 贝叶斯模型中的先验分布、A/B测试
  4. Dirichlet分布 (多变量贝塔分布)

    • ML应用: LDA主题模型、贝叶斯网络

🧪 6. 实战案例:概率分布在ML中的应用

案例1:使用高斯混合模型进行聚类 🧩

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
from sklearn.datasets import make_blobs

# 生成模拟数据
X, _ = make_blobs(n_samples=1000, centers=3, cluster_std=[1.0, 1.5, 0.5], random_state=42)

# 训练高斯混合模型
gmm = GaussianMixture(n_components=3, random_state=42)
gmm.fit(X)
labels = gmm.predict(X)

# 可视化结果
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis', s=40, alpha=0.8)

# 绘制高斯分布等高线
x, y = np.meshgrid(np.linspace(X[:, 0].min()-1, X[:, 0].max()+1, 100),
                  np.linspace(X[:, 1].min()-1, X[:, 1].max()+1, 100))
XX = np.array([x.ravel(), y.ravel()]).T
Z = -gmm.score_samples(XX)
Z = Z.reshape(x.shape)

# 绘制等高线图
plt.contour(x, y, Z, levels=10, colors='k', alpha=0.3)
plt.title('高斯混合模型聚类与概率密度等高线')
plt.xlabel('特征 1')
plt.ylabel('特征 2')
plt.colorbar(label='分类标签')
plt.grid(alpha=0.3)
plt.show()

案例2:使用贝叶斯优化进行超参数调优 🎯

import numpy as np
from sklearn.datasets import load_digits
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC
from skopt import gp_minimize
from skopt.space import Real, Integer
from skopt.utils import use_named_args

# 加载数据
digits = load_digits()
X, y = digits.data, digits.target

# 定义超参数空间
space = [
    Real(1e-6, 1e+1, name='C', prior='log-uniform'),
    Real(1e-6, 1e+1, name='gamma', prior='log-uniform')
]

# 定义目标函数
@use_named_args(space)
def objective(**params):
    svc = SVC(kernel='rbf', **params)
    return -np.mean(cross_val_score(svc, X, y, cv=5, n_jobs=-1, scoring='accuracy'))

# 贝叶斯优化 (使用高斯过程)
result = gp_minimize(objective, space, n_calls=50, random_state=42, verbose=0)

print(f"最佳超参数: C={result.x[0]:.6f}, gamma={result.x:.6f}")
print(f"最佳准确率: {-result.fun:.4f}")

🔮 7. 常见误解与注意事项

  • ❌ 误解: PDF的值必须小于等于1

    • ✅ 正确认识: 概率密度值可以大于1,例如均匀分布U(0,0.5)的PDF值等于2
  • ❌ 误解: PDF的值本身就是概率

    • ✅ 正确认识: PDF是概率密度,需要通过积分计算区间概率
  • ❌ 误解: 机器学习只需要了解几个基本分布就够了

    • ✅ 正确认识: 不同任务需要不同分布,理解各类分布的特性能帮助我们更好地建模
  • ❌ 误解: 连续分布和离散分布完全不相关

    • ✅ 正确认识: 二者通过累积分布函数(CDF)统一连接,且很多连续分布是离散分布的极限形式
  • ❌ 误解: 样本均值与分布期望总是接近的

    • ✅ 正确认识: 在小样本或重尾分布情况下,样本均值可能严重偏离真实期望值

🚀 8. 进阶概念:指数族分布与机器学习

指数族分布是机器学习理论的基石,很多经典算法都建立在其性质之上。

指数族分布的一般形式 📝

p ( x ∣ θ ) = h ( x ) exp ⁡ ( η ( θ ) T T ( x ) − A ( θ ) ) p(x|\theta) = h(x)\exp(\eta(\theta)^T T(x) - A(\theta)) p(xθ)=h(x)exp(η(θ)TT(x)A(θ))

其中:

  • (h(x)) 是基础测度
  • (\eta(\theta)) 是自然参数
  • (T(x)) 是充分统计量
  • (A(\theta)) 是对数配分函数

指数族分布在机器学习中的重要性 🔑

  • 广义线性模型(GLM)直接基于指数族分布
    • 线性回归 → 正态分布
    • 逻辑回归 → 伯努利分布
    • 泊松回归 → 泊松分布
# 不同GLM模型与对应分布的示例代码
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.datasets import load_diabetes, load_breast_cancer
import statsmodels.api as sm
import numpy as np

# 线性回归 (正态分布)
diabetes = load_diabetes()
X, y = diabetes.data, diabetes.target
lr = LinearRegression().fit(X, y)
print(f"线性回归R²分数: {lr.score(X, y):.4f}")

# 逻辑回归 (伯努利分布)
cancer = load_breast_cancer()
X, y = cancer.data, cancer.target
log_reg = LogisticRegression(random_state=42).fit(X, y)
print(f"逻辑回归准确率: {log_reg.score(X, y):.4f}")

# 泊松回归 (泊松分布)
# 生成模拟计数数据
X_sim = np.random.randn(100, 2)
beta = np.array([0.5, -0.2])
lam = np.exp(X_sim @ beta + 0.1)
y_sim = np.random.poisson(lam)

# 使用statsmodels拟合泊松回归
X_sim = sm.add_constant(X_sim)
poisson_model = sm.GLM(y_sim, X_sim, family=sm.families.Poisson()).fit()
print(f"泊松回归系数: {poisson_model.params}")

最大熵原理与分布选择 🌟

在机器学习中,最大熵原理指导我们在已知约束条件下选择最不确定的分布:

  1. 均匀分布: 在取值范围已知情况下的最大熵分布
  2. 正态分布: 在均值和方差已知情况下的最大熵分布
  3. 指数分布: 在均值为正且已知情况下的最大熵分布
  4. 多项分布: 在离散情况下概率总和为1的最大熵分布

🔄 9. 概率分布与深度学习

分布在损失函数中的应用 📊

损失函数对应分布假设模型输出
均方误差 (MSE)正态分布连续值
交叉熵 (CE)多项/伯努利分布概率值
Focal Loss调整后的伯努利分布不平衡分类问题
KL散度两分布间的差异分布参数

生成模型中的分布学习 🎨

# VAE中的分布示例
import torch
import torch.nn as nn
import torch.nn.functional as F

class SimpleVAE(nn.Module):
    def __init__(self, input_dim, latent_dim):
        super(SimpleVAE, self).__init__()
        
        # 编码器
        self.encoder = nn.Sequential(
            nn.Linear(input_dim, 256),
            nn.ReLU(),
            nn.Linear(256, 128),
            nn.ReLU()
        )
        
        # 潜在空间参数
        self.mu = nn.Linear(128, latent_dim)
        self.log_var = nn.Linear(128, latent_dim)
        
        # 解码器
        self.decoder = nn.Sequential(
            nn.Linear(latent_dim, 128),
            nn.ReLU(),
            nn.Linear(128, 256),
            nn.ReLU(),
            nn.Linear(256, input_dim),
            nn.Sigmoid()  # 假设输入是图像像素值[0,1]
        )
        
    def encode(self, x):
        h = self.encoder(x)
        return self.mu(h), self.log_var(h)
    
    def reparameterize(self, mu, log_var):
        # 重参数化技巧:z = μ + σ * ε
        std = torch.exp(0.5 * log_var)
        eps = torch.randn_like(std)
        return mu + eps * std
    
    def decode(self, z):
        return self.decoder(z)
    
    def forward(self, x):
        mu, log_var = self.encode(x)
        z = self.reparameterize(mu, log_var)
        return self.decode(z), mu, log_var
    
    def loss_function(self, recon_x, x, mu, log_var):
        # 重构损失 (基于伯努利分布的负对数似然)
        BCE = F.binary_cross_entropy(recon_x, x, reduction='sum')
        
        # KL散度: N(μ,σ²) 与 N(0,1) 之间
        KLD = -0.5 * torch.sum(1 + log_var - mu.pow(2) - log_var.exp())
        
        return BCE + KLD

分布估计与不确定性量化 🔍

深度学习模型不仅需要预测,还应量化预测的不确定性:

  • 贝叶斯神经网络:对权重进行分布建模,而非点估计
  • 集成方法:通过多个模型的预测分布来估计不确定性
  • MC Dropout:通过测试时开启Dropout来近似贝叶斯推断
# MC Dropout不确定性估计示例
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
import matplotlib.pyplot as plt

class MCDropoutModel(nn.Module):
    def __init__(self):
        super(MCDropoutModel, self).__init__()
        self.fc1 = nn.Linear(1, 32)
        self.dropout = nn.Dropout(0.1)
        self.fc2 = nn.Linear(32, 32)
        self.fc3 = nn.Linear(32, 1)
        
    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.dropout(x)  # 训练和测试都开启!
        x = F.relu(self.fc2(x))
        x = self.dropout(x)
        return self.fc3(x)
    
    def predict_with_uncertainty(self, x, samples=100):
        preds = []
        self.train()  # 激活dropout!
        with torch.no_grad():
            for _ in range(samples):
                preds.append(self(x))
        preds = torch.stack(preds, dim=0)
        mean = preds.mean(0)
        std = preds.std(0)
        return mean, std

💡 10. 实用技巧与最佳实践

分布选择指南 🧭

  1. 数据范围有界:考虑Beta分布或截断正态分布
  2. 数据为非负:考虑Gamma分布、对数正态分布或指数分布
  3. 数据为计数:考虑泊松分布、负二项分布
  4. 数据有重尾:考虑t分布、柯西分布或对数正态分布
  5. 多峰数据:考虑混合模型(如高斯混合模型)
  6. 圆形/方向数据:考虑von Mises分布

常见问题解决方案 🔧

  • 数据倾斜:使用Box-Cox变换或对数变换使数据更接近正态分布
  • 异方差:考虑使用广义线性模型或异方差回归
  • 过拟合:使用先验分布进行正则化(贝叶斯方法)
  • 特征工程:利用领域知识选择合适的分布转换特征

📝 总结

  • 概率分布是机器学习的理论基础,影响着模型设计、损失函数选择和性能评估
  • 离散型随机变量通过PMF描述,连续型随机变量通过PDF描述
  • 理解分布特性能帮助我们:
    • 🎯 选择合适的模型架构
    • 📊 设计恰当的损失函数
    • 🧪 生成合理的测试数据
    • 🔍 量化模型的不确定性
    • 🛠️ 进行有效的特征转换

学习建议 📚

  1. 掌握常见分布的特性及其在机器学习中的应用场景
  2. 学会识别数据分布特征,为模型选择提供依据
  3. 使用可视化工具直观理解不同分布的形状和性质
  4. 熟悉统计工具包(如scipy.stats、torch.distributions)中的分布API
  5. 在实践中尝试不同分布假设,比较模型性能

🌟 小贴士:概率分布不仅是数学概念,更是连接数据与模型的桥梁。掌握它们能让你的机器学习之路走得更远!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类与对象:深入理解默认成员函数

类与对象&#xff1a;深入理解默认成员函数 引言1、默认成员函数概述2、构造函数与析构函数2.1 默认构造函数2.2 析构函数 3、拷贝控制成员3.1 拷贝构造函数3.2 赋值运算符重载 4、移动语义&#xff08;C11&#xff09;4.1 移动构造函数4.2 移动赋值运算符 5、三五法则与最佳实…

LINUX网络基础 - 网络编程套接字,UDP与TCP

目录 前言 一. 端口号的认识 1.1 端口号的作用 二. 初识TCP协议和UDP协议 2.1 TCP协议 TCP的特点 使用场景 2.2 UDP协议 UDP的特点 使用场景 2.3 TCP与UDP的对比 2.4 思考 2.5 总结 三. 网络字节序 3.1 网络字节序的介绍 3.2 网络字节序思考 四. socket接口 …

夸父工具箱(安卓版) 手机超强工具箱

如今&#xff0c;人们的互联网活动日益频繁&#xff0c;导致手机内存即便频繁清理&#xff0c;也会莫名其妙地迅速填满&#xff0c;许多无用的垃圾信息悄然占据空间。那么&#xff0c;如何有效应对这一难题呢&#xff1f;答案就是今天新推出的这款工具软件&#xff0c;它能从根…

Apache nifi demo 实验

Apache nifi 是个数据流系统&#xff0c;可以通过配置 自定义的流程来实现数据的转换。 比如可以配置一个流程&#xff0c;读取数据库里的数据&#xff0c;再转换&#xff0c;最后保存到本地文件。 这样可以来实现一些数据转换的操作&#xff0c;而不用特地编写程序来导入导出。…

VSCode知名主题带毒 安装量900万次

目前微软已经从 Visual Studio Marketplace 中删除非常流行的主题扩展 Material Theme Free 和 Material Theme Icons&#xff0c;微软称这些主题扩展包含恶意代码。 统计显示这些扩展程序的安装总次数近 900 万次&#xff0c;在微软实施删除后现在已安装这些扩展的开发者也会…

Java自动拆箱装箱/实例化顺序/缓存使用/原理/实例

在 Java 编程体系中&#xff0c;基本数据类型与包装类紧密关联&#xff0c;它们各自有着独特的特性和应用场景。理解两者之间的关系&#xff0c;特别是涉及到拆箱与装箱、实例化顺序、区域问题、缓存问题以及效率问题。 一、为什么基本类型需要包装类 泛型与集合的需求 Java…

蓝桥杯复盘记录004(2023)

涉及知识点 1.深搜 2.单调队列滑动窗口 3.位运算 4.并查集 题目 1.lanqiao3505 思路&#xff1a; dfs(index, weight, cnt) index表示瓜的索引&#xff0c; weight等于买瓜的重量&#xff0c; cnt表示买了多少瓜。 递归终止条件&#xff1a;1.如果瓜买完了&#xff0c;归…

【银河麒麟高级服务器操作系统】服务器测试业务耗时问题分析及处理全流程分享

更多银河麒麟操作系统产品及技术讨论&#xff0c;欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer…

【现代深度学习技术】卷积神经网络03:填充和步幅

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

FPGA开发,使用Deepseek V3还是R1(3):系统级与RTL级

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…

【含文档+PPT+源码】基于SpringBoot和Vue的编程学习系统

项目介绍 本课程演示的是一款 基于SpringBoot和Vue的编程学习系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该…

网页复制小妙招

当你遇到网页时不能复制时&#xff0c;不要慌&#xff0c;教你一招可让你为所欲为。 平时你们在网上查找资料想复制时&#xff0c;总是会出现付费限制提示&#xff08;我也是qwq&#xff09;&#xff0c;这时不要慌&#xff0c;在空白处右击选择检查 按开检查&#xff0c;然后…

聆听PostgreSQL数据库的使用

参考&#xff1a;&#xff08;1&#xff09;零基础入门PostgreSQL教程 &#xff08;2&#xff09;菜鸟教程 文章目录 一、PostgreSQL是什么&#xff1f;二、基本使用1.下载2.操作&#xff08;1&#xff09;数据库&#xff08;2&#xff09;表 一、PostgreSQL是什么&#xff1f;…

内核进程调度队列(linux的真实调度算法) ─── linux第13课

目录 内核进程调度队列的过程 一个CPU拥有一个runqueue(运行队列在内存) 活动队列(active) 过期队列(expired) active指针和expired指针 重绘runqueue linux内核O(1)调度算法 总结 补充知识: 封装链式结构的目的是: 仅使用封装链式结构可以得到全部的task_struct的信…

【算法】手撕二分查找

目录 二分查找 【左闭右闭】/【相错终止】 【循环不变量】 【四要素】 二分查找的任意模板 【一般】情形 【左闭右闭】总结 mid的防溢出写法 【左闭右开】/【相等终止】 【一般】情形 再谈初始值 【左闭右开】总结 二分查找本质 【左开右闭】/【相等终止】 【一般…

C++入门基础知识1

今天&#xff0c;我们正式来学习C&#xff0c;由于C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习有一定的帮助。 现在我们这篇主要是&#xff1a; 1. 补充C语言语法…

Leetcode 57-插入区间

给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表 intervals&#xff0c;其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束&#xff0c;并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval [start, end] 表示另一个区间的开始和…

【三.大模型实战应用篇】【4.智能学员辅导系统:docx转PDF的自动化流程】

去年团队庆功宴上,我司CTO端着酒杯过来:“老王啊,咱们现在文档解析做得挺溜了,但老师们总抱怨下载的作业格式乱码…” 我看了眼手机里凌晨三点收到的崩溃警报,把杯里的可乐一饮而尽——得,新的副本又开了。 一、为什么PDF转换比想象中难十倍? 某次用户调研中,数学教研…

Mac上安装Pycharm

说明&#xff1a;仅供参考&#xff0c;是自己的安装流程&#xff0c;以免以后自己想不起来来看看的笔记 官网地址&#xff1a;https://www.jetbrains.com/pycharm/ 1、点击Download&#xff0c;跳转到下一个页面 2、MAC&#xff0c;选择Mac OS&#xff0c;在Pycharm Professio…

【动手学强化学习】番外2-多智能体强化学习算法框架之“MARLlib”学习

文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 调研当前主流的MARL算法框架2.2.2 学习经典MARL算法框架——“MARLlib”&#xff08;1&#xff09;开发团队&#xff08;2&#xff09;简介 2.2.3 安装经典MARL算法框架——“MARL…