成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聚類算法指南及 Python 實現

開發
聚類是任何數據科學家必備的技能集,因為它對現實世界問題的實用性和靈活性。本文概述了聚類和不同類型的聚類算法。

聚類是任何數據科學家必備的技能集,因為它對現實世界問題的實用性和靈活性。本文概述了聚類和不同類型的聚類算法。

什么是聚類?

聚類是一種流行的無監督學習技術,旨在根據對象或觀測值之間的相似性將它們分組。聚類有許多有用的應用,如市場細分、推薦系統、探索性分析等。

雖然聚類是數據科學領域眾所周知且廣泛使用的技術,但有些人可能不了解不同類型的聚類算法。雖然只有少數幾種,但理解這些算法及其工作原理對于獲得最佳結果至關重要。

基于質心的聚類

當談到聚類時,大多數人想到的是基于質心的聚類。這是通過使用定義好的質心(中心)數量,根據數據點到每個質心的距離來對數據點進行分組的“傳統”方式。質心最終成為其分配的數據點的均值。雖然基于質心的聚類功能強大,但它對異常值不魯棒,因為異常值需要被分配到某個簇中。

K-Means

K-Means是最廣泛使用的聚類算法,很可能是你作為數據科學家首先學習的第一個算法。如上所述,目標是最小化數據點與聚類質心之間的距離之和,以確定每個數據點應該屬于的正確組。它的工作原理如下:

  • 在未標記數據的向量空間中隨機放置定義好的質心數量(初始化)。
  • 每個數據點測量自己到每個質心的距離(通常使用歐幾里得距離),并將自己分配給最近的質心。
  • 質心重新定位到其分配的數據點的均值。
  • 重復步驟2-3,直到產生“最優”聚類。

from sklearn.cluster import KMeans
import numpy as np

#sample data
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])

#create k-means model
kmeans = KMeans(n_clusters = 2, random_state = 0, n_init = "auto").fit(X)

#print the results, use to predict, and print centers
kmeans.labels_
kmeans.predict([[0, 0], [12, 3]])
kmeans.cluster_centers_

K-Means ++

K-Means ++是對K-Means初始化步驟的改進。由于質心是隨機放置的,因此有可能多個質心可能會初始化到同一個聚類中,導致結果不佳。

然而,K-Means ++通過隨機分配第一個質心來解決這個問題,這個質心最終將找到最大的聚類。然后,其他質心被放置在初始聚類一定距離之外。K-Means ++的目標是盡可能將質心彼此推得盡可能遠。這會產生高質量、獨特且定義明確的聚類。

from sklearn.cluster import KMeans
import numpy as np

#sample data
X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])

#create k-means model
kmeans = KMeans(n_clusters = 2, random_state = 0, n_init = "k-means++").fit(X)

#print the results, use to predict, and print centers
kmeans.labels_
kmeans.predict([[0, 0], [12, 3]])
kmeans.cluster_centers_

基于密度的聚類

基于密度的算法也是一種流行的聚類形式。然而,它們不是從隨機放置的質心測量,而是通過識別數據中的高密度區域來創建聚類。基于密度的算法不需要定義聚類的數量,因此優化工作較少。

雖然基于質心的算法在球形聚類中表現更好,但基于密度的算法可以采取任意形狀,更加靈活。它們也不將異常值包含在聚類中,因此是魯棒的。然而,它們可能難以處理密度不一和高維數據。

DBSCAN

DBSCAN是最受歡迎的基于密度的算法。DBSCAN的工作原理如下:

  • DBSCAN隨機選擇一個數據點,并檢查它在指定半徑內是否有足夠的鄰居。
  • 如果該點有足夠的鄰居,它被標記為聚類的一部分。
  • DBSCAN遞歸檢查鄰居是否也在半徑內有足夠的鄰居,直到聚類中的所有點都被訪問過。
  • 重復步驟1-3,直到剩余的數據點在半徑內沒有足夠的鄰居。
  • 剩余的數據點被標記為異常值。
from sklearn.cluster import DBSCAN
import numpy as np

#sample data
X = np.array([[1, 2], [2, 2], [2, 3],
              [8, 7], [8, 8], [25, 80]])

#create model
clustering = DBSCAN(eps=3, min_samples=2).fit(X)

#print results
clustering.labels_

層次聚類

接下來,我們有層次聚類。這種方法首先從原始數據計算距離矩陣。這個距離矩陣最好通過樹狀圖(見下文)來可視化。數據點通過找到最近的鄰居一個接一個地連接在一起,最終形成一個巨大的聚類。因此,通過停止所有數據點的連接來識別聚類的截止點。

通過使用這種方法,數據科學家可以通過定義異常值并在其他聚類中排除它們來構建一個魯棒的模型。這種方法非常適合層次數據,如分類學。聚類的數量取決于深度參數,可以從1-n。

from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.cluster import AgglomerativeClustering
from scipy.cluster.hierarchy import fcluster

#create distance matrix
linkage_data = linkage(data, method = 'ward', metric = 'euclidean', optimal_ordering = True)

#view dendrogram
dendrogram(linkage_data)
plt.title('Hierarchical Clustering Dendrogram') 
plt.xlabel('Data point') 
plt.ylabel('Distance') 
plt.show()

#assign depth and clusters
clusters = fcluster(linkage_data, 2.5, criterion = 'inconsistent', depth = 5)

基于分布的聚類

最后,基于分布的聚類考慮了除距離和密度之外的另一種度量,即概率。基于分布的聚類假設數據由概率分布組成,如正態分布。算法創建代表置信區間的“帶”。一個數據點離聚類中心越遠,我們就越不確定該數據點屬于該聚類。

由于它所做的假設,基于分布的聚類很難實現。除非已經進行了嚴格的分析來確認其結果,否則通常不建議使用。例如,使用它來識別營銷數據集中的客戶細分,并確認這些細分遵循分布。這也是一種很好的探索性分析方法,不僅可以了解聚類的中心由什么組成,還可以了解邊緣和異常值。

結論

聚類是一種無監督機器學習技術,在許多領域具有日益增長的實用性。它可以用于支持數據分析、細分項目、推薦系統等。在上面,我們已經探討了它們的工作原理、優缺點、代碼示例,甚至一些用例。我認為,由于聚類算法的實用性和靈活性,數據科學家必須具備聚類算法的經驗。

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2020-07-09 15:26:18

Python聚類算法語言

2018-05-28 15:33:09

無監督學習算法Python

2017-05-15 11:10:10

大數據聚類算法

2025-05-22 10:06:49

2022-07-29 10:31:33

算法Python

2023-10-31 09:00:00

2022-05-17 09:14:50

聚類算法python

2020-05-13 15:57:59

聚類分析算法監督學習

2014-07-02 10:34:08

聚類算法算法

2011-07-25 15:39:49

SQL SERVER數聚類算法順序聚類算法

2011-07-26 10:16:14

SQL Server數據挖掘

2025-01-16 07:10:00

2023-04-02 14:16:45

凸集算法集合

2023-05-10 08:00:00

聚類分析數據分析聚類算法

2019-10-12 10:11:02

數據集聚類算法

2017-04-05 09:20:14

聚類算法機器學習大數據

2017-04-07 13:00:49

機器學習大數據聚類算法

2023-12-01 16:27:05

機器學習無監督學習

2021-03-04 07:24:28

排序算法優化

2022-03-03 19:52:25

聚類算法D2CDBSCAN
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线视频亚洲 | 国产日韩久久 | 久久在线看 | 亚洲一区二区av | 成人午夜免费福利视频 | 国产 日韩 欧美 在线 | 伊人焦久影院 | 99精品视频免费观看 | 在线观看日韩av | 久久激情视频 | 国产成人午夜高潮毛片 | 日韩欧美在线播放 | 亚洲欧美在线观看 | 美女一区二区在线观看 | 日韩在线中文字幕 | 日韩欧美国产电影 | 国产精品日韩一区二区 | 狠狠狠| 久久一区二区三区免费 | 精品国产不卡一区二区三区 | 国产一级淫片免费视频 | 亚洲视频免费在线观看 | 在线日韩在线 | 丁香久久 | 天天操天天射天天舔 | 欧美 日韩精品 | av毛片 | 亚洲精品一区二区在线观看 | 欧美精品一区二区三区四区五区 | 91资源在线 | 亚洲 欧美 日韩 在线 | 欧美一区二区免费 | 国产精品视频 | 密色视频 | 人人九九| 超碰在线免费av | 91精品久久久久久久久 | 人人草人人干 | 欧美一区二区三区四区视频 | 国产成人综合在线 | 欧美11一13sex性hd|