聚类分析方法(一)

目录

    • 一、聚类分析原理
      • (一)聚类分析概述
      • (二)聚类的数学定义
      • (三)簇的常见类型
      • (四)聚类框架及性能要求
      • (五)簇的距离
    • 二、划分聚类算法
      • (一)划分聚类框架
      • (二)划分聚类的质量
      • (三)k-means算法
      • (四)空簇与离群点
      • (五)k-中心点算法


  聚类分析 (clustering analysis) 是数据挖掘研究最为活跃、内容最为丰富的领域之一,其目的是通过对数据的深度分析,将一个数据集拆分成若干个子集 (每个子集称为一个簇,cluster),使得同一个簇中数据对象 (也称数据点) 之间的距离很近或相似度较高,而不同簇中的对象之间距离很远或相似度较低。

一、聚类分析原理

(一)聚类分析概述

  聚类分析 (clustering analysis) 就是根据某种相似性度量标准,将一个没有类别标号的数据集 S S S (表10-1) 直接拆分成若干个子集 C i ( i = 1 , 2 , ⋯ , k ; k ≤ n ) C_i (i=1,2, \cdots,k; k≤n) Ci(i=1,2,,k;kn),并使每个子集内部数据对象之间相似度很高,而不同子集的对象之间不相似或相似度很低。每个子集 C i C_i Ci 称为一个簇,所有簇构成的集合 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1 ,C_2, \cdots,C_k\} C={C1,C2,,Ck} 称为数据集 S S S 的一个聚类。

在这里插入图片描述
  聚类分析与分类规则挖掘不同,前者是一种探索性的分析过程。聚类分析的数据集 S S S 中没有已知的先验知识 (即对象的类别标号) 来指导,它要求直接从 S S S 本身出发,依据某种相似度标准为 S S S 的每个对象给出类别标号。因此,聚类分析也称为无监督的分类 (unsupervised classification)。对于同一个数据集,就算使用同一个聚类算法,如果选择了不同的“相似度”标准,也常常会得到不同的聚类结果。
  聚类分析作为数据挖掘的一个热门研究领域,在帮助人们获取潜在的、有价值的信息并过滤掉无用的信息方面起到了至关重要的作用。
  目前,数据聚类技术在许多领域都已得到实际应用。在生物学的研究中,科学家们可以通过聚类算法来分析大量的遗传信息,从而发现哪些基因组具有类似的功能,以此获得对种群的认识;在信息检索方面,聚类算法可以将搜索引擎返回的结果划分为若干个类,从每个类中获取查询的某个特定方面,从而产生一个类似树状的层次结构来帮助用户进一步探索查询结果;在医学领域的研究中,一种疾病通常会有多个变种,而聚类分析可以根据患者的症状描述来确定患者的疾病类型,以此提高诊断效率和治疗效果;在气象领域,聚类已经被用来发现对气候具有明显影响的海洋大气压力模式;在电子商务中,聚类分析可以对用户群体进行细分,并针对不同类型的用户进行不同的营销策略,以提升销售额。

(二)聚类的数学定义

定义10-1 设有数据集 S = { X 1 , X 2 , ⋯ , X n } S=\{X_1 ,X_2, \cdots,X_n\} S={X1,X2,,Xn},其中 X i X_i Xi d d d 维向量 (表10-1), s ( X , Y ) s(X,Y) s(X,Y) 为定义在 S S S 上的相似度函数。若利用函数 s ( X , Y ) s(X,Y) s(X,Y) 可将 S S S 拆分成 k k k 个子集 C i C_i Ci,并记 C = { C 1 , C 2 , ⋯ , C k } ( k ≤ n ) C=\{C_1 ,C_2, \cdots,C_k\}(k≤n) C={C1,C2,,Ck}(kn),使 C C C 满足以下条件:
(1) C i ≠ ∅ ( i = 1 , 2 , ⋯ , k ) C_i ≠ \varnothing (i=1 ,2, \cdots,k) Ci=(i=1,2,,k)                                           (10-1)
(2) C 1 ∪ C 2 ∪ ⋯ ∪ C k = S C_1∪ C_2∪\cdots∪C_k =S C1C2Ck=S                                          (10-2)
(3) C i ∩ C j = ∅ ( i = 1 , 2 , ⋯ , k ; i ≠ j ) C_i∩C_j= \varnothing (i=1 ,2, \cdots,k; i≠j) CiCj=(i=1,2,,k;i=j)                                     (10-3)
(4) ∀ X , Y ∈ C i , s ( X , Y ) = 1 \forall X,Y\in C_i, s(X,Y)=1 X,YCi,s(X,Y)=1 或接近 1 1 1 ∀ X ∈ C i \forall X\in C_i XCi Y ∈ C j ( i ≠ j ) , s ( X , Y ) = 0 Y\in C_j(i≠j) ,s(X,Y)=0 YCj(i=j),s(X,Y)=0 或接近 0 0 0;则称 C i C_i Ci S S S s ( X , Y ) s(X,Y) s(X,Y) 生成的一个簇 (cluster),简称簇 C i ( i = 1 , 2 , … ⋯ , k ) C_i (i=1 ,2, …\cdots,k) Ci(i=1,2,…⋯,k);同时,称 C C C S S S s ( X , Y ) s(X,Y) s(X,Y) 生成的一个划分聚类 (partitional clustering),简称 C C C S S S 的划分聚类,或称为互斥 (exclusive) 的聚类。

(2)+ 如果将公式 (10-2) 改为
C 1 ∪ C 2 ∪ ⋯ ∪ C k ⊂ S (10-4) C_1∪C_2∪\cdots∪C_k \subset S\tag{10-4} C1C2CkS(10-4) 而其它假设条件都不变,则称 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1 ,C_2, \cdots,C_k\} C={C1,C2,,Ck} S S S 的部分聚类 (partial clustering)。这时, S S S 中的某些对象没有分配到任何簇中。

(2)++ 如果将定义10-1中的公式 (10-2) 改为
C 1 ∪ C 2 ∪ ⋯ ∪ C k ⊆ S (10-5) C_1∪C_2∪\cdots∪C_k\subseteq S \tag{10-5} C1C2CkS(10-5) 且至少存在两个簇 C i ∩ C j ≠ ∅ C_i∩C_j≠\varnothing CiCj=,而其它假设不变,则称 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1 ,C_2, \cdots,C_k\} C={C1,C2,,Ck} S S S 的非互斥聚类 (non-exclusive clustering),也称 C C C 为重叠聚类 (overlapping clustering)。

  相似度函数 s ( X , Y ) s(X,Y) s(X,Y),通常可使用之前介绍的某种相似度,但一般都需要根据实际数据集 S S S 的属性类型来选择或确定;可选择距离或相异度 d ( X , Y ) d(X,Y) d(X,Y) 来作为相似性的度量标准,这时只要将定义10-1中的第(4)条改为“对 X , Y ∈ C i , d ( X , Y ) = 0 X,Y\in C_i, d(X,Y)=0 X,YCi,d(X,Y)=0 或接近 0 0 0,对 X ∈ C i X\in C_i XCi Y ∈ C j ( i ≠ j ) , d ( X , Y ) Y\in C_j(i≠j) ,d(X,Y) YCj(i=j),d(X,Y) 很大”即可。还可以定义其它广义的“相似度”,比如簇内点的密度,或要求每个簇构成某种形状等。聚类分析不仅与数据集 S S S 有关,而且与所选择的相似性度量有关。
  在实际应用中,对于一个给定的数据集 S S S,如何选择恰当的相似性度量却没有普遍适用的标准,仍是一个困难而富有挑战性的问题。

例10-1 假设数据集 S S S 有20个点,其在平面上位置如图10-1(1)所示。我们可将数据集 S S S 分别交给甲、乙、丙3个同学,希望他们自己选择恰当的相似度标准对 S S S 进行聚类。

在这里插入图片描述
  虽然三个同学的聚类结果不一样,但老师在评分时给三个同学都是满分,因为都是在各自选定的相似度标准下正确的聚类结果。

(三)簇的常见类型

  聚类分析旨在发现“有用”或“有意义”的簇,这里的有用性或意义完全由数据挖掘目的来决定。虽然实际存在有很多种类的簇,但数据挖掘的实践表明,无论多么奇怪的簇在实际应用中都可能是有用的。
  簇的类型一般可从簇的形状和簇间关系来划分。

1、簇的形状

  从簇的形状主要分为类球状 (凸形) 的簇,非球状的簇两种类型。
  (1)类球状的簇 (图10-2),一般是聚类算法使用距离函数所产生的簇,而非球状的簇,通常由基于密度或基于原型的聚类算法获得的簇。

在这里插入图片描述
  (2)非球状的簇,通常由基于密度或基于原型的聚类算法获得的簇。

在这里插入图片描述
2、簇间关系

1)明显分离的簇

  簇中每个数据对象到同簇中其它对象的距离,比到不同簇中任意对象的距离更近;下图中不同簇中任意两点之间的距离都大于簇内任意两点之间的距离。当然,明显分离的簇不必是球形的,也可以是其它任意的形状。

在这里插入图片描述
2)基于原型的簇

  所谓原型其实就是簇中最具代表性的点。对连续属性的数据,簇的原型通常就是质心,即簇中所有点的平均值。当数据包括分类属性时,簇的原型通常是中心点,即簇中最有代表性的点。对于许多数据类型,原型可以视为最靠近中心的点,因此,通常把基于原型的簇看作基于中心的簇 (center-based cluster),下图就是一个基于中心的簇的例子。

在这里插入图片描述
3)基于连片的簇 (contiguity-based cluster)

  簇中两个相邻对象的距离都在指定的阈值之内即将其归为同一个簇。当簇的形状不规则或缠绕,且数据集没有噪声时,用这种方式来定义簇会收到很好的聚类效果。如果存在噪声,其聚类效果就不一定理想。图中的哑铃状簇,就是由线状 (噪声) 连接两个球状簇形成的一个簇。

在这里插入图片描述
4)基于密度的簇 (density-based cluster)

  基于密度的簇由对象间相对稠密的区域组成,且其周围是低密度的区域。一般通过指定簇中任何一个对象周围区域内最少点数 (即密度) 来实现。下图有3个基于密度的簇,它们是在哑铃状图中添加了一些低密度的对象创建的。由于增加了低密度噪声点的缘故,原先的S状、线状簇不能形成较稠密的簇而被当作噪声排斥在外。当簇的形状不规则或互相盘绕,并且有噪声和离群点时,使用基于密度的簇定义通常得到较理想的聚类效果。

在这里插入图片描述
5)基于概念的簇

  即具有某种“共同性质”的数据对象集合。比如,离相同的质心或中心点最近,或组成三角形、梯形,或圆环状 (重叠聚类) 等。

在这里插入图片描述

(四)聚类框架及性能要求

算法10-1 聚类算法框架
输入:数据集 S S S,相似度 s s s,以及簇的个数 k k k
输出:聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck}
(1)任意产生 S S S的一个聚类 C C C
(2)以 s s s为相似性标准对 S S S循环更新聚类 C C C的簇 C 1 , C 2 , ⋯ , C k C_1,C_2,\cdots,C_k C1,C2,,Ck,直到满意为止。

其中,“满意”的标准一般是簇内对象之间的距离很近,簇与簇之间的距离很远等相似度或相异度。

  1. 对数据集的可伸缩能力:不仅在小数据集上聚类效果好,而且在大数据集上的聚类也要效率高、效果好。
  2. 处理混合属性的能力:能够处理同时含有二元、分类、序数和数值等属性的数据集。
  3. 发现任意形状簇的能力:不仅能够发现凸型球状的、大小和密度相近的簇,也能够发现一些特殊形状的簇。
  4. 聚类参数自适应能力:对用户输入初始参数,如簇的个数 k k k,密度半径 ε \varepsilon ε 和最少点数 MinPts 等具有自适应能力,可以减少甚至克服初始参数对聚类的结果影响,以保障聚类的质量。
  5. 噪声数据的处理能力:以减轻或者消除“噪声”数据影响,提高聚类结果的质量。
  6. 数据输入顺序的适应能力:即适应数据集任意输入顺序的能力,有助于提高聚类结果的稳定性。
  7. 处理高维数据的能力:不仅能高效地处理2-3维的数据集,对高维数据 (几十个甚至更多的属性) 也能高效运行。
  8. 带约束条件的聚类能力:即聚类算法不仅能满足客户特定的约束条件,又能得到具有良好聚类特性的簇。

  值得注意的是,在实际的算法设计中,要求一个聚类算法同时具备以上所有能力是不现实的,如果能够同时具备其中的3-4个能力已算是相对优质的算法了。

(五)簇的距离

  数据集 S S S 的一个聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck} 的质量,包括每个簇 C i C_i Ci 的质量和 C C C 的总体质量。前者用簇内距离来刻画,后者用簇间距离来衡量。

1、簇内距离

1)簇的直径

  簇 C i C_i Ci 中任意两个对象之间欧氏距离的最大者,也称为簇外径,并记作
Φ ( C i ) = m a x { d ( X , Y ) ∣ X , Y ∈ C i } (10-6) \Phi(C_i)=max\{d(X,Y) | X,Y\in C_i\}\tag{10-6} Φ(Ci)=max{d(X,Y)X,YCi}(10-6) 2)簇的内径

  簇 C i C_i Ci 中任意两个对象之间欧氏距离的最小者,并记作
ϕ ( C i ) = m i n { d ( X , Y ) ∣ X , Y ∈ C i } (10-7) \phi(C_i)=min\{d(X,Y) | X,Y\in C_i\}\tag{10-7} ϕ(Ci)=min{d(X,Y)X,YCi}(10-7)3)簇的平均距离

  簇 C i C_i Ci 中任意两个对象之间欧氏距离之和与 C ∣ C i ∣ 2 C i C^2_{|C_i|}C_i CCi2Ci 中元素个数取2的组合数比值,并记作
d a ( C i ) = 1 C ∣ C i ∣ 2 ∑ X , Y ∈ C i d ( X , Y ) (10-8) d_a(C_i)=\frac{1}{C^2_{|C_i|}}\sum_{X,Y\in C_i}d(X,Y)\tag{10-8} da(Ci)=CCi21X,YCid(X,Y)(10-8) 4)簇的中心距离和

  设 X ‾ i \overline{X}_i Xi 为簇 C i C_i Ci 的中心点,簇中每个点到中心点的距离之和,并记作
d σ = ∑ X ∈ C i d ( X , X ‾ i ) (10-9) d_{\sigma}=\sum_{X\in C_i}d(X,\overline{X}_i)\tag{10-9} dσ=XCid(X,Xi)(10-9)

2、簇间距离

  设有两个簇 C i C_i Ci C j C_j Cj,且对于任意 X ∈ C i X\in C_i XCi Y ∈ C j Y\in C_j YCj,其距离为 d ( X , Y ) d(X,Y) d(X,Y),则两个簇之间的距离 d ( C i , C j ) d(C_i, C_j) d(Ci,Cj),一般可采用以下几种方式来定义。

1)簇间最小距离

  以两个簇中任意两个元素距离的最小者 (smallest),即
d s ( C i , C j ) = m i n { d ( X , Y ) ∣ X ∈ C i , Y ∈ C j } (10-10) d_s(C_i,C_j)=min\{d(X,Y) | X\in C_i,Y\in C_j\}\tag{10-10} ds(Ci,Cj)=min{d(X,Y)XCi,YCj}(10-10) 2)簇间最大距离

  以两个簇中任意两个元素距离的最大者 (largest) ,即
d l ( C i , C j ) = m a x { d ( X , Y ) ∣ X ∈ C i , Y ∈ C j } (10-11) d_l(C_i,C_j)=max\{d(X,Y) | X\in C_i,Y\in C_j\}\tag{10-11} dl(Ci,Cj)=max{d(X,Y)XCi,YCj}(10-11) 3)簇间中心距离

  以两个簇 C i C_i Ci C j C_j Cj 的中心点 X ‾ i \overline{X}_i Xi X ‾ j \overline{X}_j Xj 之间的距离作为两个簇之间的距离度量,即
d c ( C i , C j ) = d ( X ‾ i , X ‾ j ) (10-12) d_c(C_i,C_j)=d(\overline{X}_i,\overline{X}_j)\tag{10-12} dc(Ci,Cj)=d(Xi,Xj)(10-12) 其中 C i C_i Ci 的中心定义为
X ‾ i = 1 ∣ C i ∣ ∑ X ∈ C i X (10-13) \overline{X}_i=\frac{1}{|C_i|}\sum_{X\in C_i}X\tag{10-13} Xi=Ci1XCiX(10-13) 簇间中心距离也称为均值距离。值得注意的是,簇中心常常不是该簇中的一个对象 (虚拟对象)。

4)簇间平均距离

  以两个簇中任意两个元素距离的平均值作为两个簇之间的一种距离度量,即
d a ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ X ∈ C i ∑ X ∈ C j d ( X , Y ) (10-14) d_a(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum_{X\in C_i}\sum_{X\in C_j}d(X,Y)\tag{10-14} da(Ci,Cj)=Ci∣∣Cj1XCiXCjd(X,Y)(10-14) 实际应用中可以用 d ( X , Y ) 2 d(X,Y)^2 d(X,Y)2 替换 d ( X , Y ) d(X,Y) d(X,Y)

5)离差距离

  令簇的中心距离平方和记作
r 2 ( C i ) = ∑ X ∈ C i d ( X , X ‾ i ) 2 (10-15) r^2(C_i)=\sum_{X\in C_i}d(X,\overline{X}_i)^2\tag{10-15} r2(Ci)=XCid(X,Xi)2(10-15) 对于任意两个簇 C i C_i Ci C j C_j Cj,如果令 C i + j = C i ∪ C j C_{i+j}=C_i\cup C_j Ci+j=CiCj,则簇 C i C_i Ci 与簇 C j C_j Cj 之间的平方和离差定义为
d 2 ( C i , C j ) = r 2 ( C i + j ) − r 2 ( C i ) − r 2 ( C j ) (10-16) d^2(C_i,C_j)=r^2(C_{i+j})-r^2(C_i)-r^2(C_j)\tag{10-16} d2(Ci,Cj)=r2(Ci+j)r2(Ci)r2(Cj)(10-16) 并简称 d ( C i , C j ) d(C_i,C_j) d(Ci,Cj) 为簇 C i C_i Ci C j C_j Cj 的离差距离。

二、划分聚类算法

(一)划分聚类框架

  由定义10-1可知,数据集 S S S 的划分聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck} 有两个特点:
(1)每个簇至少包括一个数据对象;
(2)每个数据对象属于且仅仅属于一个簇;
将聚类算法框架10-1具体化,可得划分聚类算法框架,如下。

算法10-2:划分聚类算法框架
输入:数据对象集 S S S和正整数 k k k
输出:“好”的划分聚类 C C C
(1)生成初始划分聚类 C ( 0 ) = { C 1 , C 2 , ⋯ , C k } C^{(0)}=\{C_1,C_2,\cdots,C_k\} C(0)={C1,C2,,Ck}
(2)REPEAT
(3)依照某种评价函数 f f f改变 C ( i ) C^{(i)} C(i),使新划分聚类 C ( i + 1 ) C^{(i+1)} C(i+1) C ( i ) C^{(i)} C(i)更好
(4)UNTIL C ( i + 1 ) C^{(i+1)} C(i+1)没有改变为止
(5)将 C ( i + 1 ) C^{(i+1)} C(i+1)作为聚类 C C C输出

(二)划分聚类的质量

1、聚类C的簇内差异

  设聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck},则它的簇内差异可选择某种距离函数,通过计算簇内每个对象到其中心点距离的平方和来表示,即聚类 C C C 的簇内差异定义为
w ( C ) = ∑ i = 1 k w ( C i ) = ∑ i = 1 k ∑ X ∈ C i d ( X , X ‾ i ) 2 (10-17) w(C)=\sum^{k}_{i=1}w(C_i)=\sum_{i=1}^{k}\sum_{X\in C_i}d(X,\overline{X}_i)^2\tag{10-17} w(C)=i=1kw(Ci)=i=1kXCid(X,Xi)2(10-17) w ( C ) w(C) w(C) 从总体上评价聚类 C C C 中每个簇的紧凑性,在有些文献资料中也称为误差平方和 (sum of the squared error, SSE),并用 S S E ( C ) SSE(C) SSE(C) 表示。

2、聚类C的簇间差异

  用 C C C 中任意两个簇中心之间的距离平方和来刻画聚类 C C C 的簇间疏远性,并记作
b ( C ) = ∑ 1 ≤ j < i ≤ k d ( X ‾ j , X ‾ i ) 2 (10-18) b(C)=\sum_{1≤j<i≤k}d(\overline{X}_j,\overline{X}_i)^2\tag{10-18} b(C)=1j<ikd(Xj,Xi)2(10-18) 由于 C C C k k k 个簇,因此公式(10-18)右边是 k ( k + 1 ) / 2 k(k+1)/2 k(k+1)/2 个距离平方之和。

3、聚类C的评价函数

  为了同时评价聚类 C C C 的每个簇是紧凑的,以及不同簇之间是疏远的,即评价聚类 C C C 的总体质量,其基本思想是同时考虑聚类 C C C 的簇内差异 w ( C ) w(C) w(C) 以及簇间差异 b ( C ) b(C) b(C) 的影响。因此,可考虑使用以下几种形式的评价函数作为聚类的质量标准。

(1) f ( C ) = w ( C ) f(C)=w(C) f(C)=w(C)

(2) f ( C ) = 1 / b ( C ) f(C)=1/b(C) f(C)=1/b(C)

(3) f ( C ) = w ( C ) / b ( C ) f(C)=w(C)/b(C) f(C)=w(C)/b(C)

(4) f ( C ) = α w ( C ) + β ( 1 / b ( C ) ) f(C)= \alpha w(C)+\beta(1/b(C)) f(C)=αw(C)+β(1/b(C)),其中 α , β \alpha,\beta α,β 为指定的权值,且 α + β = 1 \alpha+\beta=1 α+β=1

(5) F ( C ) = ( w ( C ) , 1 / b ( C ) ) F(C)=(w(C),1/b(C)) F(C)=(w(C),1/b(C)),这里的 F F F 为二元目标函数,或多目标函数。

因此,算法10-2就是寻找使 f ( C ) f(C) f(C) 达到最小,或使 F ( C ) F(C) F(C) 达到最小的聚类 C C C,即是我们需要的好聚类。

(三)k-means算法

1、算法描述

  k-means算法也称k-平均算法,它采用距离作为相异度的评价指标,以簇内差异函数 w ( C ) w(C) w(C) 作为聚类质量的优化目标函数,即将所有数据对象到它的簇中心点的距离平方和作为目标函数,算法寻找最优聚类的策略是使目标函数达到最小值 (簇中心不变化等价于 w ( C ) w(C) w(C)达最小)。

算法10-3 基本k-平均算法
输入:数据对象集 S = { X 1 , X 2 , ⋯ , X n } S=\{X_1,X_2,\cdots,X_n\} S={X1,X2,,Xn}和正整数 k k k
输出:划分聚类 C = { C 1 , C 2 , ⋯ , G k } C=\{C_1,C_2,\cdots,G_k\} C={C1,C2,,Gk}
(1)初始步:从 S S S中随机选择 k k k个对象作为 k k k个簇的中心,并将它们分别分配给 C 1 , C 2 , ⋯ , C k C_1,C_2,\cdots,C_k C1,C2,,Ck
(2)REPEAT
(3)将 S S S的每个对象 X i X_i Xi归入距中心最近的那个簇 C j C_j Cj
(4)重新计算每个簇 C j C_j Cj的中心,即每个簇中对象的平均值
(5)Until所有簇中心不再变化

2、计算实例

例10-2 设数据集 S = { ( 1 , 1 ) , ( 2 , 1 ) , ( 1 , 2 ) , ( 2 , 2 ) , ( 4 , 3 ) , ( 5 , 3 ) , ( 4 , 4 ) , ( 5 , 4 ) } S=\{(1,1), (2,1), (1,2), (2,2), (4,3), (5,3), (4,4), (5,4)\} S={(1,1),(2,1),(1,2),(2,2),(4,3),(5,3),(4,4),(5,4)},令 k = 2 k=2 k=2, 试用k-平均算法将 X X X 划分为 k k k 个簇。

在这里插入图片描述
:数据集 S S S 可表示为一张二维表;而每个对象在平面上的相对位置可用下图所示:

在这里插入图片描述
因为 k = 2 k=2 k=2,故 S S S 的聚类 C = { C 1 , C 2 } C=\{C_1,C_2\} C={C1,C2},由k-平均算法得循环计算如下:

(1)初始步:任选 X 1 = ( 1 , 1 ) , X 3 = ( 1 , 2 ) X_1=(1,1), X_3=(1,2) X1=(1,1),X3=(1,2) 分别作为簇的中心,即 C 1 = { X 1 } C_1=\{X_1\} C1={X1} C 2 = { X 3 } C_2=\{X_3\} C2={X3}

(2)第一轮循环。
注意到 X 1 , X 3 X_1,X_3 X1,X3 已分配到 C 1 C_1 C1 C 2 C_2 C2,因此
① 计算 X 2 X_2 X2 的归属:因为 d ( X 2 , X 1 ) 2 = 1 , d ( X 2 , X 3 ) 2 = 2 d(X_2,X_1)^2= 1, d(X_2,X_3)^2=2 d(X2,X1)2=1,d(X2,X3)2=2 1 < 2 1< 2 1<2;所以 X 2 X_2 X2 X 1 X_1 X1 代表的簇,即 C 1 = { X 1 , X 2 } , C 2 = { X 3 } C_1=\{X_1,X_2\}, C_2=\{X_3\} C1={X1,X2},C2={X3}
② 计算 X 4 X_4 X4 的归属:因为 d ( X 4 , X 1 ) 2 = 2 , d ( X 4 , X 3 ) 2 = 1 d(X_4,X_1)^2= 2, d(X_4,X_3)^2=1 d(X4,X1)2=2,d(X4,X3)2=1 2 > 1 2>1 2>1;所以 X 4 X_4 X4 X 3 X_3 X3 代表的簇,即 C 1 = { X 1 , X 2 } , C 2 = { X 3 , X 4 } C_1=\{X_1,X_2\}, C_2=\{X_3,X_4\} C1={X1,X2},C2={X3,X4}
③ 计算 X 5 X_5 X5 的归属:因为 d ( X 5 , X 1 ) 2 = 13 , d ( X 5 , X 3 ) 2 = 10 d(X_5,X_1)^2=13, d(X_5,X_3)^2=10 d(X5,X1)2=13,d(X5,X3)2=10 13 > 10 13>10 13>10;所以 X 5 X_5 X5 X 3 X_3 X3 代表的簇, 即 C 1 = { X 1 , X 2 } , C 2 = { X 3 , X 4 , X 5 } C_1=\{X_1,X_2\}, C_2=\{X_3,X_4,X_5\} C1={X1,X2},C2={X3,X4,X5}
④ 同理 X 6 , X 7 , X 8 X_6, X_7, X_8 X6,X7,X8 也归入 X 3 X_3 X3 代表的簇,故得初始簇为
C 1 = { X 1 , X 2 } , C 2 = { X 3 , X 4 , X 5 , X 6 , X 7 , X 8 } C_1=\{X_1,X_2\},C_2=\{X_3,X_4,X_5,X_6,X_7,X_8\} C1={X1,X2}C2={X3,X4,X5,X6,X7,X8} ⑤ 重新计算得 C 1 C_1 C1 C 2 C_2 C2 的中心点分别是 X ‾ 1 = ( 1.5 , 1 ) , X ‾ 2 = ( 3.5 , 3 ) \overline{X}_1=(1.5,1),\overline{X}_2=(3.5,3) X1=(1.5,1)X2=(3.5,3)

(3)第二轮循环。
分别将 X 1 , X 2 , ⋯ , X 8 X_1, X_2,\cdots,X_8 X1,X2,,X8 别分配到最近的中心点 X ‾ 1 \overline{X}_1 X1 X ‾ 2 \overline{X}_2 X2
类似第一轮计算可得 S S S 的两个簇 C 1 = { X 1 , X 2 , X 3 , X 4 } , C 2 = { X 5 , X 6 , X 7 , X 8 } C_1=\{X_1,X_2,X_3,X_4\},C_2=\{X_5,X_6,X_7,X_8\} C1={X1,X2,X3,X4}C2={X5,X6,X7,X8} 计算得 C 1 C_1 C1 C 2 C_2 C2 的中心点分别是 X ‾ 1 = ( 1.5 , 1.5 ) , X ‾ 2 = ( 4.5 , 3.5 ) \overline{X}_1=(1.5,1.5),\overline{X}_2=(4.5,3.5) X1=(1.5,1.5)X2=(4.5,3.5)

(4)第三轮循环。
分别将 X 1 , X 2 , ⋯ , X 8 X_1, X_2,\cdots,X_8 X1,X2,,X8 分配给最近的中心点 X ‾ 1 \overline{X}_1 X1 X ‾ 2 \overline{X}_2 X2
类似第二轮循环的计算,最终可得 S S S 的两个簇
C 1 = { X 1 , X 2 , X 3 , X 4 } , C 2 = { X 5 , X 6 , X 7 , X 8 } C_1=\{X_1,X_2,X_3,X_4\},C_2=\{X_5,X_6,X_7,X_8\} C1={X1,X2,X3,X4}C2={X5,X6,X7,X8} 重新计算得 C 1 C_1 C1 C 2 C_2 C2 的中心点分别是 X ‾ 1 = ( 1.5 , 1.5 ) , X ‾ 2 = ( 4.5 , 3.5 ) \overline{X}_1=(1.5,1.5),\overline{X}_2=(4.5,3.5) X1=(1.5,1.5)X2=(4.5,3.5)

由于簇中心已没有变化,因此算法停止,并输出 S S S 的聚类
C = { C 1 , C 2 } = { { X 1 , X 2 , X 3 , X 4 } , X 5 , X 6 , X 7 , X 8 } } C=\{C_1,C_2\}=\{\{X_1,X_2,X_3,X_4\}, X_5,X_6,X_7,X_8\}\} C={C1,C2}={{X1,X2,X3,X4},X5,X6,X7,X8}} 思考:若在此例中指定 k = 3 k=3 k=3,而初始点选择为 X 1 , X 2 , X 3 X_1, X_2, X_3 X1,X2,X3 X 1 , X 5 , X 6 X_1, X_5, X_6 X1,X5,X6,其结果会有啥差异。

3、算法分析说明

1)算法的优点

① k-平均算法简单、经典,常作为其它聚类算法的参照或被改进。
② k-平均算法以 k k k个簇的误差平方和最小为目标,当聚类的每个簇是密集的,且簇与簇之间区别明显时,其聚类效果较好。
③ k-平均算法处理大数据集高效,且具较好的可伸缩性,其计算复杂性为 O ( n × k × t ) O(n\times k\times t) O(n×k×t) n n n是数据对象个数, k k k为簇个数, t t t是迭代次数。

2)算法的缺点

① k-平均算法对初始中心点的选择比较敏感。对同一个数据集,如果初始中心选择不同,其聚类结果也可能不一样。
② k-平均算法对参数 k k k是比较敏感的,即使是同一个数据集,如果 k k k选择不同,其聚类结果可能完全不一样。
③ k-平均算法以簇内对象的平均值作为簇中心来计算簇内误差,在连续属性的数据集上很容易实现,但在具有离散属性的数据集上却不能适用。

(四)空簇与离群点

1、空簇问题

  基本k-平均算法在实际计算中可能出现的空簇现象,导致算法下一轮循环无法进行。

在这里插入图片描述
例10-3 假设 S S S 由表10-3给出,即 S S S 为二维平面上7个点的数据集。令 k = 3 k=3 k=3,请用k-平均算法将 S S S 聚类成3个簇。

:数据集 S S S 在平面上的相对位置如下图所示。

在这里插入图片描述
(1)初始步:选择 X 1 , X 6 , X 7 X_1,X_6,X_7 X1,X6,X7 作为初始中心,并将它们分别指派给三个簇,即得 C 1 = { X 1 } , C 2 = { X 6 } , C 3 = { X 7 } C_1=\{X_1\},C_2=\{X_6\}, C_3=\{X_7\} C1={X1},C2={X6},C3={X7}

(2)第一次迭代
计算 X 2 , X 3 , X 4 , X 5 X_2,X_3,X_4,X_5 X2,X3,X4,X5 与中心点 X ‾ 1 = ( 0 , 0 ) , X ‾ 2 = ( 7 , 3 ) , X ‾ 3 = ( 8 , 2 ) \overline{X}_1=(0,0),\overline{X}_2=(7,3),\overline{X}_3=(8,2) X1=(0,0),X2=(7,3),X3=(8,2) 的距离平方
在这里插入图片描述
将它们指派给距离平方最近的中心点,可得3个簇
C 1 = { X 1 , X 2 , X 3 , X 4 } , C 2 = { X 5 , X 6 } , C 3 = { X 7 } C_1=\{ X_1, X_2, X_3, X_4\},C_2=\{X_5,X_6\},C_3=\{X_7\} C1={X1,X2,X3,X4}C2={X5,X6}C3={X7} 计算得簇 C 1 , C 2 , C 3 C_1,C_2, C_3 C1,C2,C3 新的中心点为 X ‾ 1 = ( 1.5 , 2.25 ) , X ‾ 2 = ( 5 , 3 ) , X ‾ 3 = ( 8 , 2 ) \overline{X}_1=(1.5,2.25),\overline{X}_2=(5,3),\overline{X}_3=(8,2) X1=(1.5,2.25)X2=(5,3)X3=(8,2)

(3)第二次迭代
计算 X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 X_1,X_2,X_3,X_4,X_5,X_6,X_7 X1,X2,X3,X4,X5,X6,X7 与3个新中心点的距离
在这里插入图片描述
X 1 , X 2 , X 3 , X 4 , X 5 , X 6 , X 7 X_1,X_2,X_3,X_4,X_5,X_6,X_7 X1,X2,X3,X4,X5,X6,X7 指派给距离平方和最小的中心点,可得
C 1 = { X 1 , X 2 , X 3 , X 4 , X 5 } , C 2 = ∅ , C 3 = { X 6 , X 7 } C_1=\{X_1, X_2, X_3, X_4, X_5\},C_2=\varnothing,C_3=\{X_6 ,X_7\} C1={X1,X2,X3,X4,X5}C2=C3={X6,X7} 这时 C 2 C_2 C2 就是一个空簇,因此没有簇的中心点,导致下一步计算无法进行。有以下两种策略来选择一个替补的中心。
(1)选择一个距离当前任何质心最远的点,并可消除当前对总平方误差影响最大的点。
(2)从具有最大 w ( C i ) w(C_i) w(Ci) 的簇中选择一个替补质心,并对该簇进行分裂簇,以此降低聚类的 w ( C ) w(C) w(C)

2、离群点问题

  k-平均算法使用误差平方和 w ( C ) w(C) w(C) 作为优化目标时,离群点可能过度影响所发现的簇质量,即当存在离群点时,聚类结果簇的质心可能不如没有离群点时那样具有代表性,并且 w ( C ) w(C) w(C) 也比较高。此例 X 1 X_1 X1 就是明显的离群点。因此,如果能够提前发现离群点并删除它们,在k-平均算法的聚类应用中常常是有用的。
在有些实际应用中,如股票市场交易分析,一些明显的离群点 (股票黑马) 恰恰可能是最令人感兴趣的。

(五)k-中心点算法

  为降低k-平均算法对噪声数据的敏感性,k-中心点 (k-medoids) 算法不采用簇的平均值 (通常不是簇中的对象,称为虚拟点) 作为簇中心点,而是选择簇中一个离平均值最近的具体对象作为簇中心。

1、算法原理

  k-中心点算法选择一个簇中位置距平均值点最近的对象替换k-平均算法的平均值中心点。首先为每个簇随机选择一个代表对象作中心点,其余对象 (非中心点) 分配给最近的代表对象所在的簇。然后反复地用一个用非代表对象替换一个代表对象,使其聚类质量更高 (用某种代价函数评估),直到聚类质量无法提高为止。
  设 S = { X 1 , X 2 , X 3 , ⋯ , X n } S=\{X_1,X_2,X_3,\cdots,X_n\} S={X1,X2,X3,,Xn},任选 k k k 个对象 O i ( i = 1 , 2 , ⋯ , k ) O_i(i=1,2,\cdots,k) Oi(i=1,2,,k) 作为中心点,记作中心点集 O = { O 1 , O 2 , ⋯ , O k } O=\{O_1, O_2,\cdots, O_k\} O={O1,O2,,Ok},其余 n − k n-k nk 个对象称为非中心点,记作非中心点集 Q = { Q 1 , ⋯ , Q r , ⋯ , O n − k } ( S = O ∪ Q ) Q=\{Q_1, \cdots, Q_r,\cdots, O_{n-k}\}(S=O\cup Q) Q={Q1,,Qr,,Onk}(S=OQ),并将它们分配给最近的中心点,并得聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1, C_2, \cdots,C_k\} C={C1,C2,,Ck},其中 C i C_i Ci 的中心点为 O i ( i = 1 , 2 , ⋯ , k ) O_i(i=1,2, \cdots,k) Oi(i=1,2,,k)
  然后计算用一个非中心点 Q r Q_r Qr 去替换每一个中心点 O i ( i = 1 , 2 , ⋯ , k ) O_i(i=1,2,\cdots,k) Oi(i=1,2,,k) 的代价 E i r E_{ir} Eir,找出代价最小且为负数对应的替代方案。若中心点 O i O_i Oi 被一个非中心点 Q r Q_r Qr 替换,就得到新的中心点集合 O = { O 1 , ⋯ , O i − 1 , Q r , O i + 1 , ⋯ , O k } O=\{O_1, \cdots,O_{i-1}, Q_r,O_{i+1}, \cdots, O_k\} O={O1,,Oi1,Qr,Oi+1,,Ok},则可能引起 S S S 中每个对象 X j X_j Xj 到新中心点的距离变化,将这种变化之和称为代价,记作
E i r = ∑ j = 1 n W j i r (10-19) E_{ir}=\sum_{j=1}^nW_{jir}\tag{10-19} Eir=j=1nWjir(10-19) 其中 W j i r W_{jir} Wjir 表示 X j X_j Xj O i O_i Oi Q r Q_r Qr 替换后产生的代价,用替换前后 X j X_j Xj 到中心点距离之差表示,且 W j i r W_{jir} Wjir 的值因 X j ( j = 1 , 2 , ⋯ , n ) X_j (j=1,2,\cdots,n) Xj(j=1,2,,n) 原先是否在 O i O_i Oi 代表的簇中而对应不同的计算方法。

(1)若 X j X_j Xj 原先属于 O i O_i Oi 的簇 C i C_i Ci,则有两种情况。
X j X_j Xj 现在离某中心点 O m ( m ≠ i ) O_m(m≠i) Om(m=i) 最近 (图10-11a),则 X j X_j Xj 被重新分到 O m O_m Om 的簇,其代价
W j i r = d ( X j , O m ) − d ( X j , O i ) W_{jir}=d(X_j,O_m)-d(X_j,O_i) Wjir=d(Xj,Om)d(Xj,Oi)在这里插入图片描述
X j X_j Xj 现在离新中心点 Q r Q_r Qr 最近 (图10-11b),则 X j X_j Xj 被重新分配到 Q r Q_r Qr 的簇中, 其代价
C j i r = d ( X j , Q r ) − d ( X j , O i ) C_{jir}=d(X_j,Q_r)-d(X_j,O_i) Cjir=d(Xj,Qr)d(Xj,Oi)在这里插入图片描述
(2)若 X j X_j Xj 原先属于某中心点 O m O_m Om 的簇 C m ( m ≠ i ) C_m(m≠i) Cm(m=i),也有两种情况
X j X_j Xj 现在离中心点 O m O_m Om 仍然最近 (图10-12a),则 X j X_j Xj 保留在 O m O_m Om 的簇中,其代价
W j i r = 0 W_{jir}=0 Wjir=0在这里插入图片描述
X j X_j Xj 现在离新中心点 Q r Q_r Qr 最近 (图10-12b),则将 X j X_j Xj 重新分配到 Q r Q_r Qr 的簇中,其代价
W j i r = d ( X j , Q r ) − d ( X j , O m ) W_{jir}=d(X_j,Q_r)-d(X_j,O_m) Wjir=d(Xj,Qr)d(Xj,Om)在这里插入图片描述
  由于中心点有 k k k 个,非中心点有 n − k n-k nk 个,因此,中心点 O i O_i Oi 被一个非中心点 Q r Q_r Qr 替换就有 ( n − k ) × k (n-k)\times k (nk)×k 个不同的方案及其对应的代价。
  如果 E i h = m i n { E i r ∣ i = 1 , 2 , ⋯ , k ; r = 1 , 2 , ⋯ , n − k ) } E_{ih}=min\{E_{ir} | i=1,2,\cdots,k;r=1,2,\cdots,n-k)\} Eih=min{Eiri=1,2,,kr=1,2,,nk)} E i h < 0 E_{ih}<0 Eih<0,则将中心点 O i O_i Oi 用非中心点 Q h Q_h Qh 替换,使 S S S 中每个点到新中心点的距离之和减少,即提高了聚类的总体质量。
  在得到新的中心点集之后,计算得到新的聚类,然后继续寻找可替换的中心点,直到中心点集没有变化为止。

2、算法描述

算法10-4 k-中心点聚类算法
输入:簇的个数 k k k和数据集 S = { X 1 , X 2 , ⋯ , X n } S=\{X_1,X_2,\cdots,X_n\} S={X1,X2,,Xn}
输出:低价最小的聚类 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck}
(1)从 S S S中随机选 k k k个对象作为中心点集 O = { O 1 , O 2 , ⋯ , O k } O=\{O_1,O_2,\cdots,O_k\} O={O1,O2,,Ok}
(2)REPEAT
(3)将所有非中心点分配给离它最近的中心点,并得聚类 C C C
(4)FOR i = 1 , 2 , ⋯ , k i=1,2,\cdots,k i=1,2,,k
(5)  FOR r = 1 , 2 , ⋯ , n − k r=1,2,\cdots,n-k r=1,2,,nk
(6)  计算 S S S中每个 X j X_j Xj因中心点 O i O_i Oi被非中心点 Q r Q_r Qr替换后重新分配的代价 W j i r W_{jir} Wjir
(7)   E i r = W 1 i r + W 2 i r + ⋯ + W n i r E_{ir}=W_{1ir}+W_{2ir}+\cdots+W_{nir} Eir=W1ir+W2ir++Wnir
(8)  END FOR
(9)END FOR
(10) E i h = min ⁡ { E i r ∣ i = 1 , 2 , ⋯ , k ; r = 1 , 2 , ⋯ , n − k } E_{ih}=\min\{E_{ir}|i=1,2,\cdots,k; r=1,2,\cdots,n-k\} Eih=min{Eiri=1,2,,k;r=1,2,,nk}
(11)如果 E i h < 0 E_{ih}<0 Eih<0,则将 O i O_i Oi Q r Q_r Qr替换,得新中心点集 O = { O 1 , ⋯ , O i − 1 , Q r , O i + 1 , ⋯ , O k } O=\{O_1, \cdots,O_{i-1}, Q_r,O_{i+1}, \cdots, O_k\} O={O1,,Oi1,Qr,Oi+1,,Ok}
(12)UNTIL中心点集 O O O无需变化
(13)输出 C = { C 1 , C 2 , ⋯ , C k } C=\{C_1,C_2,\cdots,C_k\} C={C1,C2,,Ck}

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

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

相关文章

Java 有什么必看的书?

Java必看经典书有这两本&#xff1a; 1、Java核心技术速学版&#xff08;第3版&#xff09; 经典Java开发基础书CoreJava速学版本&#xff01;Java入门优选书籍&#xff0c;更新至Java17&#xff0c;内容皆是精华&#xff0c;让Java学习更简单&#xff0c;让Java知识应用更快速…

【Linux】什么是进程间通信?方式有哪些?本质理解?

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

NoSQL 之 Redis 集群部署

前言&#xff1a; &#xff08;1&#xff09;主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用 的。主从复制主要实现了数据的多机备份&#xff0c;以及对于读操作的负载均衡和简单的故障恢复。缺陷&#xff1a; 故障…

vue3+antd 实现文件夹目录右键菜单功能

原本的目录结构&#xff1a; 右键菜单&#xff1a; 点击菜单以后会触发回调&#xff1a; 完整的前端代码&#xff1a; <template><a-directory-treev-model:expandedKeys"expandedKeys"v-model:selectedKeys"selectedKeys"multipleshow-li…

在 Docker 容器中运行 Vite 开发环境,有这两个问题要注意

容器化开发给我们带来了很多便捷&#xff0c;但是在开发环境下也有一些问题要注意&#xff0c;如果不解决这些问题&#xff0c;你的开发体验不会很好。 容器启动正常&#xff0c;却无法访问 我们用 Docker 启动一个 Vite Vue3 项目的开发环境后&#xff0c;发现端口日志一切…

计算机如何存储浮点数

浮点数组成 在计算机中浮点数通常由三部分组成&#xff1a;符号位、指数位、尾数位。IEEE-754中32位浮点数如下&#xff1a; 上图32bit浮点数包含1bit的符号位&#xff0c;8比特的指数位和23bit的尾数位。对于一个常规浮点数&#xff0c;我们来看看它是如何存储和计算的。这里…

conda env pip install error:No space left on device

conda 环境 pip install error&#xff1a;No space left on device 文章目录 conda 环境 pip install error&#xff1a;No space left on device现象1 实验2 分析和解决办法 现象 非root用户的服务器&#xff0c;需要安装环境&#xff0c;安装的环境超过2GB sudo pip insta…

医疗机器人中的具身智能进展——自主超声策略模型的任务编码和局部探索

医疗机器人一直是具身智能的研究热点。医学图像、医疗触诊、血压血氧、心率脉搏和生物电信号等多模态生物医学信息&#xff0c;不断丰富着医疗机器人的感知范畴。 自主超声 “自主超声”属于具身智能医疗机器人领域中话题度较高的研究方向。作为临床检查的重要手段之一&#…

线性系统理论及应用GUI设计及仿真

目录 1.控制系统的状态空间模型 1.1.状态空间模型 1.2 传递函数模型 1.3 传递函数转换为状态空间模型 1.4.状态空间模型转换为传递函数 1.5.状态空间模型转化为约当标准型 2.线性系统的时域分析 2.1.矩阵指数函数的计算 2.2.线型定常连续系统的状态空间模型求解 3.线…

ubuntu24.04按关键字卸载不需要的apt包

使用的时候发现一个imagemagic无法正常读取文件&#xff0c;试图卸载 man apt经过尝试后&#xff0c;发现list的一个神奇关键字&#xff0c;用来显示已安装的软件包 sudo apt list --installed | grep image按image关键字过滤&#xff1a; 之后按软件名卸载即可 sudo apt pu…

开关电源——调制模式和工作模式

一、开关电源的调制模式 开关电源作为一种广泛应用于电子设备中&#xff0c;用于将一定电压和电流转换为另一种电压和电流的技术&#xff0c;以下是开关电源三种常见的调制模式&#xff1a; 脉冲宽度调制&#xff08;Pulse Width Modulation&#xff09; 脉冲频率调制&#xff…

高德地图 key 和安全密钥使用

参考高德地图&#xff1a;JS API 安全密钥使用 高德地图 key 和安全密钥使用 一、通过明文方式设置参数查看如下成功后返回的信息 二、通过代理服务器转发实验&#xff1a;通过本地地址转发返回错的错误信息&#xff0c;如下通过正确的项目的的服务地址&#xff0c;返回正常参数…

【VUE基础】VUE3第一节—vite创建vue3工程

什么是VUE Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0…

Java+MySQL8.0.36+ElementUI数字化产科信息管理系统之”五色管理”

JavaMySQL8.0.36ElementUI数字化产科信息管理系统之”五色管理” 一、数字化产科信息管理系统概述 数字化产科信息管理五色管理是一种基于孕产妇妊娠风险的分类管理方法&#xff0c;通过数字化手段实现孕产妇全周期的健康风险评估与管理。该方法将孕产妇按照风险等级分为绿色、…

DC-DC充放电原理

文章目录 前言1. 电子器件1.1 电容1.2 电感 2. 升压电路3. 降压电路4. 电压均衡电路4.1 被动均衡4.2 主动均衡 5. 我的疑问5.1 对于升压电路&#xff0c;怎么设计升压到多少V后&#xff0c;停止升压&#xff1f;5.2 什么是等效电阻&#xff1f;5.3 快充是如何实现的&#xff1f…

LightGlue: Local Feature Matching at Light Speed【文献阅读】

论文&#xff1a;LightGlue: Local Feature Matching at Light Speed 代码&#xff1a;https://github.com/cvg/LightGlue 作者&#xff1a;1 ETH Zurich__2 Microsoft Mixed Reality & AI Lab Abstract 提出的LightGlue是一个深度神经网络用于学习图像间的局部特征匹配。…

WAIC | 上海人形机器人创新中心 | 最新演讲 | 详细整理

前言 笔者看了7月4号的人形机器人与具身智能发展论坛的直播&#xff0c;并在7月5日到了上海WAIC展会现场参观。这次大会的举办很有意义&#xff0c;听并看了各家的最新成果&#xff0c;拍了很多照片视频&#xff0c;部分演讲也录屏了在重复观看学习 稍后会相继整理创立穹彻智…

算法系列--分治排序|归并排序|逆序对的求解

一.基本概念与实现 归并排序(mergeSort)也是基于分治思想的一种排序方式,思路如下: 分解:根据中间下标mid将数组分解为两部分解决:不断执行上述分解过程,当分解到只有一个元素时,停止分解,此时就是有序的合并:合并两个有序的子区间,所有子区间合并的结果就是原问题的解 归并…

第一节 网络安全概述

一.网络空间安全 网络空间&#xff1a;一个由信息基础设施组成相互依赖的网络。 ---- 海陆空天&#xff08;大海、陆 地、天空、航天&#xff09; 通信保密阶段 ---- 计算机安全 ----- 信息系统安全 ----- 网络空间安全 计算机安全&#xff1a;开始秉持着“严于律己&#x…

C语言 指针和数组—指针数组及其在字符串处理中的应用

目录 问题的提出 问题的解决 回头看——指针、数组及其他类型的混合 指针数组与指向数组的指针 字符串的排序 问题的提出 问题的解决 回头看——指针、数组及其他类型的混合  基本数据类型  int 、 long 、 char 、 short 、 float 、 double……  数组是一种从…