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

基于 sklearn 的均值偏移聚类算法的应用

基于 sklearn 的均值偏移聚类算法的应用

在机器学习和数据挖掘中,聚类算法是一类非常重要的无监督学习方法。它的目的是将数据集中的数据点划分为若干个类,使得同一类的样本点彼此相似,而不同类的样本点相互之间差异较大。均值偏移聚类(Mean Shift Clustering)是一种基于密度的聚类方法,可以很好地识别数据中的高密度区域。


1. 什么是均值偏移聚类

均值偏移(Mean Shift)是一种基于密度峰值的无监督聚类算法,最早由 Fukunaga 和 Hostetler 于1975年提出。

均值偏移聚类算法是通过计算数据点的局部均值来不断更新每个数据点的位置,直到所有的数据点都趋于聚集在密度较高的区域。其本质上是一种基于梯度上升的方式,通过对数据点的迭代移动找到最密集的区域,最后将数据点聚集成簇。

与传统的基于距离的聚类方法(如K-means)不同,均值偏移聚类不需要预先指定簇的数量,它自动寻找数据分布的密度极值点进行聚类,能够处理非规则形状的数据分布。

1.1 核心特点

  1. 无需预先指定聚类数量
  2. 自动发现任意形状的簇
  3. 对噪声数据具有健壮性
  4. 基于核密度估计的概率方法

2. 均值偏移的数学模型

2.1 质心候选位置的调整

这段描述了一个迭代过程,称为爬山算法(hill climbing),该过程用于找到估计概率密度的局部最大值。爬山算法是一种启发式搜索方法,通过不断地调整候选解的值,逐步逼近目标的最优解。

给定一个候选质心的位置 x t x^t xt,我们通过以下公式来更新候选质心的位置:
x t + 1 = x t + m ( x t ) x^{t+1} = x^t + m(x^t) xt+1=xt+m(xt)
其中, m ( x t ) m(x^t) m(xt) 是一个均值漂移向量(mean shift vector),它指向数据点密度增加的区域。

2.2 均值漂移向量的计算

均值漂移向量 m ( x t ) m(x^t) m(xt) 是通过计算每个质心所在邻域内的点的均值来更新质心的位置。为了计算这个向量,我们首先定义质心 x t x^t xt 的邻域 N ( x t ) N(x^t) N(xt),即在给定距离范围内的所有样本点。接着,均值漂移向量的计算公式如下:
m ( x ) = 1 ∣ N ( x ) ∣ ∑ x j ∈ N ( x ) x j − x m(x) = \frac{1}{|N(x)|} \sum_{x_j \in N(x)} x_j - x m(x)=N(x)1xjN(x)xjx
其中: N ( x ) N(x) N(x) 是质心 x x x 的邻域, x j x_j xj 是邻域内的样本点, ∣ N ( x ) ∣ |N(x)| N(x) 是邻域内样本点的数量, x x x 是当前的质心。

这个公式的意思是:计算邻域内所有点的均值,并通过减去当前质心的位置,得到一个向量。这个向量指示质心应该如何调整位置。

2.3 核函数的使用

通常,均值漂移向量的计算依赖于用于密度估计的核函数。上面给出的均值漂移向量公式是一个通用的公式
m ( x ) = ∑ x j ∈ N ( x ) K ( x j − x ) x j ∑ x j ∈ N ( x ) K ( x j − x ) − x m(x) = \frac{\sum_{x_j \in N(x)} K(x_j - x) x_j}{\sum_{x_j \in N(x)} K(x_j - x)} - x m(x)=xjN(x)K(xjx)xjN(x)K(xjx)xjx
其中, K ( x j − x ) K(x_j - x) K(xjx) 是一个核函数,衡量了每个邻域点 x j x_j xj 与当前质心 x x x 之间的相似度。通过这种方式,质心的更新不仅仅依赖于邻域点的位置,还考虑了每个点的重要性(通过核函数的加权)。

2.4 核函数的特性

在我们的实现中,核函数 K ( x j − x ) K(x_j - x) K(xjx) 的值会根据点 x j x_j xj 与质心 x x x 的距离决定:

  • x j x_j xj x x x 的距离较小(即 K ( x j − x ) K(x_j - x) K(xjx) 较大)时,核函数值为 1。
  • x j x_j xj x x x 的距离较大(即 K ( x j − x ) K(x_j - x) K(xjx) 较小)时,核函数值为 0。

核函数的作用是决定哪些点在质心的邻域内,以及这些点对质心更新的贡献大小。


3. 参数说明

from sklearn.cluster import MeanShiftMeanShift(*,bandwidth=None,		# 控制邻域大小的核心参数,影响聚类的精度和速度seeds=None,			# 控制初始化的方式,可以加速或精确化聚类过程。bin_seeding=False,	# 使用分箱方法来选择种子点min_bin_freq=1,		# 在分箱方法中每个区域内至少n个样本点才能被选择为种子点cluster_all=True,	# 是否将所有数据点都归类为簇,或者标记为噪声点n_jobs=None,		# 使得聚类过程能够并行化,从而加速计算max_iter=300,		# 设置算法的最大迭代次数,以避免过长的计算时间
)
  1. bandwidth (float)

    • 描述: 这个参数控制用于确定每个点邻域范围的带宽。带宽定义了“邻域”的大小,即每个点在计算均值漂移向量时考虑的邻域半径。如果未指定,则算法会根据数据自动估计合适的带宽。

    • 作用: 影响均值漂移的结果,带宽越大,每个质心的“邻域”越大,算法可能会合并更多的簇;带宽越小,簇会更细致,可能会产生更多的簇。

  2. seeds (array-like)

    • 描述: 用于初始化质心的种子点。如果为 None,默认将会使用数据中的点作为种子点。可以通过传入一个自定义的种子点集合来控制算法的初始化过程。

    • 作用: 影响聚类结果的初始位置,指定种子点后可以加速聚类过程。

  3. bin_seeding (bool)

    • 描述: 如果为 True,则使用分箱方法来选择种子点。分箱方法将数据分成多个小区域,在每个区域中选择一个点作为种子,从而减少计算量。如果为 False,则使用所有数据点作为种子。

    • 作用: 在大规模数据集上可以加速聚类过程,减少计算复杂度。

  4. min_bin_freq (int)

    • 描述: 如果启用了 bin_seeding,则该参数指定了在分箱方法中每个区域内至少需要有多少个样本点才能被选择为种子点。

    • 作用: 影响种子点选择的频率,较高的 min_bin_freq 值将减少种子点的数量。

  5. cluster_all (bool)

    • 描述: 如果为 True,则所有的点都会被归类到某个簇中。如果为 False,则没有找到密度极大值的点会被标记为 -1,表示这些点没有归属于任何簇(类似于离群点)。

    • 作用: 如果设置为 False,会将不符合某个簇条件的点视为噪声或离群点,常用于检测离群点。

  6. n_jobs (int)

    • 描述: 用于并行计算的工作线程数。n_jobs=-1 会使用所有可用的 CPU 核心。默认情况下,None 表示不使用并行计算(即单线程)。

    • 作用: 如果数据量较大,可以设置为 -1 来加速计算过程,利用多核并行处理。

  7. max_iter (int)

    • 描述: 算法的最大迭代次数。在均值漂移过程中,质心会不断地向密度极大值移动,max_iter 限制了算法最多执行多少次迭代。如果算法在达到最大迭代次数之前收敛,算法会提前停止。

    • 作用: 控制算法的计算复杂度和时间。如果数据分布较复杂,可能需要更多的迭代来达到收敛。


4. 均值偏移聚类样例

4.1 生成样例数据并聚类

# 导入必要的库
import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth  # 导入均值偏移聚类和带宽估计函数
from sklearn.datasets import make_blobs  # 用于生成模拟数据集的函数# 定义聚类的中心点
centers = [[1, 1], [-1, -1], [1, -1]]# 生成模拟数据集,包含10000个样本,指定中心点和簇的标准差
X, _ = make_blobs(n_samples=10000, centers=centers, cluster_std=0.6)# 使用估计带宽函数自动检测带宽,量化值设为0.2,选择500个样本计算带宽
bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)# 创建均值偏移聚类对象,并设定带宽和开启二值化种子
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)# 对数据进行聚类
ms.fit(X)# 获取聚类标签和簇中心
labels = ms.labels_
cluster_centers = ms.cluster_centers_# 获取聚类标签的唯一值,即不同的簇标签
labels_unique = np.unique(labels)# 获取簇的数量
n_clusters_ = len(labels_unique)# 输出聚类的估计数量
print("估计的簇数量: %d" % n_clusters_)
# 输出簇中心
print("簇中心为: \n", cluster_centers)

估计的簇数量: 3
簇中心为:
[[ 0.92930747 -0.92997006]
[-0.90712668 -0.97393151]
[ 1.02412056 0.94250739]]

4.2 可视化结果

# 导入绘图工具
import matplotlib.pyplot as plt
import seaborn as sns  # 导入seaborn库来美化图表sns.set_theme(style="whitegrid", font="SimHei", rc={"axes.unicode_minus": False})  # 设置主题和字体# 设定颜色和标记符号
colors = ["#dede00", "#377eb8", "#f781bf"]
markers = ["x", "o", "^"]# 绘制每个簇的样本点,并标记簇的中心
for k, col in zip(range(n_clusters_), colors):my_members = labels == k  # 获取属于第k个簇的样本cluster_center = cluster_centers[k]  # 获取第k个簇的中心plt.plot(X[my_members, 0], X[my_members, 1], markers[k], color=col, label=f"集群 {k+1}", alpha=0.4)  # 绘制簇的样本点plt.plot(cluster_center[0],cluster_center[1],markers[k],markerfacecolor=col,markeredgecolor="k",markersize=14,# label=f"聚类中心点 {k+1}"  # 绘制簇的中心点)# 设置图表标题
plt.title("均值偏移聚类样例结果")# 显示图表
plt.legend()  # 显示图例
plt.show()

在这里插入图片描述


5. 均值偏移聚类算法的应用

均值偏移聚类算法在计算机视觉(图像分割、目标追踪、视频分析……)、用户行为分析(电商用户分群、社交网络社区发现、异常检测……)、生物信息学(基因表达数据分析、蛋白质结构分类……)和地理信息系统(卫星图像分析、人口密度研究……)等领域中被广泛应用。

5.1 图像分割

5.1.1 选择图像(flowers-6558487_640)

flowers-6558487_640

5.1.2 导入图片并进行分割
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import seaborn as sns
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets import load_sample_image
from sklearn.preprocessing import StandardScaler# 设置 Seaborn 样式
sns.set_theme(style="whitegrid", font="SimHei", rc={"axes.unicode_minus": False})  # 设置主题和字体# 加载示例图像
img = mpimg.imread('flowers-6558487_640.jpg')# 将图像转换为二维数组,准备聚类
image_data = img.reshape((-1, 3))  # 每个像素点是一个RGB值# 进行标准化
scaler = StandardScaler()
image_data_scaled = scaler.fit_transform(image_data)# 估算带宽(bandwidth)
bandwidth = estimate_bandwidth(image_data_scaled, quantile=0.1, n_samples=500)# 使用均值偏移进行聚类
mean_shift = MeanShift(bandwidth=bandwidth, bin_seeding=True)
mean_shift.fit(image_data_scaled)# 获取聚类结果
labels = mean_shift.labels_# 将聚类标签重新映射为图像
segmented_image = labels.reshape(img.shape[:2])# 显示原图和分割结果
fig, ax = plt.subplots(1, 2, figsize=(12, 10))ax[0].imshow(img)
ax[0].set_title("原始图像")
ax[0].axis('off')ax[1].imshow(segmented_image, cmap='jet')
ax[1].set_title("聚类分割结果(MeanShift)")
ax[1].axis('off')plt.show()

在这里插入图片描述

5.1.3 显示分割结果
# 统计聚类数量
n = len(set(labels))# 将标签重新变为图像的形状
segmented_image_list = []# 创建每个簇的分割图像
for cluster in range(n):  # 假设我们有3个簇# 创建一个全为0的图像(与原图尺寸一致)segmented_image = np.zeros_like(img)# 将属于该簇的像素赋值为原图像素,其他像素设置为黑色# 获取属于该簇的像素的索引cluster_pixels = labels == cluster# 将符合条件的像素赋值segmented_image.reshape(-1, 3)[cluster_pixels] = img.reshape(-1, 3)[cluster_pixels]# 添加到分割图像列表中segmented_image_list.append(segmented_image)# 创建子图布局
fig, axes = plt.subplots(1, n, figsize=(12, 10))# 绘制每个聚类的分割图像
for i, ax in enumerate(axes.flat):ax.imshow(segmented_image_list[i])  # 显示分割后的图像ax.set_title(f'聚类 {i+1}', fontsize=14)  # 设置标题为聚类编号ax.axis('off')  # 禁用坐标轴# 调整布局,防止重叠
plt.tight_layout()
plt.show()

在这里插入图片描述

5.1.4 调整参数

5.1.3 图像可知,黄色花朵被分割为了三个聚类(聚类2、聚类3、聚类4),说明效果不佳,因此调整参数 quantile=0.2

# 估算带宽(bandwidth)
bandwidth = estimate_bandwidth(image_data_scaled, quantile=0.2, n_samples=500)

在这里插入图片描述
在这里插入图片描述


5.2 异常检测

5.2.1 导入鸢尾花数据集并降维
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn.cluster import MeanShift
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler# 设置 Seaborn 样式
sns.set_theme(style="whitegrid", font="SimHei", rc={"axes.unicode_minus": False})  # 设置主题和字体# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# PCA降维到2维
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)# 绘制散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x=X_pca[:, 0], y=X_pca[:, 1], hue=None, s=100, edgecolor='k', alpha=0.8)
plt.title("鸢尾花数据集", fontsize=16)
plt.xlabel("主成分 1", fontsize=12)
plt.ylabel("主成分 2", fontsize=12)# 设置网格线为虚线,并设置透明度
plt.grid(color='gray', linestyle='--', linewidth=0.7, alpha=0.5)# 显示图例
plt.show()

在这里插入图片描述

5.2.2 添加异常数据并进行检测
# 在PCA降维后的数据中添加几个异常值
# 异常值:远离正常数据点
outliers = np.array([[4, 3], [-3, -3], [4, -4]])  # 假设我们人为添加3个异常点
X_pca_with_outliers = np.vstack([X_pca, outliers])# 使用均值偏移聚类算法
mean_shift = MeanShift(bandwidth=1)
mean_shift.fit(X_pca_with_outliers)# 获取聚类标签
labels = mean_shift.labels_# 获取每个簇的大小
unique_labels, counts = np.unique(labels, return_counts=True)
print(f"聚类的簇数量: {len(unique_labels)}")# 标记异常点
# 异常点的簇大小为1,表示每个簇只包含一个样本
outliers_labels = unique_labels[counts == 1]  # 找出簇大小为1的标签# 可视化聚类结果
plt.figure(figsize=(8, 6))# 使用sns.scatterplot进行美化
sns.scatterplot(x=X_pca_with_outliers[:, 0], y=X_pca_with_outliers[:, 1], hue=labels, palette="viridis", s=100, alpha=0.8, edgecolor='k', legend=None)# 标记异常点
for label in outliers_labels:outlier_points = X_pca_with_outliers[labels == label]plt.scatter(outlier_points[:, 0], outlier_points[:, 1], color='red', s=100, marker='x', label='异常点')# 设置图表标题、轴标签
plt.title("均值偏移聚类与异常检测", fontsize=16)
plt.xlabel("主成分 1", fontsize=12)
plt.ylabel("主成分 2", fontsize=12)# 显示图例
# plt.legend(loc='upper right')
plt.show()

聚类的簇数量: 7

在这里插入图片描述


6. 算法优缺点

优势

  • 自动确定聚类数量
  • 对噪声不敏感
  • 适应任意形状的簇

局限

  • 时间复杂度较高(约O(n²))
  • 带宽选择对结果影响大
  • 不适用于高维数据

相关文章:

基于 sklearn 的均值偏移聚类算法的应用

基于 sklearn 的均值偏移聚类算法的应用 在机器学习和数据挖掘中,聚类算法是一类非常重要的无监督学习方法。它的目的是将数据集中的数据点划分为若干个类,使得同一类的样本点彼此相似,而不同类的样本点相互之间差异较大。均值偏移聚类&…...

三、大模型微调的多种方法与应用场景

详解大模型微调的多种方法与应用场景 随着大模型的不断发展,如何有效地微调这些庞大的预训练模型以适应特定任务成为了研究和应用中的一个重要问题。大模型微调不仅能够提高任务性能,还能在不同的业务需求中提升模型的适应性。在本文中,我们…...

第2课 树莓派镜像的烧录

树莓派的系统通常是安装在SD卡上的‌。SD卡作为启动设备,负责启动树莓派并加载操作系统。这种设计使得树莓派具有便携性和灵活性,用户可以通过更换SD卡来更换操作系统或恢复出厂设置。 烧录树莓派的镜像即是将树莓派镜像烧录到SD卡上,在此期间会格式化SD卡,如果SD卡…...

SQL之order by盲注

目录 一.order by盲注的原理 二.注入方式 a.布尔盲注 b.时间盲注 三.防御 一.order by盲注的原理 order by子句是用于按指定列排序查询结果,列名或列序号皆可。 order by 后面接的字段或者数字不一样,那么这个数据表的排序就会不同。 order by 盲…...

AI大模型(四)基于Deepseek本地部署实现模型定制与调教

AI大模型(四)基于Deepseek本地部署实现模型定制与调教 DeepSeek开源大模型在榜单上以黑马之姿横扫多项评测,其社区热度指数暴涨、一跃成为近期内影响力最高的话题,这个来自中国团队的模型向世界证明:让每个普通人都能…...

java后端开发day19--学生管理系统升级

(以下内容全部来自上述课程) 1.要求及思路 1.总体框架 2.注册 3.登录 4.忘记密码 2.代码 1.javabean public class User1 {private String username;private String password;private String personID;private String phoneNumber;public User1() {…...

MFC文件和注册表的操作

MFC文件和注册表的操作 日志、操作配置文件、ini、注册表、音视频的文件存储 Linux下一切皆文件 C/C操作文件 const char* 与 char* const const char* 常量指针,表示指向的内容为常量。指针可以指向其他变量,但是内容不能再变了 char szName[6]&qu…...

vscode如何使用鼠标滚轮调整字体大小

1.打开设置 2.搜索Font Ligatures 3.编辑配置文件 4.修改代码并保存 修改前 修改后 在最后一行添加:“editor.mouseWheelZoom”: true 记得在上一行最后,加上英文版的“,”逗号 5.配置成功,再次按Ctrl鼠标滚轮便可以缩放了。...

C++之vector和list辨析

std::vector 和 std::list 是 C 标准库中两种常用的容器,它们都用于存储和管理元素集合,但在底层实现和性能特性上有显著的区别。 1. 底层实现 std::vector: 基于动态数组实现。元素在内存中是连续存储的。支持随机访问(通过下标访问元素&a…...

冯诺依曼体系结构 ──── linux第8课

目录 冯诺依曼体系结构 关于冯诺依曼,必须强调几点: 冯诺依曼体系结构 我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系 输入单元:包括键盘, 鼠标,网卡,扫…...

EX_25/2/22

找到第一天mystring练习&#xff0c;实现以下功能 mystring str "hello" mystring ptr "world" str str ptr; str ptr str[0] H #include <iostream> #include <cstring> #include <cstdlib> #include <unistd.h> #in…...

rust安装教程以及git连接到远程仓库

1.官方网站下载rustup-init程序 链接: rust-lang 从这里可以获取到rust的下载程序,这个下载程序会帮助你下载visual-studio的安装包从而获取相关的编译环境。 tips:无需再下载visual_studio 2确认安装所需要的框架&#xff0c;SKD工具 安装完毕之后可以检查一下 rustc --ve…...

Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因

Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因 一、背景二、查看topic日志信息三、结论四、解决方法一、背景 源头数据库在很短的时间内刷了大量的数据,部分数据在hdfs丢失了 理论上debezium数据采集不会丢失,就需要排查数据链路某个节点是否有数据丢失。 数据…...

VC++零基础入门之系列教程 【附录E MFC快速参考指南】

附录E MFC快速参考指南 E.1 创建窗口 使用M F C CWnd wnd; W n d . C r e a t e E x ( E xSt y l e , C l a s s N a m e , Wi n d o w N a m e , S t y l e , x , y, Wi d t h , H e i g h t , P a r e n t , M e n u , P a r a m ) ; 使用A P I HWND hwnd=::CreateWi n d …...

在CentOS 7下部署NFS的详细教程

在CentOS 7下部署NFS的详细教程 NFS&#xff08;Network File System&#xff09;是一种分布式文件系统协议&#xff0c;允许用户在网络中的不同主机之间共享文件和目录。NFS广泛应用于Linux和Unix系统中&#xff0c;特别适合在集群环境中共享存储资源。本文将详细介绍如何在C…...

LabVIEW C编译支持工具库CCompileSupp.llb

路径&#xff1a;C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform\CCompileSupp.llb ​ 1. 工具库概述 定位&#xff1a;LabVIEW内置的C语言编译支持工具库&#xff0c;用于处理LabVIEW与C/C代码的混合编程接口&#xff0c;涵盖编译器配置、代码生成…...

【含文档+PPT+源码】基于微信小程序的农产品自主供销商城系统

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

MongoDB私人学习笔记

俗话说“好记性不如烂笔头”&#xff0c;编程的海洋如此的浩大&#xff0c;养成做笔记的习惯是成功的一步&#xff01; 此笔记主要是ZooKeeper3.4.9版本的笔记&#xff0c;并且笔记都是博主自己一字一字编写和记录&#xff0c;有错误的地方欢迎大家指正。 一、基础知识&#xf…...

C++---了解STL

上节学习了模板&#xff0c;那么就得谈到C的标准模板库STL。 C98&#xff1a;以模板方式重写了C标准库&#xff0c;引入了STL(标准模板库)。 1.概念 STL(Standard template Libarary)标准模板库&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&am…...

智能自动化新纪元:AI与UiPath RPA的协同应用场景与技术实践

智能自动化新纪元&#xff1a;AI与UiPath RPA的协同应用场景与技术实践 引言 在数字化转型的浪潮中&#xff0c;企业对于自动化技术的需求已从简单的任务执行转向更复杂的智能决策。传统RPA&#xff08;Robotic Process Automation&#xff09;通过模拟人类操作处理重复性任务…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战&#xff0c;克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...