层次聚类(Hierarchical Clustering)详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:机器学习分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:k-均值聚类(k-Means Clustering)详解
文章目录
- 引言
- 一、基本原理
- 1. 聚类类型
- 自底向上聚类(Agglomerative Clustering)
- 自顶向下聚类(Divisive Clustering)
- 2. 距离度量
- 3. 聚类合并策略
- 4. 树形图(Dendrogram)
- 5. 关键优势与局限性
- 优势
- 局限性
- 二、实现步骤
- 1. 数据准备
- 2. 计算距离矩阵
- 3. 初始化聚类
- 4. 合并聚类
- 5. 重复合并过程
- 6. 生成树形图(Dendrogram)
- 7. 结果分析与解释
- 8. 应用与扩展
- 三、应用场景
- 1. 生物信息学
- 2. 市场细分
- 3. 图像处理
- 4. 社交网络分析
- 总结
引言
在当今数据驱动的时代,数据分析已成为各个领域不可或缺的一部分。随着数据量的激增,如何有效地从复杂的数据集中提取有价值的信息成为了研究者和从业者面临的重要挑战。聚类分析作为一种无监督学习方法,能够将数据集中的对象根据其特征进行分组,从而揭示数据的潜在结构和模式。在众多聚类方法中,层次聚类(Hierarchical Clustering)因其直观性和灵活性而备受青睐。
层次聚类通过构建树状结构(树形图)来展示数据之间的层次关系,使得用户可以直观地理解数据的分布和聚类的过程。无论是在生物信息学中分析基因表达数据,还是在市场研究中识别客户群体,层次聚类都展现了其广泛的应用潜力和强大的分析能力。本文将深入探讨层次聚类的基本原理、数学模型、实现步骤以及应用场景,旨在为读者提供全面的理解和实用的指导。通过对层次聚类的深入分析,读者将能够更好地掌握这一重要的数据分析工具,并在实际应用中灵活运用。
一、基本原理
层次聚类(Hierarchical Clustering)是一种将数据对象组织成层次结构的聚类方法。其基本原理是通过逐步合并或分割数据点,形成一个树状结构(树形图),以便于理解和分析数据之间的关系。层次聚类的核心在于如何定义和计算数据点之间的相似性或距离,以及如何根据这些距离进行聚类。
1. 聚类类型
层次聚类主要分为两种类型:
自底向上聚类(Agglomerative Clustering)
自底向上聚类是最常用的层次聚类方法。其基本步骤如下:
- 初始化:将每个数据点视为一个独立的聚类。
- 计算距离:计算所有聚类之间的距离,通常使用欧几里得距离或曼哈顿距离。
- 合并聚类:找到距离最小的两个聚类,将它们合并为一个新的聚类。
- 更新距离矩阵:根据合并后的新聚类,更新距离矩阵。
- 重复:重复上述步骤,直到所有数据点合并为一个聚类,或达到预设的聚类数。
这种方法的优点在于其简单易懂,适用于小规模数据集,但在处理大规模数据时计算复杂度较高。
自顶向下聚类(Divisive Clustering)
自顶向下聚类相对较少使用,其基本步骤如下:
- 初始化:将所有数据点视为一个整体聚类。
- 分割聚类:根据某种标准(如距离或相似性)将当前聚类分割成两个或多个子聚类。
- 重复:对每个子聚类重复分割过程,直到每个数据点都成为一个独立的聚类。
自顶向下聚类的优点在于可以更好地处理大规模数据集,但其实现相对复杂。
2. 距离度量
距离度量是层次聚类的关键,决定了数据点之间的相似性。常用的距离度量包括:
-
欧几里得距离:适用于连续数值型数据,计算公式为:
d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} d(x,y)=i=1∑n(xi−yi)2 -
曼哈顿距离:适用于离散数据,计算公式为:
d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x, y) = \sum_{i=1}^{n}|x_i - y_i| d(x,y)=i=1∑n∣xi−yi∣ -
余弦相似度:适用于文本数据,计算两个向量之间的夹角,公式为:
cosine ( x , y ) = x ⋅ y ∥ x ∥ ∥ y ∥ \text{cosine}(x, y) = \frac{x \cdot y}{\|x\| \|y\|} cosine(x,y)=∥x∥∥y∥x⋅y
选择合适的距离度量对聚类结果有重要影响。
3. 聚类合并策略
在自底向上的层次聚类中,合并策略决定了如何计算聚类之间的距离。常见的合并策略包括:
-
单链接(Single Linkage):聚类之间的距离为两个聚类中最近的两个点之间的距离。此策略可能导致“链式效应”,使得聚类结果呈现出长条形状。
-
全链接(Complete Linkage):聚类之间的距离为两个聚类中最远的两个点之间的距离。此策略倾向于形成紧凑的聚类。
-
平均链接(Average Linkage):聚类之间的距离为所有点对的平均距离,综合考虑了聚类内部的所有点。
-
Ward法:通过最小化聚类内的方差来选择合并的聚类,通常能够产生更均匀的聚类结果。
4. 树形图(Dendrogram)
树形图是层次聚类的可视化工具,展示了聚类的合并或分割过程。树形图的横轴表示数据点,纵轴表示距离或相似性。通过观察树形图,用户可以选择合适的聚类数,并直观理解数据的层次结构。
5. 关键优势与局限性
优势
- 直观性:层次聚类通过树形图展示数据的层次关系,便于理解和分析。
- 无需预设聚类数:与其他聚类方法不同,层次聚类不需要事先指定聚类数。
局限性
- 计算复杂度高:在处理大规模数据集时,计算距离矩阵和更新聚类的过程可能非常耗时。
- 对噪声敏感:层次聚类对异常值和噪声数据较为敏感,可能影响聚类结果。
二、实现步骤
层次聚类的实现过程可以分为几个关键步骤。以下是详细的实现步骤,帮助您理解如何将层次聚类应用于实际数据集。
1. 数据准备
在进行层次聚类之前,首先需要准备好数据集。数据集可以是数值型、类别型或混合型数据。数据准备的步骤包括:
- 数据收集:获取所需的数据,确保数据的质量和完整性。
- 数据清洗:处理缺失值、异常值和噪声数据,以提高聚类的准确性。
- 数据标准化:对于不同量纲的数据,通常需要进行标准化处理,以消除量纲的影响。常用的标准化方法包括 Z-score 标准化和 Min-Max 归一化。
2. 计算距离矩阵
距离矩阵是层次聚类的基础,表示数据集中每对数据点之间的距离。计算距离矩阵的步骤如下:
- 选择距离度量:根据数据的特性选择合适的距离度量(如欧几里得距离、曼哈顿距离或余弦相似度)。
- 计算距离:使用所选的距离度量计算每对数据点之间的距离,形成一个对称的距离矩阵。对于 n n n 个数据点,距离矩阵的大小为 n × n n \times n n×n。
3. 初始化聚类
在层次聚类的初始阶段,每个数据点被视为一个独立的聚类。此时,聚类的数量等于数据点的数量。
4. 合并聚类
根据距离矩阵和选择的合并策略,逐步合并聚类。具体步骤如下:
- 查找最近的聚类:在距离矩阵中找到距离最小的两个聚类。
- 合并聚类:将这两个聚类合并为一个新的聚类。
- 更新距离矩阵:根据合并后的新聚类,更新距离矩阵。更新方式取决于所选的合并策略:
- 单链接:新聚类与其他聚类的距离为新聚类中最近的点与其他聚类中点的距离。
- 全链接:新聚类与其他聚类的距离为新聚类中最远的点与其他聚类中点的距离。
- 平均链接:新聚类与其他聚类的距离为新聚类中所有点与其他聚类中所有点的平均距离。
- Ward法:新聚类与其他聚类的距离为合并后聚类内部的方差变化。
5. 重复合并过程
重复步骤4,直到满足停止条件。停止条件可以是:
- 所有数据点合并为一个聚类。
- 达到预设的聚类数。
- 聚类之间的距离超过某个阈值。
6. 生成树形图(Dendrogram)
在完成聚类后,可以生成树形图以可视化聚类过程。树形图展示了聚类的合并顺序和每次合并时的距离。生成树形图的步骤如下:
- 绘制树形图:使用可视化工具(如Matplotlib、Seaborn等)绘制树形图,横轴表示数据点,纵轴表示合并时的距离。
- 选择聚类数:通过观察树形图,选择合适的聚类数。通常可以通过寻找树形图中的“切割点”来确定聚类数。
7. 结果分析与解释
最后,对聚类结果进行分析和解释。可以通过以下方式进行:
- 聚类特征分析:分析每个聚类的特征,了解不同聚类之间的差异。
- 可视化聚类结果:使用散点图、热图等可视化工具展示聚类结果,帮助理解数据的分布。
- 评估聚类效果:使用轮廓系数(Silhouette Coefficient)、Davies-Bouldin指数等指标评估聚类效果。
8. 应用与扩展
层次聚类的结果可以用于后续的分析和决策。根据聚类结果,可以进行市场细分、客户分析、异常检测等应用。同时,层次聚类也可以与其他机器学习方法结合,提升数据分析的深度和广度。
三、应用场景
层次聚类(Hierarchical Clustering)因其直观性和灵活性,广泛应用于多个领域。
1. 生物信息学
在生物信息学中,层次聚类常用于基因表达数据分析,以识别相似的基因或样本。通过聚类分析,研究人员可以发现基因之间的相互关系,进而理解生物过程。
项目代码示例
以下是使用Python和scikit-learn
库进行基因表达数据层次聚类的示例代码:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage# 生成示例基因表达数据
data = np.random.rand(10, 5) # 10个样本,5个基因
genes = [f'Gene{i}' for i in range(1, 6)]
samples = [f'Sample{i}' for i in range(1, 11)]
df = pd.DataFrame(data, index=samples, columns=genes)# 计算层次聚类
linked = linkage(df, method='ward')# 绘制树形图
plt.figure(figsize=(10, 7))
dendrogram(linked, labels=df.index, orientation='top', distance_sort='descending', show_leaf_counts=True)
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('Samples')
plt.ylabel('Distance')
plt.show()
2. 市场细分
在市场研究中,层次聚类可以帮助识别不同的客户群体。通过分析客户的购买行为和偏好,企业可以制定更有针对性的营销策略。
项目代码示例
以下是使用Python进行客户数据层次聚类的示例代码:
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import AgglomerativeClustering# 生成示例客户数据
customer_data = np.random.rand(20, 3) # 20个客户,3个特征(如年龄、收入、消费频率)
customer_df = pd.DataFrame(customer_data, columns=['Age', 'Income', 'SpendingScore'])# 数据标准化
scaler = StandardScaler()
scaled_data = scaler.fit_transform(customer_df)# 进行层次聚类
hierarchical_clustering = AgglomerativeClustering(n_clusters=4, affinity='euclidean', linkage='ward')
customer_df['Cluster'] = hierarchical_clustering.fit_predict(scaled_data)# 可视化聚类结果
plt.figure(figsize=(10, 7))
sns.scatterplot(data=customer_df, x='Income', y='SpendingScore', hue='Cluster', palette='viridis')
plt.title('Customer Segmentation using Hierarchical Clustering')
plt.xlabel('Income')
plt.ylabel('Spending Score')
plt.legend(title='Cluster')
plt.show()
3. 图像处理
层次聚类在图像处理领域中被广泛应用,尤其是在图像分割中。通过将相似的像素聚集在一起,层次聚类可以有效地将图像分割成不同的区域。
项目代码示例
以下是使用Python进行图像分割的层次聚类示例代码:
from sklearn.cluster import AgglomerativeClustering
from skimage import io
from skimage.color import rgb2lab
from skimage.util import img_as_float# 读取图像
image = img_as_float(io.imread('example_image.jpg')) # 替换为您的图像路径
image_reshaped = image.reshape(-1, 3) # 将图像数据重塑为二维数组# 转换为Lab颜色空间
image_lab = rgb2lab(image_reshaped)# 进行层次聚类
hierarchical_clustering = AgglomerativeClustering(n_clusters=5, affinity='euclidean', linkage='ward')
labels = hierarchical_clustering.fit_predict(image_lab)# 将聚类结果重塑为图像
segmented_image = labels.reshape(image.shape[0], image.shape[1])# 可视化分割结果
plt.figure(figsize=(10, 7))
plt.imshow(segmented_image, cmap='nipy_spectral')
plt.title('Image Segmentation using Hierarchical Clustering')
plt.axis('off')
plt.show()
4. 社交网络分析
在社交网络分析中,层次聚类可以用于识别社交网络中的社区结构。通过分析用户之间的关系,研究人员可以了解社交网络的动态和结构。
项目代码示例
以下是使用Python进行社交网络社区检测的层次聚类示例代码:
import networkx as nx
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt# 创建示例社交网络
G = nx.erdos_renyi_graph(30, 0.05) # 30个节点,边的概率为0.05
adjacency_matrix = nx.to_numpy_array(G)# 进行层次聚类
hierarchical_clustering = AgglomerativeClustering(n_clusters=3, affinity='euclidean', linkage='ward')
labels = hierarchical_clustering.fit_predict(adjacency_matrix)# 可视化社交网络
plt.figure(figsize=(10, 7))
pos = nx.spring_layout(G)
nx.draw(G, pos, node_color=labels, with_labels=True, cmap='viridis')
plt.title('Community Detection in Social Network using Hierarchical Clustering')
plt.show()
总结
层次聚类作为一种重要的聚类分析方法,以其直观性和灵活性在多个领域得到了广泛应用。通过构建树状结构,层次聚类不仅能够揭示数据之间的层次关系,还能帮助研究者和从业者深入理解数据的内在模式。本文详细探讨了层次聚类的基本原理、实现步骤以及具体的应用场景,并结合项目代码示例展示了其在生物信息学、市场细分、图像处理和社交网络分析等领域的实际应用。
掌握层次聚类的理论基础和实践技巧,将为数据分析提供强有力的工具,帮助我们在复杂的数据环境中提取有价值的信息。随着数据科学的不断发展,层次聚类的应用前景将更加广阔,期待更多的研究者和从业者能够利用这一方法,推动各自领域的创新与发展。
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。
相关文章:
层次聚类(Hierarchical Clustering)详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
Cannal实现MySQL主从同步环境搭建
大家好,我是袁庭新。 在多数情况下,客户端往往会优先获取缓存中的数据。然而,当缓存数据与数据库中的实际数据存在显著不一致时,可能会导致严重的后果。因此,确保数据库与缓存数据之间的一致性变得至关重要,…...
Js-函数-03
函数定义 在java中我们为了提高代码的复用性,可以使用方法。同样,在JavaScript中可以使用函数来完成相同的事情。JavaScript中的函数被设计为执行特定任务的代码块,通过关键字function来定义。 <!DOCTYPE html> <html lang"en…...
9.机器学习--SVM支持向量机
支持向量机(Support Vector Machine,SVM)是一种二分类监督学习模型。支持向量机最早在 1964 年被提出,1995年前后理论成熟并开始被大量应用与人像识别、文本分类等问题中。它的基本模型是定义在特征空间上的间隔最大的线性分类器&…...
探索Python的HTTP之旅:揭秘Requests库的神秘面纱
文章目录 **探索Python的HTTP之旅:揭秘Requests库的神秘面纱**第一部分:背景介绍第二部分:Requests库是什么?第三部分:如何安装Requests库?第四部分:Requests库的五个简单函数使用方法第五部分&…...
vue3项目使用动态表单formcreate
使用两个插件: 支持可视化设计的低代码表单组件 | FormCreate 好用的低代码可视化表单设计器 | FcDesigner 一、安装 1.使用 Node.js 引入 npm install form-create/element-ui npm install form-create/designer^3 npm install element-plus 2. main.js引入…...
指针的奥秘:深入探索内存的秘密
前言 在计算机编程的广阔天地中,指针作为一种独特的数据类型,它不仅是C语言的核心,也是理解计算机内存管理的基石。指针的概念虽然强大,但对于初学者来说,它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱&a…...
车载摄像camera基础知识和评估
一、车载摄像头应用 以下是根据图片内容重新制作的表格: | 序号 | 产品用途 |------|---------------- | 1 | AVM/环视360摄像头 | 2 | DMS摄像头 | 3 | IMS/OMS摄像头 | 4 | RVC摄像头 | 5 | 红外夜视摄像头 | 6 | 底盘透明摄像头 | 7 …...
OpenCV 图像轮廓查找与绘制全攻略:从函数使用到实战应用详解
摘要:本文详细介绍了 OpenCV 中用于查找图像轮廓的 cv2.findContours() 函数以及绘制轮廓的 cv2.drawContours() 函数的使用方法。涵盖 cv2.findContours() 各参数(如 mode 不同取值对应不同轮廓检索模式)及返回值的详细解析,搭配…...
微信小程序WXSS全局样式与局部样式的使用教程
微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…...
Leetcode142. 环形链表 II(HOT100)
链接 我的错误代码: class Solution { public:ListNode *detectCycle(ListNode *head) {if(!head||!head->next)return nullptr;ListNode* f head->next,*s head;while(f){f f->next,s s->next;if(!f)return nullptr;f f->next;if(fs){ListNo…...
Java程序基础⑤Java数组的定义和使用+引用的概念
目录 1. Java数组的基本概念 1.1 数组的定义 1.2 数组存在的意义 1.3 数组的使用 1.4 二维数组 2. 引用类型JVM的内存分布 2.1 JVM的内存分布 2.2 基本数据类型和引用型数据类型的区别 2.3 引用注意事项 2.4 传值传递 3. 数组总结和应用场景 3.1 一维数组和二维数组…...
丁真杯理塘大赛题解
前言:部分代码思路可能与题解思路不同,请勿强行带入 真蛰虫 原题链接 1.一道非常基础的数学题。 2.主要就是在考察分解质因数。首先看真蛰虫的质因数是不是包含了容器的所有质因数,如果没有,那么就不能放入容器中。如果全部包…...
FPGA经验谈系列文章——8、复位的设计
前言 剑法往往有着固定的招式套路,而写代码似乎也存在类似的情况。不知从何时起,众多 FPGA 工程师们在编写代码时开启了一种关于 always 语句块的流行写法,那就是: always @(posedge i_clk or negedge i_rstn) 就笔者所经历的诸多项目以及所接触到的不少工程师而言,大家在…...
Android studio与JS交互
文章目录 前言一、html二、使用步骤1.2.AS 总结 前言 最近在使用Android Studio的WebView,有些功能要AS与JS交互。 一、html html文件 <!DOCTYPE html> <html> <!--javascript--> <head><meta charset"utf-8"><title>Carson…...
健身房小程序服务渠道开展
健身不单单是锻炼身体、保持身材,也是一种社交方式,城市里门店不少,每家都有一定流量和老客,但仅靠传统线下拉客/自然流量前往和线上朋友圈、短视频发硬广等方式还不够。 商家需要找到更多潜在目标客户,而消费者也对门…...
大宗商品行业区块链应用
应用场景 区块链技术具有透明性、去中心化、不可篡改等特点,因此可以在大宗商品定价方面得到应用。通过区块链技术,相关交易的各方可以在无需依赖中心化第三方的情况下,实时、准确地获取定价信息。这种技术的应用能够提高效率、降低成本、提…...
软考教材重点内容 信息安全工程师 第 5 章 物理与环境安全技术
5.1.1 物理安全概念 传统上的物理安全也称为实体安全,是指包括环境、设备和记录介质在内的所有支持网络信息系统运行的硬件的总体安全,是网络信息系统安全、可靠、不间断运行的基本保证,并且确保在信息进行加工处理、服务、决策支持的过程中&…...
蓝桥杯每日真题 - 第21天
题目:(空间) 题目描述(12届 C&C B组A题) 解题思路: 转换单位: 内存总大小为 256MB,换算为字节: 25610241024268,435,456字节 计算每个整数占用空间: 每个 32 位整数占用…...
【C++】C++11新特性详解:可变参数模板与emplace系列的应用
C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriori…...
下载并安装Visual Studio 2017过程
一、下载 1、下载链接 下载链接:官方网址 先登录 往下滑找到较早的下载 2、进行搜索下载 或者直接点击🔗网站跳转 3、确认系统信息进行下载 二、安装 下载完成后右键使用管理员身份运行 1、点击同意后安装 2、若报错—设置失败 打开控制面板-&g…...
【消息序列】详解(6):深入探讨缓冲区管理与流量控制机制
目录 一、概述 1.1. 缓冲区管理的重要性 1.2. 实现方式 1.2.1. HCI_Read_Buffer_Size 命令 1.2.2. HCI_Number_Of_Completed_Packets 事件 1.2.3. HCI_Set_Controller_To_Host_Flow_Control 命令 1.2.4. HCI_Host_Buffer_Size 命令 1.2.5. HCI_Host_Number_Of_Complete…...
Java开发经验——Spring Test 常见错误
摘要 本文详细介绍了Java开发中Spring Test的常见错误和解决方案。文章首先概述了Spring中进行单元测试的多种方法,包括使用JUnit和Spring Boot Test进行集成测试,以及Mockito进行单元测试。接着,文章分析了Spring资源文件扫描不到的问题&am…...
麦肯锡报告 | 科技落地的真谛:超越技术本身的价值创造
科技创新正在以惊人的速度改变企业运作和客户体验,但实现其潜力的关键在于正确的策略、流程、文化和人才。麦肯锡强调了一个理念:Never just tech(不仅仅是技术)。这表明,成功的数字化转型不仅依赖于技术,还…...
React 常见问题解答:设置、安装、用户事件和最佳实践
在本文中,我们将回答您在开始使用 React 时可能会问的 9 个常见问题。 1、开始使用 React 需要哪些技能和知识? 在深入研究 React 之前,您应该对以下内容有深入的了解: HTML、CSS 和 JavaScript (ES6)&a…...
Mairadb 最大连接数、当前连接数 查询
目录 查询数据库 最大连接数 查询当前连接总数 环境 Mariadb 10.11.6 跳转mysql数据库: 查询数据库 最大连接数 show variables like max_connections; 注意; 这个版本不能使用 : show variables like ‘%max_connections%’; 会报错 ÿ…...
【R库包安装】R库包安装总结:conda、CRAN等
【R库包安装】R库包安装总结:conda、CRAN等 方法1:基于 R 的 CRAN 仓库安装CRAN库包查询从 CRAN 安装 方法2:使用conda安装库包确保已安装 R 和 Conda 环境使用 Conda 官网浏览是否存在相应库包Conda 安装 R 库 方法3:从 GitHub 安…...
php反序列化1_常见php序列化的CTF考题
声明: 以下多内容来自暗月师傅我是通过他的教程来学习记录的,如有侵权联系删除。 一道反序列化的CTF题分享_ctf反序列化题目_Mr.95的博客-CSDN博客 一些其他大佬的wp参考:php_反序列化_1 | dayu’s blog (killdayu.com) 序列化一个对象将…...
LabVIEW动态显示控件方案
在LabVIEW开发中,涉及到动态显示和控制界面的设计时,经常需要根据用户选择的不同参数来动态显示或隐藏相关控件。例如,某些能可能会根据“Type”控件的不同选择显示不同的参数,如“Target”、“Duration”和“EndType”等。在一个…...
游戏引擎学习第22天
移除 DllMain() 并成功重新编译 以下是对内容的详细复述与总结: 问题和解决方案: 在编译过程中遇到了一些问题,特别是如何告知编译器不要退出程序,而是继续处理。问题的根源在于编译过程中传递给链接器的参数设置不正确。原本尝试…...
GitLab|GitLab报错:PG::ConnectionBad: could not connect to server...
错误信息: PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/opt/gitlab/postgresql/.s.PGSQL.5432"? /opt/gitlab/embedded/service…...
Ray 和 PyTorch
Ray 和 PyTorch 的介绍 Ray 是什么? Ray 是一个用于 分布式计算和机器学习任务 的开源框架,提供了一个高效的、灵活的并行计算平台。它的核心功能是支持分布式计算,帮助开发者以简单的方式扩展 Python 应用程序。 Ray 适用于以下场景&…...
Qt之详解QLockFile 文件锁
文章目录 QLockFile 详解前言什么是 QLockFile?QLockFile 的构造函数和常用成员函数构造函数1. 指定锁文件路径的构造函数 常用成员函数1. lock2. unlock3. isLocked4. setStaleLockTime5. getLockInfo6. removeStaleLock 完整示例代码总结 QLockFile 详解 前言 在…...
从0开始学PHP面向对象内容之常用设计模式(组合,外观,代理)
二、结构型设计模式 4、组合模式(Composite) 组合模式(Composite Pattern)是一种结构型设计模式,它将对象组合成树形结构以表示”部分–整体“的层次结构。通过组合模式,客户端可以以一致的方式处理单个对…...
机械设计学习资料
免费送大家学习资源,已整理好,仅供学习 下载网址: https://www.zzhlszk.com/?qZ02-%E6%9C%BA%E6%A2%B0%E8%AE%BE%E8%AE%A1%E8%A7%84%E8%8C%83SOP.zip...
论文笔记3-XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies
目录 Abtract 相关工作 核心算法: 整体流程概述 具体流程解析 1. 输入(Input) 2. 稀疏结构 VAE(Sparse Structure VAE) 3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)…...
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 https://live.csdn.net/v/435737 <template><div><el-popoverstyle"overflow-y: auto; "placement"bottom"trigger"click"><el-inputstyle"margi…...
诠视科技受邀出席“中国虚拟现实产学研大会”
2024年11月2-3日,由中国虚拟现实技术与产业创新平台举办的第十届“中国虚拟现实产学研大会” 在北京顺利召开,大会围绕“虚拟现实技术与产业创新融合”这一主题进行深入探讨。诠视科技作为虚拟现实产业的创新领军企业,CEO林瓊受邀参加本次活动…...
【达梦数据库】授权查询
目录 授权查询EXPIRED_DATECLUSTER_TYPE 更换原则更换方法 授权查询 select * from v$license;EXPIRED_DATE 过期日期,如果是正式版会显示NULL CLUSTER_TYPE 授权使用的集群类型CLUSTER_TYPE,格式为字符串“XXXX”, 每一位上 0 表示禁止…...
探索 ZED 双目 3D 相机发展:ZED 2i 的创新功能扩展之路
在科技迅速发展的当下,3D 视觉技术在众多领域的发展中有着重要作用。Stereolabs 公司研发的 ZED 相机受到广泛关注。Stereolabs 于 2010 年在美国旧金山成立,一直专注于立体视觉和 3D 深度相机技术的研究。2015 年推出的 ZED 相机为无人机、机器人等设备…...
基于卷积神经网络的白菜病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 白菜病虫害识别与防治系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili (一)简介 基于卷…...
计算机网络 | 7.网络安全
1.网络安全问题概述 (1)计算机网络面临的安全性威胁 <1>计算机网络面临的完全性威胁 计算机网络面临的两大类安全威胁:被动攻击和主动攻击 被动攻击 截获:从网络上窃听他人的通信内容。主动攻击 篡改:故意篡改…...
Opencv+ROS自编相机驱动
目录 一、工具 二、原理 代码 标定 三、总结 参考: 一、工具 opencv2ros ubuntu18.04 usb摄像头 二、原理 这里模仿usb_cam功能包对Opencv_ros进行修饰,加上相机参数和相机状态,难点在于相机参数的读取。 对于相机参数话题 camera…...
js---函数参数是值传递还是引用传递
理解1:都是值(基本/地址值)传递 理解2:可能是值传递,也可能是引用传递(地址值) 在JavaScript中,函数参数的传递方式取决于参数的类型: 值传递(Pass by Val…...
如何解决DDoS导致服务器宕机?
分布式拒绝服务攻击(DDoS攻击)是一种常见的网络安全威胁,通过大量恶意流量使目标服务器无法提供正常服务。DDoS攻击可能导致服务器宕机,严重影响业务的正常运行。本文将详细介绍如何检测和防御DDoS攻击,防止服务器宕机…...
临床检验项目指标学习笔记
声明: 家有病人,记录此学习笔记仅为了更好照顾家人。本文不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我将立即进行删除处理。 血脂四项 [Q&A] 血脂四项 指导意义 测定血清中血脂含量,…...
代码管理之Gitlab
文章目录 Git基础概述场景本地修改未提交,拉取远程代码修改提交本地,远程已有新提交 GitIDEA引入Git拉取仓库代码最后位置 Git基础 概述 workspace 工作区:本地电脑上看到的目录; repository 本地仓库:就是工作区中隐…...
秒杀系统三层架构设计:缓存、消息队列与数据库
秒杀是一种极端高并发场景,短时间内数百万用户涌入,抢购有限库存的商品。为了保证系统稳定性和数据一致性,同时提升用户体验,我们可以设计一个三层架构:缓存层、消息队列层、数据库层。本文将详细设计这一架构并探讨其…...
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
官网链接:What is Tauri? | Tauri 初始准备 rust版本一定要1.77.2以上的版本,查看版本和升级版本: 升级命名: rustup update 不然会报错: error: package tauri-plugin-shell v2.0.2 cannot be built because it r…...
SCI论文部分题目
SC20243213 通过氢和氨集成增强Power-to-X灵活性和可持续成本降低:绿色实验室Skive案例研究 SC20243211 分析同时发电的综合系统中的能量和能量效率、环境影响和经济可行性,淡水、热水和天然气凝液 SC20243208 双燃料生物质-天然气系统中的氢、…...