聚类分析|距离与相似系数|层次聚类|K均值聚类|SPSS及Matlab

news2024/10/1 21:30:50

聚类分析问题描述

聚类分析问题描述

人类认识世界的方法之一就是将事物按照各种属性或特征分成若干类别。
物以类聚、人以群分。分类方法多种多样,简单直接的如高、矮、胖瘦。使用的信息量小,但对类别界限附近的案例,分类结果不一定合适。
为了满足更高的分类要求,对研究对象需用更多的特征变量来刻画。如要想把中国的县分类,就有多种方法,可以按照自然条件来分,比如考虑降水、土地、日照、湿度等,也可考虑收入、教育水准、医疗条件、基础设施等指标;既可以用某一项来分类,也可以同时考虑多项指标来分类。

引例:20种啤酒的热量、钠含量、酒精及价格四种变量。如何找到数据中隐藏的模式特征?
![[Pasted image 20240822160347.png]]
整理好的数据具有如下结构:
![[Pasted image 20240822160424.png]]

x i x_{i} xi是特征变量,可能是分类变量(如民族、性别),也可能是数值变量(如
身高体重),单位量纲也不相同。每个对象用一个p维特征向量来刻画。
任意两各随机变量
X = ( x 1 , x 2 , … , x n ) T ,   Y = ( y 1 , y 2 , … , y n ) T X=(x_{1},x_{2},\dots,x_{n})^{T},\ Y=(y_{1},y_{2},\dots ,y_{n})^{T} X=(x1,x2,,xn)T, Y=(y1,y2,,yn)T
的协方差
c o v ( X , Y ) = 1 n ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) cov(X, Y)=\frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y}) cov(X,Y)=n1i=1n(xixˉ)(yiyˉ)
P维特征向量 ( X 1 , X 2 , … , X p ) (X_{1},X_{2},\dots,X_{p}) (X1,X2,,Xp)的协方差矩阵
∑ = ( v ( x 1 ) c ( X 1 , X 2 ) … c ( X 1 , X p ) c ( X 1 , X 2 ) v ( X 2 ) … c ( X 2 , X p ) … … … … c ( X , X p c ( X 2 , X p ) … v ( X p ) ) \sum=\begin{pmatrix} v(x_{1})&&c(X_{1},X_{2})&&\dots&&c(X_{1},X_{p}) \\ c(X_{1},X_{2})&&v(X_{2})&&\dots&&c(X_{2},X_{p}) \\ \dots&&\dots&&\dots&&\dots \\ c(X,X_{p}&&c(X_{2},X_{p})&&\dots&&v(X_{p}) \end{pmatrix} = v(x1)c(X1,X2)c(X,Xpc(X1,X2)v(X2)c(X2,Xp)c(X1,Xp)c(X2,Xp)v(Xp)
聚类分析(clusteranalysis)就是基于数据自身信息来对数据进行分类的方法(也称为无监督学习)。
在聚类分析之前,研究者不知道观察对象可以分成多少个类,类的特点也无所得知。在分类的过程中,聚类分析能够从样本数据出发,自动进行分类。
不同研究者对于同一组数据进行聚类分析,所得到的聚类结果未必一致,因此聚类分析是一种探索性的分析方法。

聚类分析的数学描述

假设
X i = ( x i 1 , x i 2 , … , x i p ) , i = 1 , 2 , … n X_{i}=(x_{i1},x_{i2},\dots,x_{ip}),\quad i=1,2,\dots n Xi=(xi1,xi2,,xip),i=1,2,n
是待分析的对象全体。每个对象用p个特征变量来刻画。

聚类分析就是分析n个(对象)样本所对应的特征向量间的空间距离及分散情况,按照各样本间的距离远近或相似程度把n个样本划分成k个不相交非空的模式子集G1,G2,…,GK,称为簇或类,要求每一个样本能且只能隶属于某一类。

  1. 对研究样本聚类即数据表中的行作为对象,称为Q型聚类。
  2. 对特征变量(指标)进行聚类,即对数据中的列,对变量的聚类称为R型聚类。可以将一些相近的特征划归一类
    它们在数学上是无区别的。
    聚类分析的实质,就是结合研究目的、专业知识和数据特征,合理定义距离,把数据分成若干个类别,使得类别内部差异,尽可能小,类别间的差异尽可能大。

两种基本聚类算法

  1. HierarchicalCluster:谱系聚类或层次聚类
  2. K-Means Cluster:k-均值聚类法。
    在聚类分析的前沿领域,有基于密度、基于网格和基于模型的新的聚类方法,本质上都是寻求更好的相似度(similarity)或距离的定义方法

距离与相似系数

如何在高维空间中度量距离远近呢?在啤酒数据中,每种饮料都有四个变量值。这就是四维空间点的距离了。
不仅要定义点和点之间的距离,也需要定义类(集合)和类(集合)之间的距离。不同距离定义方式影响聚类效果。
相似度是和距离相反但起同样作用的概态,两点相似度越大就相当于距离越短

两点间距离

给定任意两点
X = ( x 1 , x 2 , … , x p ) T ,   Y = ( y 1 , y 2 , … , y p ) T X=(x_{1},x_{2},\dots,x_{p})^{T},\ Y=(y_{1},y_{2},\dots,y_{p})^{T} X=(x1,x2,,xp)T, Y=(y1,y2,,yp)T
有多种方法定义两点间的距离
最常用的欧氏距离:
∑ i ( x i − y i ) 2 \sqrt{ \sum_{i} (x_{i}-y_{i})^{2}} i(xiyi)2
欧氏距离的优点:几何意义明确,简单;
缺点:从统计意义上看,使用欧氏距离要求:

  • 向量的p个分量互不相关具有相当的方差
  • 各个坐标对欧氏距离的贡献同等且变差大小相同
    也可采用欧氏距离平方

Minkowski距离:
( ∑ i = 1 p ∣ x i − y i ∣ q ) 1 / q \left( \sum_{i=1}^{p}| x_{i}-y_{i}|^{q} \right)^{1/q} (i=1pxiyiq)1/q
当取q=1时,即为Block(绝对距离):
∑ i = 1 p ∣ x i − y i ∣ \sum_{i=1}^{p}| x_{i}-y_{i}| i=1pxiyi
当q=o时,Chebychev距离:
m a x i ∣ x i − y i ∣ max_{i}| x_{i}-y_{i}| maxixiyi
缺点:

  • 易受指标量纲的影响
  • 未考虑指标间的相关性

B模距离
对于任意的正定矩阵B,由下式确定的距离称为B模距离
d X Y 2 = ( X − Y ) T B ( X − Y ) d^{2}_{XY}=(X-Y)^{T}B(X-Y) dXY2=(XY)TB(XY)
当B为单位矩阵时,即为欧式距离


B = d i a g ( 1 σ 1 2 , 1 σ 2 2 , … , 1 σ p 2 ) B=diag\left( \frac{1}{\sigma_{1}^{2}},\frac{1}{\sigma_{2}^{2}},\dots,\frac{1}{\sigma_{p}^{2}} \right) B=diag(σ121,σ221,,σp21)
d X Y 2 = ( x 1 − y 1 ) 2 σ 1 2 + ( x 2 − y 2 ) 2 σ 2 2 + ⋯ + ( x p − y p ) 2 σ p 2 d_{XY}^{2}=\frac{(x_{1}-y_{1})^{2}}{\sigma_{1}^{2}}+\frac{(x_{2}-y_{2})^{2}}{\sigma_{2}^{2}}+\dots+\frac{(x_{p}-y_{p})^{2}}{\sigma_{p}^{2}} dXY2=σ12(x1y1)2+σ22(x2y2)2++σp2(xpyp)2

当取协方差矩阵的逆矩阵时,得到马氏距离
Mahalanobis距离
B = [ c o v ( X ) ] − 1 = ∑ − 1 B=[cov(X)]^{-1}=\sum^{-1} B=[cov(X)]1=1
d X Y 2 = ( X − Y ) T ∑ − 1 ( X − Y ) d_{XY}^{2}=(X-Y)^{T}\sum^{-1}(X-Y) dXY2=(XY)T1(XY)
优点:

  • 排除了指标间的相关性干扰
  • 不受指标量纲的影响
  • 对原数据进行线性变换之后,马氏距离不变
相似系数

夹角余弦(Cosin)
d x y = cos ⁡ θ x y = ∑ i x i y i ∑ i x i 2 ∑ i y i 2 ,   − 1 ≤ d x y ≤ 1 d_{xy}=\cos \theta_{xy}=\frac{\sum_{i}x_{i}y_{i}}{\sqrt{ \sum_{i}x_{i}^{2}\sum_{i}y_{i}^{2} }},\ -1\le d_{xy}\le 1 dxy=cosθxy=ixi2iyi2 ixiyi, 1dxy1
相关系数(Pearson correlation)
d x y = γ x y = ∑ i ( x i − x ˉ ) ( y i − y ˉ ) ∑ i ( x i − x ˉ ) 2 ∑ i ( y i − y ˉ ) 2 d_{xy}=\gamma_{xy}=\frac{\sum_{i}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sqrt{ \sum_{i}(x_{i}-\bar{x})^{2}\sum_{i}(y_{i}-\bar{y})^{2} }} dxy=γxy=i(xixˉ)2i(yiyˉ)2 i(xixˉ)(yiyˉ)

距离或相似度定义是聚类分析的关键步骤,要结合专业和所研究对象的特点设计。
比如Lance和Williams的距离
1 p ∑ i ∣ x i − y i ∣ x i + y i \frac{1}{p}\sum_{i} \frac{| x_{i}-y_{i}|}{x_{i}+y_{i}} p1ixi+yixiyi
兰氏距离是一个无量纲的量,克服了闵可夫斯基距离与各指标的量纲有关的缺点,且兰氏距离对大的奇异值不敏感,这使其特别适合高度偏移的和数据。但兰氏距离也没有考虑变量间的相关性。
再比如汉明距离(Hammingdistance):两个0,1字符码中不同位值的数目。

两类之间的距离

由一个点组成的类是最基本的类;如果每一类都由一个点组成那么点间的距离就是类问距离。但是如果某一类包含不止一个点,那么就要确定类间距离
类间距离是基于点间距离定义的:比如两类之间最近点之间的距离可以作为这两类之间的距离,也可以用两类中最远点之间的距离或各类的中心之间的距离来作为类间距离等。

给定两类 G p , G q G_{p},G_{q} Gp,Gq,及其均值中心 X p ˉ , X q ˉ \bar{X_{p}},\bar{X_{q}} Xpˉ,Xqˉ
两类之间的距离 D p q D_{pq} Dpq
最短距离法single
D p q = m i n X i ∈ G p , X j ∈ G q d ( x i , y j ) D_{pq}=min_{X_{i}\in G_{p},X_{j}\in G_{q}}d(x_{i},y_{j}) Dpq=minXiGp,XjGqd(xi,yj)
最长距离法complete
D p q = m a x X i ∈ G p , X j ∈ G q d ( x i , y j ) D_{pq}=max_{X_{i}\in G_{p},X_{j}\in G_{q}}d(x_{i},y_{j}) Dpq=maxXiGp,XjGqd(xi,yj)
重心法Centroid
D p q = d ( X p ˉ , X q ˉ ) D_{pq}=d(\bar{X_{p}},\bar{X_{q}}) Dpq=d(Xpˉ,Xqˉ)
类平均法average
D p q = 1 n 1 n 2 ∑ X i ∈ G p ∑ X j ∈ G q d ( X i , X j ) D_{pq}=\frac{1}{n_{1}n_{2}}\sum_{X_{i}\in G_{p}}\sum_{X_{j}\in G_{q}}d(X_{i},X_{j}) Dpq=n1n21XiGpXjGqd(Xi,Xj)
离差平方和Wald
D 1 = ∑ X i ∈ G p ( X i − X p ˉ ) ′ ( X i − X p ˉ ) D_{1}=\sum_{X_{i}\in G_{p}}(X_{i}-\bar{X_{p}})'(X_{i}-\bar{X_{p}}) D1=XiGp(XiXpˉ)(XiXpˉ)
D 2 = ∑ X j ∈ G q ( X j − X q ˉ ) ′ ( X j − X q ˉ ) D_{2}=\sum_{X_{j}\in G_{q}}(X_{j}-\bar{X_{q}})'(X_{j}-\bar{X_{q}}) D2=XjGq(XjXqˉ)(XjXqˉ)
D 1 + 2 = ∑ X ∈ G p ∪ G q ( X k − X ˉ ) ′ ( X k − x ˉ ) D_{1+2}=\sum_{X\in G_{p}\cup G_{q}}(X_{k}-\bar{X})'(X_{k}-\bar{x}) D1+2=XGpGq(XkXˉ)(Xkxˉ)
⟹ D p q = D 1 + 2 − D 1 − D 2 \Longrightarrow D_{pq}=D_{1+2}-D_{1}-D_{2} Dpq=D1+2D1D2
G p ∪ G q G_{p}\cup G_{q} GpGq均值中心 X ˉ \bar{X} Xˉ。用两类合并后离差的增加量来衡量两类之间的距离
![[Pasted image 20240822165548.png]]
![[Pasted image 20240822165612.png]]
![[Pasted image 20240822165619.png]]

![[Pasted image 20240822165644.png]]

红绿合并(2,4,6,5)后的离差平方8.75
离差平方和增加8.75-2.5=6.25
黄绿合并(6,5,1,5)后的离差平方14.75
离差平方和增加14.75-8.5=6.25
黄红(2,4,1,5)后的离差平方
离差平方和增加10-10=0
故按该方法的连接和黄红首先连接。

层次聚类算法步骤及SPSS实现

层次聚类的方法原理

操作对象是类,
开始时,每一个样本点被看做一个类。
它首先把最近的两类(点)合并成一类,类数减少一个;
在剩下的类中继续寻找最近的两类合并;
这样下去,每次都少一类,直到最后只有一大类为止。越是后来合并的类,距离就越远。

聚类树的构造过程
  1. 计算n个样本点两两之间的距离,记为距离矩阵D
  2. 首先构造n个类,每个类只包含一个样本点,每一类的平台高度均为0
  3. 合并距离最近的两类为新类,并且以这两个类间的距离值作为聚类图中的平台高度
  4. 计算新类与当前各类的距离,调整距离矩阵。若类的个数等于1,转入步骤5,否则转到步骤3
  5. 画聚类图决定类的个数和类

以数据beer.sav为例,可以先通过菜单描述统计→描述→另存为变量将数据标准化。
![[Pasted image 20240822171917.png]]

然后选择菜单分析→分类→系统聚类。然后把标准化的热量、咖啡因、钠含量、价格选入变量框。
![[Pasted image 20240822171831.png]]

在方法按钮设置类间距离计算方法,如下图。
![[Pasted image 20240822172017.png]]

在绘制按钮,选择画出树状图
![[Pasted image 20240822172036.png]]

在平台高度发生较大跳跃的地方,可以提示最好的聚类数目。这里可以是2类或3类,选择聚成2类,并在保存按钮设置保存类成员
Cutoff=5,聚成了4类
Cutoff=12,聚成了2类
![[Pasted image 20240822172323.png]]

中间的系数,是两类合并时的距离,群集1,群集2和系数
这三列就是用矩阵表示的聚类树,合并过程

聚类分析要注意的问题

聚类分析是探索性研究,是一种描述统计方法,它没有深入的统计理论支持。可以试验不同的距离定义,不同的分类个数,以及使用原数据还是标准化数据等等。
聚类结果主要受所选择的变量影响。如果去掉一些变量,或者增加一些变量,结果会很不同。相比之下,聚类方法的选择则不那么重要了。
从应用角度讲,针对某个特定问题,很难得出一个完全确定,并且也有理论支持的结论。更多的时候,是依据聚类的结果在问题中的“有用性”来判断模型效果的好坏。
一个较好的聚类结果应该在类内样品尽可能相似的前提下,使得类的个数尽可能的少。
一个较好的聚类结果要有令人信服的解释。其中一个标准就是能不能给出可读性好的类别特征描述。

K均值聚类算法步骤及SPSS实现

K均值聚类的思想和算法

给定要聚类的数据点
X i = ( x i 1 , x i 2 , … , x i p ) , i = 1 , 2 , … , n X_{i}=(x_{i1},x_{i2},\dots,x_{ip}),i=1,2,\dots,n Xi=(xi1xi2,,xip)i=1,2,,n
k-均值聚类算法中的k表示聚类的个数。事先并不知道,试探性给出或结合背景知识给出
每个类用一个中心点来表示。聚类中心点随机初始化。
C i , i = 1 , 2 , … , k C_{i},i=1,2,\dots ,k Ci,i=1,2,,k
通过计算样本数据点与中心点距离,将所有样本数据点分配到距离最近的类中
∣ ∣ X i − C j ∣ ∣ , j = 1 , 2 , … , k | | X_{i}-C_{j}| |,j=1,2,\dots,k ∣∣XiCj∣∣,j=1,2,,k

K-均值聚类算法是一种迭代算法。每扫描一次就要重新计算每个聚类中心点的位置。当聚类中心点的位置变化在一定的阀值之内的时候停止变化时,最后就可以得到K个类,并且类中每个样本数据点到本簇的中心的距离都小于到其它簇中心的距离
主要的聚类过程有三步

  1. 随机生成k个初始点作为中心点。
  2. 将数据集中的数据按照距离中心点的远近,分配到各个类中。
  3. 将各个类中的数据求平均值,作为新的中心点,重复上一步,直到所有的簇不再改变。
    ![[Pasted image 20240823043601.png]]
K均值聚类分析的SPSS实现

以数据Beer.sav为例,在SPSS中选择 分析→分类→k均值聚类
![[Pasted image 20240823044959.png]]

然后把啤酒的热量、钠含量、酒精及价格选入变量框。
在聚类数目处选择2(自己试探可能的类数)。
如果想要知道哪种饮料分到哪类,则设置保存按钮,再选类成员。结果会写入数据表中。
![[Pasted image 20240823044658.png]]

利用SPSS,只迭代五次就达到目标了。这样就可以得到最后的三类的中心以及每类有多少点
![[Pasted image 20240823044810.png]]

倒数第二列给出各类包含的样本。结果是:第一类为啤酒9、10、12、 16、19、20。剩下的饮料为第二类。最后一列给出到类中心的距离。

聚类分析MATLAB实现

两种聚类分析方法

一种是利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法
另一种是分步聚类:

  1. 找到数据集合中对象两两之间的相似性或非相似性,用pdist函数计算变量之间的距离;
  2. 用linkage函数定义变量之间的连接;
  3. 用inconsistent函数评价聚类信息;
  4. 用cluster函数创建聚类。

pdist函数
调用格式:

Y = pdist(X, 'metric’)

说明:用metric指定的方法计算X数据矩阵中对象之间的距离。

  • X:一个n×m的矩阵,它是由m个对象组成的数据集,每个对象的大小为n。
  • metric指定距离计算方法:
    euclid:欧氏距离(默认)
    seuclid:标准化欧氏距离
    mahal:马氏距离;等等

linkage函数
调用格式:

Z = linkage(Y, 'method')

说明:用method参数指定的算法计算系统聚类树
返回:

  • Z,为一个包含聚类树信息的(n-1)×3的矩阵。记载系统聚类合并过程。
  • Y,pdist函数返回的距离矩阵;
  • method:可取值如下:
    single:最短距离法(默认);
    complete:最长距离法;
    average:未加权平均距离法:
    weighted:加权平均法;
    centroid:质心距离法;
    median:加权质心距离法;
    ward:内平方距离法(最小方差算法)

dendrogram函数
调用格式:

[H, T, ...] = dendrogram(Z, p,...)

说明:生成只有顶部p个节点的谱系图

inconsistent函数
说明:利用linkage函数生成的Z,计算两个节点合并时的不一致性。
调用格式:

c = inconsistent(Z)

cluster函数

Cluster(Z,a)

其中0<a<2,表示linkage输出的系统聚类树Z中距离小于a的样本点归于一类

·Cluster(Z,b)

其中b>1整数,表示将linkage输出的系统聚类树X分为b类

分布聚类步骤
  1. 寻找变量之间的相似性
    最好先将数据用zscore函数进行标准化。
X2 = zscore(X); %标准化数据
Y2 = pdist(X2); %计算距离
  1. 定义变量之间的连接
Z2 = linkage(Y2);
  1. 评价聚类信息
C = inconsistent(Z2)  %两个集合(节点)合并时的不一致度量
  1. 创建聚类,并作出谱系图
T = cluster(Z2,6); %这里聚6个类
H = dendrogram(Z2);

可直接调用clusterdata函数,根据数据创建分类调用格式:

T = clusterdata(X,...)

Clusterdata(x,a),其中0<a<2,表示将原始数据中距离小于a的样本点归于一类
Clusterdata(x,b),其中b>1整数,表示将原始数据x分为b类

T=clusterdata(X,cutoff)

与下面的一组命令等价:

Y = pdist(X, 'euclid'); 
Z = linkage(Y, 'single'); 
T = cluster(Z, cutoff);

MATLAB中若要实现k均值聚类,直接使用的K-means函数。
使用方法:

ldx = Kmeans(X, K)
[ldx, C] = Kmeans(X, K)
  • X是NxP的数据矩阵
  • K表示将X划分为几类,为整数
  • C是KxP的矩阵,存储的是K个聚类质心位置,
  • ldx Nx1的向量,存储的是每个点的聚类标号

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 命令管道介绍

今天给伙伴们分享一下Linux 命令管道&#xff0c;希望看了有所收获。 我是公众号「想吃西红柿」「云原生运维实战派」作者&#xff0c;对云原生运维感兴趣&#xff0c;也保持时刻学习&#xff0c;后续会分享工作中用到的运维技术&#xff0c;在运维的路上得到支持和共同进步&am…

软考:软件设计师 — 15.数据结构及算法应用

十五. 数据结构及算法应用 数据结构及算法应用类题目是下午场考试中的第四道题目&#xff0c;分值 15 分&#xff0c;主要以 C 语言填空、算法策略判断和时间复杂度判断为考察形式&#xff0c;建议拿到 6 分以上。 1. 解题技巧 算法策略与时间复杂度部分详细内容可以参考文章…

测试干货 | 如何选择合适的半导体检测方法?看完这篇就明白了!

撰文排版&#xff1a;刘佳 审核指导&#xff1a;肖俊灵 本文较长&#xff0c;建议先收藏后随时查看&#xff01;以后我们将更新更多此类硬核科普&#xff0c;欢迎关注&#xff01; 半导体材料作为半导体产业链中的重要支撑&#xff0c;包括以硅、锗等为代表的元素半导体材料和以…

图与树的基本概念

目录 引言 图与树结构的重要性 图的基本概念 图的表示方式 图的遍历算法 树的基本概念 树的定义与性质 树的遍历 二叉树与多叉树的概念 图与树的高级应用 最短路径算法 最小生成树算法 总结与应用 综合实例分析 引言 在计算机科学的世界中&#xff0c;图和树是两…

商圈停车泊位实时查询与推荐系统 项目编号:17259(案例分享)

摘 要 在当今城市化进程加快的背景下&#xff0c;城市停车问题日益突出&#xff0c;给市民出行带来诸多不便。为解决停车难题&#xff0c;提高停车效率&#xff0c;基于Java开发语言和Spring Boot框架&#xff0c;结合MySQL数据库技术&#xff0c;开发了商圈停车泊位实时查询…

计算机Java项目|基于SpringBoot的网络海鲜市场系统的设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

牛客小白月赛96

牛客小白月赛96 A 最少胜利题数 链接&#xff1a;https://ac.nowcoder.com/acm/contest/84528/A 来源&#xff1a;牛客网 题目描述 本场小白月赛共 6 题&#xff0c;&#x1d435;&#x1d456;&#x1d45b;&#x1d454;&#x1d44f;&#x1d45c;&#x1d45b;&#x1d4…

【hot100篇-python刷题记录】【找到字符串中所有字母异位词】

R6-滑动窗口篇 印象题 核心&#xff1a; 使用collections方法的Counter计数&#xff0c;统计了某个子串中每个字母出现的次数。 判断子串相等&#xff1a;counter1counter2 &#xff08;注意&#xff1a;此时&#xff0c;counter1或者counter2都不能含有多余的项&#xff0…

JVM系列--初始JVM

根据《黑马程序员JVM虚拟机入门到实战全套视频教程》整理 1 什么是JVM JVM 全称是 Java Virtual Machine&#xff0c;中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序&#xff0c;他的职责是运行Java字节码文件。 Java源代码执行流程如下&#xff1a; 分为三个步…

Mysql 集群技术

一、Mysql 在服务器中的部署方法 在企业中90%的服务器操作系统均为Linux在企业中对于Mysql的安装通常用源码编译的方式来进行官网&#xff1a;http://www.mysql.com 1.1 在Linux下部署mysql cmake \ -DCMAKE_INSTALL_PREFIX/usr/local/mysql \ #指定安装路径 -DMYSQL_DATADI…

【Unity变现】Unity 接入Unity ADS广告

说在前面的话&#xff0c;Unity ADS是Unity官方做的广告变现平台&#xff0c;但广告在我国大陆无法使用&#xff0c;开发时测试的话需要上代理才能看到请求的广告。 如果游戏不准备发布到海外市场&#xff0c;可以不考虑这个平台。 一、注册Unity ADS平台的准备 https://dash…

JavaEE 第17节 网络通信知识扫盲

文章目录 前言一、网络通信的概念二、局域网&广域网 局域网&#xff08;LAN&#xff0c;Local Area Network&#xff09; 广域网 三、IP地址与端口号 1、IP地址 2、端口号 四、网络协议 1、概念&作用 2、协议分层&#xff08;重要&#xff09; 前言 此篇博…

你是如何更精准地指引模型,激发其无尽的创造力?

随着大型语言模型日益凸显其重要性&#xff0c;发掘并充分利用它们的潜力&#xff0c;很大程度上依赖于我们如何巧妙构思和构造指令——即Prompt的精炼艺术。优化Prompt撰写技巧&#xff0c;将能够更好地引导大模型&#xff0c;为各类应用场景生成高质量的文本输出。分享出你的…

CTF杂项题:easy_nbt writeup

题目 题目如图&#xff0c;有一个附件&#xff1a;file.7z 解题思路 CTF的杂项题&#xff0c;对于刚接触的人员来说&#xff0c;很多时候是完全没有思路&#xff0c;解这类题&#xff0c;没有相关知识储备的时候&#xff0c;可以使用文件内容搜索工具搜索flag、ctf、key等关键…

【实现100个unity特效之25】Unity中实现二次元模型,基于光照的内置和URP管线卡通化渲染shader

最终效果 文章目录 最终效果默认效果简单粗暴&#xff0c;使用Unlit/Texture基于光照模型的卡通渲染UnityToonShader——仅支持内置渲染管线基于光照模型的二次元渲染UnityURPToonLitShaderExample——仅支持URP渲染管线 完结 默认效果 不然不做处理&#xff0c;我们的模型默认…

高并发eleme项目登录模块(thirty-three day)

一、配置一主二从mysql 1. mycat对mysql8不完全支持 2. mysql8主从问题不大get_pub_key1 3. gtids事务复制 4. 删除/etc/my.cnf 5. 同步data文件需要先停用mysql服务,删除data目录中的auto.cnf 6. gtid模式以及经典模式都需要锁表 flush tables with read lock; unlock …

怎么用电脑兼职赚钱,普通人可做的6个副业项目(非常详细)零基础入门到精通,收藏这篇就够了

现在的生活中&#xff0c;我们总是感觉所过的日子都很紧张&#xff0c;虽然我们尽可能地工作和努力&#xff0c;但是生活成本和社会压力仍然那么大。为了弥补自己的生活经验和财务困难&#xff0c;很多人开始寻找一种额外的收入来源。 其实这种额外的收入来源就被称之为&#…

google paly修改地区教程【2024自测可用】

【准备信息】 https://usfakename.com/ &#xff1a; 用来生成其他国家&#xff08;比如美国&#xff09;的地址 重要需要填写的内容&#xff1a; 卡号&#xff1a;4532 7875 1109 8437 City:Boulder State:Alabama postcode:35259 可以在美国邮政编码ZIP Code(转载) -…

学习yolo+Java+opencv简单案例(一)

目录 一、大概架构 二、编写pom.xml 1、yolo-study模块&#xff08;root&#xff09;&#xff1a; 2、CameraDetection模块 三、编写yml配置文件 四、编写controller 五&#xff0c;可能会出现的问题 1、修改VM启动参数&#xff1a; 2、修改启动类 六、测试 七&…

gradio如何实现修改代码后自动重载运行

使用自动重载加速开发 前提条件&#xff1a;本指南要求你了解 Blocks。在阅读本指南之前&#xff0c;请确保你已经阅读了Blocks指南。 本指南涵盖自动重载、在Python IDE中的重载&#xff0c;以及在Jupyter Notebooks中使用Gradio。 为什么需要自动重载&#xff1f; 当你使…