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

【无监督学习】层次聚类步骤及matlab实现

层次聚类

    • (四)层次聚类
      • 1.算法步骤
      • 2.MATLAB 实现
      • 参考资料

(四)层次聚类

层次聚类是一种通过逐层合并或分裂数据点构建树状结构(树状图,Dendrogram)的聚类方法。它分为两种类型:

  • 凝聚层次聚类(Agglomerative Hierarchical Clustering):这是最常用的层次聚类方法。开始时每个数据点都被视为自己的簇,然后算法重复执行以下步骤直到所有点被合并为一个簇:
    • 找出最近的两个簇。
    • 将它们合并成一个新的簇。
    • 重新计算新簇与其他簇之间的距离。
  • 分裂层次聚类(Divisive Hierarchical Clustering):与凝聚方法相反,这种较少使用的方法从整个数据集作为一个单一的簇开始,然后逐步分裂簇,直到每个数据点成为独立的簇为止。
    • 商业应用场景:客户分群、市场细分、供应链优化等。

分层聚类分析(Hierarchical Clustering Analysis)生成的树状图,也称为树形图(Dendrogram),是展示数据点或簇之间层次关系的一种可视化方式。通过树状图,可以直观地看出哪些数据点或簇之间的相似度更高,以及如何逐步合并形成更大的簇。下面是一些解读树状图的关键点:
分层聚类分析树状图

  1. 树状图的基本结构

    • 垂直轴:通常表示距离或相似性度量。在树状图中,分支的长度代表了合并的数据簇之间的距离。越长的分支意味着簇间距离更大,即这些簇中的数据点彼此间的相似度较低。
    • 水平轴:代表参与聚类的数据点或者最终形成的簇。每个叶子节点对应一个原始数据点,而内部节点则代表由其子节点所构成的簇。
  2. 簇的形成过程

    • 树状图从底部开始,每个数据点最初都是单独的一个簇。随着向上移动,距离较近的簇会逐渐合并成新的簇,这一过程持续进行直到所有数据点都被合并到一个单一的簇中。这个自底向上的过程被称为凝聚层次聚类。
  3. 如何决定簇的数量

    • 切割树状图:通过在垂直方向上设定一个阈值来“切割”树状图,可以确定簇的数量。例如,在树状图上画一条水平线,这条线与多少个垂直线段相交就决定了将数据分成多少个簇。
    • 观察大跳跃:有时可以通过观察垂直轴上的较大跳跃(即较长的分支)来判断合理的切割点,因为较大的跳跃意味着显著不同的簇。

1.算法步骤

开始
数据标准化
计算距离矩阵
合并最近的两个簇
更新距离矩阵
是否剩一个簇?
输出树状图
划分聚类
结束
  1. 数据标准化

    • 目的:消除量纲差异,确保特征权重一致;
    • 方法:Z-score 标准化、最大-最小归一化;
    • 公式(Z-score): x s c a l e d = x − μ σ x_{scaled}=\frac{x−μ}{σ} xscaled=σxμ
  2. 计算距离矩阵

    • 输入:标准化后的数据矩阵 X ∈ R n × m X∈R^{n×m} XRn×m n n n 为样本数, m m m 为特征数;
    • 输出:对称矩阵 D ∈ R n × n D∈R^{n×n} DRn×n,表示样本间距离;
    • 距离度量
      • 欧氏距离(默认): d i j = ∑ k = 1 m ( x i k − x j k ) 2 d_{ij}=\sqrt{\sum_{k=1}^m (x_{ik}-x_{jk})^2} dij=k=1m(xikxjk)2
      • 曼哈顿距离、余弦相似度等。
  3. 合并最近的两个簇

    • 链接方法(Linkage Criterion)
      • 单链接(Single):两簇中最近样本的距离;
      • 全链接(Complete):两簇中最远样本的距离;
      • 平均链接(Average):两簇所有样本对的平均距离;
      • Ward方法:合并后簇的方差增量最小(适合商业数据)。
  4. 更新距离矩阵

    • 将合并后的新簇与其他簇的距离重新计算,更新矩阵 D D D
  5. 终止条件

    • 重复步骤3-4,直到所有样本合并为一个簇。
  6. 生成树状图

    • 树状图(Dendrogram):可视化合并过程,横轴为样本,纵轴为合并距离。
    • 截断阈值:通过树状图高度或业务需求确定最终簇数。

2.MATLAB 实现

层次聚类实现用户价值分层结果①
层次聚类实现用户价值分层结果②
层次聚类实现用户价值分层结果③

%% 用户价值分层,绿色为高价值、红色为中价值、蓝色为低价值
clc;        % 清空命令行窗口
clear;      % 清除工作区变量
close all;  % 关闭所有图形窗口%% ====================== 生成模拟客户数据(200个样本) ======================
rng(42); % 固定随机种子,确保每次运行结果可复现
n_samples = 200; % 总样本数% 特征1:年消费金额(万元)—— 高价值客户消费更高
% 前100个样本为高价值客户,消费金额服从 N(3, 0.5) 分布
% 后100个样本为低价值客户,消费金额服从 N(1, 0.3) 分布
monetary = [abs(randn(n_samples/2,1)*0.5 + 3);   % 高价值组abs(randn(n_samples/2,1)*0.3 + 1)];  % 低价值组% 特征2:购买频率(次/年)—— 高价值客户更活跃
% 高价值组频率服从 N(10, 2),低价值组服从 N(5, 3)
frequency = [abs(randn(n_samples/2,1)*2 + 10); abs(randn(n_samples/2,1)*3 + 5)];% 特征3:最近消费时间(天)—— 高价值客户更近期消费
% 高价值组最近消费时间服从 N(30, 30),低价值组服从 N(90, 60)
recency = [abs(randn(n_samples/2,1)*30 + 30); abs(randn(n_samples/2,1)*60 + 90)];% 合并特征矩阵:每行代表一个客户,三列分别为消费金额、频率、最近时间
X = [monetary, frequency, recency]; % 真实标签(仅用于验证,实际聚类无监督,不需要标签)
labels = [ones(n_samples/2,1);   % 前100个样本标签为1(高价值)2*ones(n_samples/2,1)]; % 后100个样本标签为2(低价值)%% ====================== 数据标准化(Z-score) ======================
% 目的:消除量纲差异,使各特征均值为0,标准差为1
X_scaled = zscore(X); % zscore函数自动计算每列的均值和标准差%% ====================== 层次聚类(使用Ward方法) ======================
% 步骤1:计算样本间距离矩阵
% pdist计算欧氏距离,返回压缩格式的距离向量(上三角部分)
D = pdist(X_scaled, 'euclidean'); % 步骤2:构建层次聚类树(链接矩阵Z)
% linkage函数使用Ward方法(最小化簇内方差)进行层次聚类
% Z矩阵格式:每行代表一次合并,列依次为合并簇1、簇2、距离、新簇包含的样本数
Z = linkage(D, 'ward'); %% ====================== 手动划分聚类(3个簇) ======================
n = size(X_scaled, 1); % 样本数量(200)
k = 3; % 目标簇数
num_merges = n - k; % 需要合并的次数(200-3=197次)max_clusters = 2 * n - 1; % 最大可能簇数(初始n个簇 + 每次合并新增1个簇)
cluster_members = cell(1, max_clusters); % 存储每个簇的成员索引% 初始化:每个样本为一个独立簇
for i = 1:ncluster_members{i} = i; % 第i个簇仅包含样本i
end% 逐次合并簇(共197次)
for i = 1:num_mergesc1 = Z(i, 1); % 当前合并的第一个簇索引(来自Z矩阵第i行)c2 = Z(i, 2); % 当前合并的第二个簇索引new_cluster_idx = n + i; % 新簇的索引(从n+1开始递增)% 合并簇成员:将c1和c2的成员合并到新簇cluster_members{new_cluster_idx} = [cluster_members{c1}, cluster_members{c2}];% 清空原簇(避免重复使用)cluster_members{c1} = [];cluster_members{c2} = [];
end% 收集最终的k个簇(非空簇)
final_clusters = {}; % 存储最终簇的成员列表
for j = 1:length(cluster_members)if ~isempty(cluster_members{j})final_clusters{end+1} = cluster_members{j}; % 添加非空簇end
end% 为每个样本分配簇标签(1到k)
clusters = zeros(n, 1); % 初始化标签向量
for cluster_idx = 1:length(final_clusters)members = final_clusters{cluster_idx}; % 当前簇的成员索引clusters(members) = cluster_idx; % 分配簇标签
end%% ====================== 可视化与业务分析 ======================
% 绘制树状图(Dendrogram)
figure;
dendrogram(Z); % 显示层次聚类过程
title('客户分群树状图');
xlabel('样本索引');
ylabel('合并距离');% 绘制3D散点图展示聚类结果
figure;
scatter3(X_scaled(:,1), X_scaled(:,2), X_scaled(:,3), 50, clusters, 'filled');
xlabel('标准化消费金额');
ylabel('标准化购买频率');
zlabel('标准化最近消费时间');
title('客户价值分层结果');
colormap(jet); % 使用jet颜色映射区分簇% 统计各簇特征均值和标准差
% grpstats按簇分组计算统计量
cluster_stats = grpstats(X, clusters, {'mean', 'std'});
disp('各簇统计特征:');
disp(['     [Mean_Monetary] ','[Mean_Frequency] ','[Mean_Recency]']);
disp(['高价值组:',num2str(cluster_stats(2,:))]);
disp(['中价值组:',num2str(cluster_stats(3,:))]);
disp(['低价值组:',num2str(cluster_stats(1,:))]);% 输出业务策略
fprintf('=== 业务策略 ===\n');
fprintf('簇1(高价值): 消费金额高、频率高、近期活跃 → 提供VIP服务与专属折扣\n');
fprintf('簇2(中价值): 消费中等 → 推送促销活动提升复购\n');
fprintf('簇3(低价值): 消费低且久未活跃 → 发送唤醒优惠券\n');

参考资料

[1] 层次聚类的基本原理_哔哩哔哩_bilibili
[2] 层次聚类的树状图如何看?序列分析和回归分析如何结合?哔哩哔哩_bilibili

相关文章:

【无监督学习】层次聚类步骤及matlab实现

层次聚类 (四)层次聚类1.算法步骤2.MATLAB 实现参考资料 (四)层次聚类 层次聚类是一种通过逐层合并或分裂数据点构建树状结构(树状图,Dendrogram)的聚类方法。它分为两种类型: 凝聚…...

uploadlabs通关思路

目录 靶场准备 复现 pass-01 代码审计 执行逻辑 文件上传 方法一:直接修改或删除js脚本 方法二:修改文件后缀 pass-02 代码审计 文件上传 1. 思路 2. 实操 pass-03 代码审计 过程: 文件上传 pass-04 代码审计 文件上传 p…...

doris:Elasticsearch

Elasticsearch Catalog 除了支持自动映射 ES 元数据外,也可以利用 Doris 的分布式查询规划能力和 ES(Elasticsearch) 的全文检索能力相结合,提供更完善的 OLAP 分析场景解决方案: ES 中的多 index 分布式 Join 查询。 Doris 和 ES 中的表联合…...

JetBrains学生申请

目录 JetBrains学生免费授权申请 IDEA安装与使用 第一个JAVA代码 1.利用txt文件和cmd命令运行 2.使用IDEA新建项目 JetBrains学生免费授权申请 本教程采用学生校园邮箱申请,所以要先去自己的学校申请校园邮箱。 进入JetBrains官网 点击立即申请,然…...

PDFMathTranslate安装使用

PDF全文翻译!!!! PDFMathTranslate安装使用 它是个啥 PDFMathTranslate 可能是一个用于 PDF 文件的数学公式翻译 工具。它可能包含以下功能: 提取 PDF 内的数学公式 将数学公式转换成 LaTeX 代码 翻译数学公式的内…...

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)

清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf  北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf  清华 Deep…...

2025-03-09 学习记录--C/C++-PTA 练习11-4 字符定位(最后一次找到的字符)

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> char *match(char *s, char ch); int main(void …...

C语言数据结构之顺序表

目录 1.线性表 2.顺序表 2.1.静态顺序表 2.2.动态顺序表 2.2.1.初始化 2.2.2.清空顺序表 2.2.3.扩容&#xff0b;尾插 2.2.4.尾出函数 2.2.5.头插函数 2.2.6.头出函数 2.2.7.在中间位置插入 2.2.8.删除中间位置数据 2.2.9.查找函数 2.2.10.总结 3.OJ例题 3.1.合…...

【Git】合并冲突

合并冲突 可是&#xff0c;在实际分支合并的时候&#xff0c;并不是想合并就能合并成功的&#xff0c;有时候可能会遇到代码冲突的问题。 为了演示这问题&#xff0c;创建一个新的分支 dev1 &#xff0c;并切换至目标分支&#xff0c;我们可以使用 git checkout -b dev1 一步…...

【每日学点HarmonyOS Next知识】Web跨域资源、Web长按菜单、Web拦截请求、禁止录屏、Base64图片宽高

1、HarmonyOS Web组件本地资源跨域问题&#xff1f; 关于资源跨域问题的解决&#xff0c;可以参考以下官网文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/web-cross-origin-V5 方法一 为了使Web组件能够成功访问跨域资源&#xff0c;开…...

高效数据分析实战指南:Python零基础入门

高效数据分析实战指南 —— 以Python为基石&#xff0c;构建您的数据分析核心竞争力 大家好&#xff0c;我是kakaZhui&#xff0c;从事数据、人工智能算法多年&#xff0c;精通Python数据分析、挖掘以及各种深度学习算法。一直以来&#xff0c;我都发现身边有很多在传统行业从…...

【语料数据爬虫】Python爬虫|批量采集征集意见稿数据(1)

前言 本文是该专栏的第5篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“征集意见稿”数据。同时,本文也是采集“征集意见稿”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑…...

电力场景绝缘子缺陷分割数据集labelme格式1585张4类别

数据集格式&#xff1a;labelme格式(不包含mask文件&#xff0c;仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数)&#xff1a;1585 标注数量(json文件个数)&#xff1a;1585 标注类别数&#xff1a;4 标注类别名称:["broken part","broken insulat…...

《C++ 构造、拷贝构造与析构函数:对象的诞生、克隆与消逝之旅》

类的6个默认成员函数 构造函数 是对一个对象实例化时的初始化 例如在C语言中写的堆的时候要初始化StackInit&#xff0c;而c祖师爷写的构造函数本质上就是自动调用初始化。 构造函数默认构造函数自己写的&#xff08;符合规定的显示表达式&#xff09; 注&#xff1a;一般情况下…...

uniapp uniCloud引发的血案(switchTab: Missing required args: “url“)!!!!!!!!!!

此文章懒得排版了&#xff0c;为了找出这个bug, 星期六的晚上我从9点查到0点多&#xff0c;此时我心中一万个草泥马在崩腾&#xff0c;超级想骂人&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; uniCloud 不想…...

【论文阅读】VAD: Vectorized Scene Representation for Efficient Autonomous Driving

一、介绍 VAD是华科团队设计的一个端到端无人驾驶框架&#xff0c;针对传统的无人驾驶框架的模块化设计的问题&#xff0c;该算法使用向量化的策略进行了端到端的实现。传统的模块化设计使得感知模块完全依赖于感知模块的计算结果&#xff0c;这一解耦实际上从规划模块的角度损…...

uniapp版本加密货币行情应用

uniapp版本加密货币行情应用 项目概述 这是一个使用uniapp开发的鸿蒙原生应用&#xff0c;提供加密货币的实时行情查询功能。本应用旨在为用户提供便捷、实时的加密货币市场信息&#xff0c;帮助用户随时了解市场动态&#xff0c;做出明智的投资决策。 应用采用轻量级设计&a…...

使用 Java 执行 SQL 语句和存储过程

使用 Java 执行 SQL 语句和存储过程&#xff0c;通常有两种主要的方式&#xff1a;使用 JDBC&#xff08;Java Database Connectivity&#xff09;或者通过框架如 Spring Data JPA、MyBatis 等。 1. 使用 JDBC 执行 SQL 语句 JDBC 是 Java 操作数据库的标准 API。以下是通过 …...

算法系列之深度优先搜索寻找妖怪和尚过河问题的所有方式

在算法学习中&#xff0c;深度优先搜索&#xff08;DFS&#xff09;是一种常用的图搜索算法&#xff0c;通过递归或栈实现&#xff0c;适合路径搜索、连通性、拓扑排序、回溯、生成、环路检测、强连通分量和可达性等问题。本文将介绍如何利用深度优先搜索解决“妖怪和尚过河问题…...

大白话JavaScript闭包实现原理与在实际开发中的应用场景

大白话JavaScript闭包实现原理与在实际开发中的应用场景 答题思路 解释闭包的概念&#xff1a;先简单直白地说明闭包是什么&#xff0c;让读者对闭包有一个初步的认识。阐述闭包的实现原理&#xff1a;详细讲解闭包是如何形成的&#xff0c;涉及到函数作用域、变量的生命周期…...

【redis】数据类型之geo

Redis的GEO数据类型用于存储地理位置信息&#xff08;如经纬度&#xff09;&#xff0c;并提供高效的地理位置查询功能&#xff08;如计算两地距离、搜索附近地点等&#xff09;。其底层基于Sorted Set&#xff08;有序集合&#xff09;实现&#xff0c;通过Geohash编码将经纬度…...

C++后端服务器开发技术栈有哪些?有哪些资源或开源库拿来用?

一、 C后台服务器开发是一个涉及多方面技术选择的复杂领域&#xff0c;特别是在高性能、高并发的场景下。以下是C后台服务器开发的一种常见技术路线&#xff0c;涵盖了从基础到高级的技术栈。 1. 基础技术栈 C标准库 C11/C14/C17/C20&#xff1a;使用现代C特性&#xff0c;如…...

第五次CCF-CSP认证(含C++源码)

第五次CCF-CSP认证 第一道&#xff08;easy&#xff09;思路及AC代码 第二道&#xff08;easy&#xff09;思路及AC代码solution 1solution 2 第三道&#xff08;mid&#xff09;思路及AC代码&#xff08;mid&#xff09; 第一道&#xff08;easy&#xff09; 题目链接 思路及…...

tcp udp区别

TCP&#xff08;传输控制协议&#xff09; 和 UDP&#xff08;用户数据报协议&#xff09; 是两种常用的传输层协议&#xff0c;它们在数据传输方式、可靠性和应用场景等方面有显著区别。以下是它们的主要区别&#xff1a; 1. 连接方式 TCP&#xff1a;面向连接的协议。通信前需…...

驱动 AI 边缘计算新时代!高性能 i.MX 95 应用平台引领未来

智慧浪潮崛起&#xff1a;AI与边缘计算的时代 正悄然深植于我们的日常生活之中&#xff0c;无论是火热的 ChatGPT 与 DeepSeek 语言模型&#xff0c;亦或是 Meta 智能眼镜&#xff0c;AI 技术已经无形地影响着我们的生活。这股变革浪潮并未停歇&#xff0c;而是进一步催生了更高…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

&#x1f48c; 所属专栏&#xff1a;【单片机开发软件技巧】 &#x1f600; 作  者&#xff1a; 于晓超 &#x1f680; 个人简介&#xff1a;嵌入式工程师&#xff0c;专注嵌入式领域基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大家&#xff1…...

Linux 进程管理工具 Supervisor

介绍 Supervisor 是一个用 Python 编写的进程管理工具&#xff0c;旨在帮助你监控和控制多个进程。它特别适用于需要确保某些服务在服务器启动时自动运行&#xff0c;并且在崩溃时自动重启的场景。 写在前面&#xff1a; 因为现在很多第三方的包的最新版本都是基于 python3了…...

问题解决:AttributeError: ‘NoneType‘ object has no attribute ‘text‘

项目环境&#xff1a; 我的环境&#xff1a;Window10&#xff0c;Python3.12&#xff0c;Anaconda3&#xff0c;Pycharm2024.3.4 问题描述&#xff1a; 找不到’text’这个对象 部分代码&#xff1a; Traceback (most recent call last):File "D:\IT DateFiles\PyDate\FQ…...

Hadoop、Hive、Spark的关系

Part1&#xff1a;Hadoop、Hive、Spark关系概览 1、MapReduce on Hadoop 和spark都是数据计算框架&#xff0c;一般认为spark的速度比MR快2-3倍。 2、mapreduce是数据计算的过程&#xff0c;map将一个任务分成多个小任务&#xff0c;reduce的部分将结果汇总之后返回。 3、HIv…...

OneM2M:全球性的物联网标准-可应用于物联网中

OneM2M 是一个全球性的物联网(IoT)标准,旨在为物联网设备和服务提供统一的框架和接口,以实现设备之间的互操作性、数据共享和服务集成。OneM2M 由多个国际标准化组织(如 ETSI、TIA、TTC、ARIB 等)共同制定,目标是解决物联网领域的碎片化问题,提供一个通用的标准,支持跨…...

C++类和对象入门(三)

目录 前言 一、初始化列表 1.1定义 1.2 格式和语法 1.3与在函数内初始化的区别 1.4使用初始化列表的必要性 1.5成员变量默认值的使用&#xff08;C11&#xff09; 1.6初始化的先后顺序 1.7初始化列表的总结 二、类型转换 2.1内置类型转化成类类型 2.2类类型之间的相…...

Ubuntu 下 Docker 企业级运维指南:核心命令与最佳实践深度解析20250309

Ubuntu 下 Docker 企业级运维指南&#xff1a;核心命令与最佳实践深度解析 在当今的数字化时代&#xff0c;Docker 已成为企业应用部署和运维的基石。其轻量级、高效且灵活的容器化技术&#xff0c;为企业带来了前所未有的敏捷性和可扩展性。然而&#xff0c;随着容器化应用的…...

Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU

Tensorflow 2.0 GPU的使用与限制使用率及虚拟多GPU 1. 获得当前主机上特定运算设备的列表2. 设置当前程序可见的设备范围3. 显存的使用4. 单GPU模拟多GPU环境 先插入一行简单代码&#xff0c;以下复制即可用来设置GPU使用率&#xff1a; import tensorflow as tf import numpy…...

【PyCharm】Python和PyCharm的相互关系和使用联动介绍

李升伟 整理 Python 是一种广泛使用的编程语言&#xff0c;而 PyCharm 是 JetBrains 开发的专门用于 Python 开发的集成开发环境&#xff08;IDE&#xff09;。以下是它们的相互关系和使用联动的介绍&#xff1a; 1. Python 和 PyCharm 的关系 Python&#xff1a;一种解释型、…...

动态规划:多重背包

本题力扣上没有原题&#xff0c;大家可以去卡码网第56题 (opens new window)去练习&#xff0c;题意是一样的。 56. 携带矿石资源&#xff08;第八期模拟笔试&#xff09; 题目描述 你是一名宇航员&#xff0c;即将前往一个遥远的行星。在这个行星上&#xff0c;有许多不同类…...

AI编程: 一个案例对比CPU和GPU在深度学习方面的性能差异

背景 字节跳动正式发布中国首个AI原生集成开发环境工具&#xff08;AI IDE&#xff09;——AI编程工具Trae国内版。 该工具模型搭载doubao-1.5-pro&#xff0c;支持切换满血版DeepSeek R1&V3&#xff0c; 可以帮助各阶段开发者与AI流畅协作&#xff0c;更快、更高质量地完…...

TensorFlow 的基本概念和使用场景

TensorFlow 是一个由 Google 开发的开源深度学习框架&#xff0c;用于构建和训练机器学习模型。它的基本概念包括以下几点&#xff1a; 张量&#xff08;Tensor&#xff09;&#xff1a;在 TensorFlow 中&#xff0c;数据以张量的形式表示&#xff0c;张量可以是多维数组&#…...

gRPC学习笔记

微服务 一旦某个服务器宕机&#xff0c;会引起整个应用不可用&#xff0c;隔离性差 只能整体应用进行伸缩&#xff0c;浪费资源&#xff0c;可伸缩性差 代码耦合在一起&#xff0c;可维护性差 微服务架构&#xff1a;解决了单体架构的弊端 可以按照服务进行单独扩容 各个…...

Linux常见指令

Linux常见指令 1、ls指令2、pwd命令3、cd指令4、touch指令5、mkdir指令6、rmdir指令和rm指令7、man指令8、cp指令9、mv指令10、cat指令11、重定向12、more指令13、less指令14、head指令15、tail指令16、管道17、时间相关指令18、cal指令19、find指令20、grep指令21、zip/unzip指…...

Vue3、vue学习笔记

<!-- Vue3 --> 1、Vue项目搭建 npm init vuelatest cd 文件目录 npm i npm run dev // npm run _ 这个在package.json中查看scripts /* vue_study\.vscode可删 // vue_study\src\components也可删除(基本语法&#xff0c;不使用组件) */ // vue_study\.vscode\lau…...

用OpenCV写个视频播放器可还行?(C++版)

引言 提到OpenCV&#xff0c;大家首先想到的可能是图像处理、目标检测&#xff0c;但你是否想过——用OpenCV实现一个带进度条、倍速播放、暂停功能的视频播放器&#xff1f;本文将通过一个实战项目&#xff0c;带你深入掌握OpenCV的视频处理能力&#xff0c;并解锁以下功能&a…...

clion+arm-cm3+MSYS-mingw +jlink配置用于嵌入式开发

0.前言 正文可以跳过这段 初识clion&#xff0c;应该是2015年首次发布的时候&#xff0c; 那会还是大三&#xff0c;被一则推介广告吸引到&#xff0c;当时还在用vs studio&#xff0c;但是就喜欢鼓捣新工具&#xff0c;然后下载安装试用了clion&#xff0c;但是当时对cmake规…...

物联网-IoTivity:开源的物联网框架

IoTivity 是一个开源的物联网(IoT)框架,旨在为物联网设备提供互操作性、安全性和可扩展性。它由 Open Connectivity Foundation (OCF) 主导开发,遵循 OCF 的标准,致力于实现设备之间的无缝连接和通信。IoTivity 提供了一个统一的框架,支持设备发现、数据交换、设备管理和…...

Acrobat DC v25.001 最新专业版已破,像word一样编辑PDF!

在数字化时代&#xff0c;PDF文件以其稳定性和通用性成为了文档交流和存储的热门选择。无论是阅读、编辑、转换还是转曲&#xff0c;大家对PDF文件的操作需求日益增加。因此&#xff0c;一款出色的PDF处理软件不仅要满足多样化的需求&#xff0c;还要通过简洁的界面和强大的功能…...

【c++】模板进阶

在前面我们学习了模板的基础用法【c】 模板初阶-CSDN博客初步认识了函数模板和类模板&#xff0c;接下来让我们看看模板还有哪些进阶的应用。 非类型模板参数 之前我们用到的模板全都使用了类型参数 类型参数&#xff1a;表示某种数据类型&#xff08;如 int、double、自定义…...

IntelliJ IDEA 2021版创建springboot项目的五种方式

第一种方式&#xff0c;通过https://start.spring.io作为spring Initializr的url来创建项目。 第二种方式&#xff0c;通过https://start.spring.io官网来直接创建springboot项目压缩包&#xff0c;然后导入至我们的idea中。 点击generate后&#xff0c;即可生成压缩包&#xf…...

数字信号处理之信号功率谱计算welch方法(分段加窗平均周期图)、Bartlett方法(周期图)(Python)

welch方法原理说明 welch方法[1]通过将数据划分为重叠的段&#xff0c;计算每个段的进行修改(加窗)后的周期图&#xff0c;然后对所有段的周期图求和进行平均&#xff0c;得到最终的功率谱密度。 Python和Matlab中均存在welch函数。welch函数通过配置noverlap为0&#xff0c;可…...

【面试】Java 基础

基础 1、Java 中几种基本数据类型什么&#xff0c;各自占用多少字节2、基本数据同包装类的区别3、Java 基本类型的参数传递和引用类型的参数传递有啥区别4、隐式类型转换和显式类型转换5、switch 语句表达式结果的类型6、数组的扩容方式7、面向对象三大特征8、静态变量和成员变…...

【工具使用】IDEA 社区版如何创建 Spring Boot 项目(详细教程)

IDEA 社区版如何创建 Spring Boot 项目&#xff08;详细教程&#xff09; Spring Boot 以其简洁、高效的特性&#xff0c;成为 Java 开发的主流框架之一。虽然 IntelliJ IDEA 专业版提供了Spring Boot 项目向导&#xff0c;但 社区版&#xff08;Community Edition&#xff09…...

CTFHub-FastCGI协议/Redis协议

将木马进行base64编码 <?php eval($_GET[cmd]);?> 打开kali虚拟机&#xff0c;使用虚拟机中Gopherus-master工具 Gopherus-master工具安装 git clone https://github.com/tarunkant/Gopherus.git 进入工具目录 cd Gopherus 使用工具 python2 "位置" --expl…...