<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      你的聚類模型靠譜嗎?5大外部指標徹底揭秘

      在聚類分析中,我們常常需要評估聚類結果的質量。

      外部指標是一種通過與已知的“真實標簽”進行比較來評估聚類性能的方法。

      這些指標可以幫助我們判斷聚類算法是否能夠準確地將數據劃分為有意義的類別。

      本文將介紹幾種常見的外部指標,包括 Jaccard 系數FM 指數Rand 指數DB 指數Dunn 指數,并通過代碼示例展示如何基于scikit-learn庫來計算它們。

      1. Jaccard系數

      Jaccard 系數是一種衡量兩個集合相似度的指標,在聚類評估中,它用于比較聚類結果與真實標簽之間的相似性。

      具體來說,Jaccard 系數定義為兩個集合的交集大小與并集大小的比值。

      對于聚類結果,它關注的是每個類別內部的樣本是否正確劃分。

      假設我們有兩個集合$ A \(和\) B \(,**Jaccard 系數**\) J $可以表示為:

      $ J(A,B)=\frac{|A\cap B|}{|A\cup B|} $

      在聚類評估中,我們通常計算所有類別對的** Jaccard 系數平均值**,以得到整體的相似度。

      Jaccard 系數scikit-learn庫中已經封裝好,使用方式如下:

      from sklearn.metrics import jaccard_score
      import numpy as np
      
      # 真實標簽和聚類結果
      true_labels = np.array([0, 0, 1, 1, 2, 2])
      predicted_labels = np.array([0, 0, 1, 1, 2, 2])
      
      # 計算 Jaccard 系數
      jaccard = jaccard_score(true_labels, predicted_labels, average="macro")
      print("Jaccard 系數:", jaccard)
      

      可以調節上面的true_labelspredicted_labels,試試不同的計算結果。

      2. FM(Fowlkes-Mallows)指數

      FM 指數是一種綜合考慮了真正例TP)、假正例FP)和假負例FN)的指標。

      它通過計算精確率Precision)和召回率Recall)的幾何平均值來衡量聚類結果的質量。

      具體公式如下:

      $ \text{FM}=\sqrt{\frac{TP}{TP+FP}\times\frac{TP}{TP+FN}} $

      其中:

      • $ TP $是正確分類的樣本對數。
      • $ FP $是錯誤分類為同一類的樣本對數。
      • $ FN $是應該在同一類但被分類到不同類的樣本對數。

      FM 系數scikit-learn庫中已經封裝好,使用方式如下:

      from sklearn.metrics import fowlkes_mallows_score
      
      # 真實標簽和聚類結果
      true_labels = np.array([0, 0, 1, 1, 2, 2])
      predicted_labels = np.array([0, 0, 1, 1, 2, 2])
      
      # 計算 FM 指數
      fm = fowlkes_mallows_score(true_labels, predicted_labels)
      print("FM 指數:", fm)
      

      3. Rand指數

      Rand 指數是一種衡量聚類結果與真實標簽一致性的指標,它通過計算樣本對的分類一致性來評估聚類質量。

      具體來說,Rand 指數定義為:

      $ \text{Rand}=\frac{TP+TN}{TP+TN+FP+FN} $

      其中:

      • $ TP $是正確分類為同一類的樣本對數。
      • $ TN $是正確分類為不同類的樣本對數。
      • $ FP $是錯誤分類為同一類的樣本對數。
      • $ FN $是應該在同一類但被分類到不同類的樣本對數。

      Rand 指數scikit-learn庫中已經封裝好,使用方式如下:

      from sklearn.metrics import rand_score
      
      # 真實標簽和聚類結果
      true_labels = np.array([0, 0, 1, 1, 2, 2])
      predicted_labels = np.array([0, 0, 1, 1, 2, 2])
      
      # 計算 Rand 指數
      rand = rand_score(true_labels, predicted_labels)
      print("Rand 指數:", rand)
      

      4. DB(Davies-Bouldin)指數

      DB 指數是一種衡量聚類結果內部一致性的指標,但它也可以用于外部評估。

      DB 指數通過比較每個類別的緊致性和分離性來評估聚類質量。

      具體來說,DB 指數定義為:

      $ \text{DB}=\frac{1}{k}\sum_{i=1}^{k}\max_{j\neq i}\left(\frac{\sigma_i+\sigma_j}{d(c_i,c_j)}\right) $

      其中:

      • $ k $是類別數量。
      • $ \sigma_i \(是類別\) i $的平均距離。
      • $ c_i \(是類別\) i $的中心。
      • $ d(c_i,c_j) \(是類別\) i \(和類別\) j $中心之間的距離。

      DB 指數越小,表示聚類結果越好。


      DB 指數scikit-learn庫中已經封裝好,使用方式如下:

      from sklearn.metrics import davies_bouldin_score
      from sklearn.cluster import KMeans
      import numpy as np
      
      # 生成數據
      X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
      
      # 使用 KMeans 進行聚類
      kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
      predicted_labels = kmeans.labels_
      
      # 計算 DB 指數
      db = davies_bouldin_score(X, predicted_labels)
      print("DB 指數:", db)
      

      5. Dunn指數

      Dunn 指數是一種衡量聚類結果分離性和緊致性的指標。

      它通過計算類內距離的最小值與類間距離的最大值的比值來評估聚類質量。

      具體來說,Dunn 指數定義為:

      $ \text{Dunn}=\frac{\min_{i\neq j}d(c_i,c_j)}{\max_i\delta(c_i)} $

      其中:

      • $ d(c_i,c_j) \(是類別\) i \(和類別\) j $中心之間的距離。
      • $ \delta(c_i) \(是類別\) i $內部的最大距離。

      Dunn 指數越大,表示聚類結果越好。

      Dunn 指數scikit-learn庫中沒有現成的函數,不過,根據它的公式封裝一個也很簡單:

      from sklearn.cluster import KMeans
      import numpy as np
      
      # 生成數據
      X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
      
      # 使用 KMeans 進行聚類
      kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
      predicted_labels = kmeans.labels_
      
      
      # 計算 Dunn 指數
      def dunn_index(X, labels):
          n_clusters = len(set(labels))
          inter_cluster_distances = []
          intra_cluster_distances = []
      
          for i in range(n_clusters):
              cluster_points = X[labels == i]
              intra_cluster_distances.append(
                  np.max(
                      np.linalg.norm(cluster_points - np.mean(cluster_points, axis=0), axis=1)
                  )
              )
              for j in range(i + 1, n_clusters):
                  other_cluster_points = X[labels == j]
                  inter_cluster_distances.append(
                      np.min(
                          np.linalg.norm(
                              cluster_points[:, np.newaxis] - other_cluster_points, axis=2
                          )
                      )
                  )
      
          return np.min(inter_cluster_distances) / np.max(intra_cluster_distances)
      
      
      # 計算 Dunn 指數
      dunn = dunn_index(X, predicted_labels)
      print("Dunn 指數:", dunn)
      

      6. 總結

      本文介紹了幾種常見的聚類性能外部評估指標,包括 Jaccard 系數FM 指數Rand 指數DB 指數Dunn 指數

      這些指標各有優缺點,適用于不同的場景,使用時,建議:

      1. 有真實標簽時:優先使用Adjusted Rand(平衡隨機性)
      2. 無真實標簽時:使用DBDunn
      3. 小規模數據:可計算所有指標綜合判斷

      通過靈活組合這些指標,可以全面評估聚類模型的表現!

      posted @ 2025-05-19 11:54  wang_yb  閱讀(583)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品av无码国产一区二区| 亚洲精品一区二区美女| 给我播放片在线观看| 国产一区二区不卡在线| 91精品久久一区二区三区| 国产成人不卡一区二区| 亚洲欧美日韩在线不卡| 皮山县| 久久精品熟女亚洲av麻| 久久亚洲国产品一区二区| 亚洲AV永久无码精品秋霞电影影院 | 久久综合色之久久综合| 无码人妻aⅴ一区二区三区蜜桃| 亚洲精品99久久久久久欧美版 | 4480yy亚洲午夜私人影院剧情| 97久久久亚洲综合久久| 9久9久热精品视频在线观看| 国产精品国产三级国AV| 泉州市| 人妻聚色窝窝人体WWW一区| 国产香蕉尹人综合在线观看| 久热中文字幕在线精品观| 狠狠色噜噜狠狠狠888米奇视频| 国产欧美日韩亚洲一区二区三区 | 亚洲精品亚洲人成人网| 亚洲成a人片77777kkkk| 中国CHINA体内裑精亚洲日本| 国产精品国产精品无卡区| 国产极品粉嫩福利姬萌白酱| 夜夜添无码试看一区二区三区 | 曰韩无码av一区二区免费| 国内揄拍国内精品对久久| 最新国产精品中文字幕| 综合久久国产九一剧情麻豆| 午夜男女爽爽影院在线| 国产午夜亚洲精品不卡网站| 国产成人高清亚洲综合| 日韩精品一区二区三区激情视频| 亚洲v欧美v国产v在线观看| 99久久国产宗和精品1上映| 国产亚洲精品久久综合阿香|