自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用聚類分析分割數(shù)據(jù)

譯文 精選
人工智能
聚類是一種無監(jiān)督學(xué)習(xí)任務(wù),涉及一系列廣泛的機(jī)器學(xué)習(xí)方法,假設(shè)數(shù)據(jù)未標(biāo)記或未先驗分類,旨在發(fā)現(xiàn)其底層的模式或洞察力。具體來說,聚類的目的是發(fā)現(xiàn)有相似特征或?qū)傩缘臄?shù)據(jù)觀測組。

譯者 | 布加迪

審校 | 重樓

本文揭示了聚類分析在分割、分析和洞察相似數(shù)據(jù)組方面具有的潛力。

機(jī)器學(xué)習(xí)不僅僅涉及做預(yù)測,還涉及其他無監(jiān)督過程,其中聚類尤為突出。本文介紹了聚類和聚類分析,著重表明了聚類分析在分割、分析和洞察相似數(shù)據(jù)組方面具有的潛力。

什么是聚類?

簡單來說,聚類就是將相似的數(shù)據(jù)項分組在一起,這好比在雜貨店里將相似的水果蔬菜擺放在一起。

不妨進(jìn)一步闡述這個概念:聚類是一種無監(jiān)督學(xué)習(xí)任務(wù),涉及一系列廣泛的機(jī)器學(xué)習(xí)方法,假設(shè)數(shù)據(jù)未標(biāo)記或未先驗分類,旨在發(fā)現(xiàn)其底層的模式或洞察力。具體來說,聚類的目的是發(fā)現(xiàn)有相似特征或?qū)傩缘臄?shù)據(jù)觀測組。

以下是聚類在眾多機(jī)器學(xué)習(xí)技術(shù)中所處的位置:

為了更好地理解聚類概念,不妨想想在超市中尋找有相似購物行為的客戶群,或者將電子商務(wù)門戶網(wǎng)站中的大量產(chǎn)品分門別類,這些是涉及聚類方法的真實場景的常見例子。

常見的聚類技術(shù)

數(shù)據(jù)聚類的方法有好多種,最流行的三種方法如下:

  • 迭代聚類:這些算法將數(shù)據(jù)點迭代分配(有時重新分配)給各自的聚類,直到它們收斂于一個“足夠好”的解決方案。最流行的迭代聚類算法是k-means,它通過將數(shù)據(jù)點分配給由代表性點(聚類中心)定義的聚類來進(jìn)行迭代,并逐漸更新聚類中心,直到實現(xiàn)收斂。
  • 分層聚類:顧名思義,這種算法使用自上而下的方法(分割一組數(shù)據(jù)點,直到擁有所需數(shù)量的子組)或自下而上的方法(將相似的數(shù)據(jù)點像氣泡一樣逐漸合并到越來越大的組中),構(gòu)建基于分層樹的結(jié)構(gòu)。AHC(聚合式分層聚類)是自下而上的分層聚類算法的常見例子。
  • 基于密度的聚類:這些方法識別數(shù)據(jù)點的高密度區(qū)域以形成聚類。DBSCAN(基于密度的噪聲應(yīng)用空間聚類)是屬于這一類的一種流行算法。

聚類和聚類分析一樣嗎?

  • 眼下最緊迫的問題可能是:聚類和聚類分析指同一個概念嗎?
  • 毫無疑問,兩者非常密切相關(guān),但不是一回事,兩者存在細(xì)微的差異。
  • 聚類是對相似數(shù)據(jù)進(jìn)行分組的過程,以便同一組或聚類中的任何兩個對象比不同組中的任何兩個對象更相似。
  • 聚類分析是一個更廣泛的術(shù)語,不僅包括對數(shù)據(jù)進(jìn)行分組(聚類)的過程,還包括在特定領(lǐng)域上下文對獲得的聚類進(jìn)行分析、評價和解釋。

下圖表明了這兩個經(jīng)?;煜男g(shù)語之間的區(qū)別和關(guān)系。

實際例子

不妨現(xiàn)在開始關(guān)注聚類分析,為此舉一個實際的例子:

  • 分割一組數(shù)據(jù)。
  • 分析得到的數(shù)據(jù)片段。

注意:本例中附帶的代碼,假設(shè)你熟悉Python語言的基礎(chǔ)知識和一些庫,比如Sklearn(用于訓(xùn)練聚類模型)、Pandas(用于數(shù)據(jù)整理)和Matplotlib(用于數(shù)據(jù)可視化)。

我們將使用帕爾默群島企鵝(https://www.kaggle.com/datasets/parulpandey/palmer-archipelago-antarctica-penguin-data)數(shù)據(jù)集闡述聚類分析,該數(shù)據(jù)集含有對阿德利企鵝、巴布亞企鵝和帽帶企鵝三種不同物種的數(shù)據(jù)觀測。這個數(shù)據(jù)集在訓(xùn)練分類模型方面非常流行,但在尋找數(shù)據(jù)聚類方面也頗有用處。加載數(shù)據(jù)集文件后,我們要做的就是假設(shè)“species”類屬性是未知的。

import pandas as pd
penguins = pd.read_csv('penguins_size.csv').dropna()
X = penguins.drop('species', axis=1)

我們還將從數(shù)據(jù)集中刪除描述企鵝性別和觀測到該物種所在島嶼的兩個類別特征,留下其余的數(shù)字特征。我們還將已知的標(biāo)簽(species)存儲在一個單獨(dú)的變量y中:它們便于稍后將獲得的聚類與數(shù)據(jù)集中實際的企鵝分類進(jìn)行比較。

X = X.drop(['island', 'sex'], axis=1)
y = penguins.species.astype("category").cat.codes

使用下面幾行代碼,我們就可以運(yùn)用Sklearn庫中可用的k -means聚類算法,在我們的數(shù)據(jù)中找到k個聚類。我們只需指定我們想要找到的聚類的數(shù)量,在本文中,我們將數(shù)據(jù)分成k=3聚類:

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters = 3, n_init=100)
X["cluster"] = kmeans.fit_predict(X)

上面最后一行代碼存儲了聚類結(jié)果,即分配給每個數(shù)據(jù)實例的聚類的id,存儲在名為“cluster”的新屬性中。

接下來可以生成聚類的一些可視化圖來分析和解釋它們了!下面的代碼片段有點長,但可以歸結(jié)為生成兩個數(shù)據(jù)可視化圖:第一個顯示了兩個數(shù)據(jù)特征(喙長culmen length和前肢長flipper length)周圍的散點圖以及每個觀測值所屬的聚類,第二個可視化圖顯示了每個數(shù)據(jù)點所屬的實際企鵝物種。

plt.figure (figsize=(12, 4.5))
# Visualize the clusters obtained for two of the data attributes: culmen 
length and flipper length
plt.subplot(121)
plt.plot(X[X["cluster"]==0]["culmen_length_mm"],
X[X["cluster"]==0]["flipper_length_mm"], "mo", label="First cluster")
plt.plot(X[X["cluster"]==1]["culmen_length_mm"],
X[X["cluster"]==1]["flipper_length_mm"], "ro", label="Second cluster")
plt.plot(X[X["cluster"]==2]["culmen_length_mm"],
X[X["cluster"]==2]["flipper_length_mm"], "go", label="Third cluster")
plt.plot(kmeans.cluster_centers_[:,0], kmeans.cluster_centers_[:,2], "kD", 
label="Cluster centroid")
plt.xlabel("Culmen length (mm)", fontsize=14)
plt.ylabel("Flipper length (mm)", fontsize=14)
plt.legend(fontsize=10)
# Compare against the actual ground-truth class labels (real penguin 
species)
plt.subplot(122)
plt.plot(X[y==0]["culmen_length_mm"], X[y==0]["flipper_length_mm"], "mo", 
label="Adelie")
plt.plot(X[y==1]["culmen_length_mm"], X[y==1]["flipper_length_mm"], "ro", 
label="Chinstrap")
plt.plot(X[y==2]["culmen_length_mm"], X[y==2]["flipper_length_mm"], "go", 
label="Gentoo")
plt.xlabel("Culmen length (mm)", fontsize=14)
plt.ylabel("Flipper length (mm)", fontsize=14)
plt.legend(fontsize=12)
plt.show

以下是可視化圖:

通過觀測這些聚類,我們可以得出第一個結(jié)論:

  • 在分配給不同聚類的數(shù)據(jù)點(企鵝)之間有一種微妙的,但不是很清楚的分離,發(fā)現(xiàn)的子組之間有一些輕微的重疊。這不一定會讓我們得出聚類結(jié)果是好還是壞的結(jié)論:我們已經(jīng)對數(shù)據(jù)集的幾個屬性運(yùn)用了k-means算法,但這個可視化圖顯示了聚類上的數(shù)據(jù)點如何僅根據(jù)兩個屬性“culmen length”和“flipper length”來定位??赡艽嬖谄渌麑傩詫?,根據(jù)這些屬性對,聚類在可視化圖上被表示為更清晰地彼此分開。

這就引出了一個問題:如果我們嘗試根據(jù)用于訓(xùn)練模型的任何其他兩個變量可視化我們的聚類會怎么樣?

不妨可視化企鵝的體重(克)和喙長(毫米)。

plt.plot(X[X["cluster"]==0]["body_mass_g"],
X[X["cluster"]==0]["culmen_length_mm"], "mo", label="First cluster")
plt.plot(X[X["cluster"]==1]["body_mass_g"],
X[X["cluster"]==1]["culmen_length_mm"], "ro", label="Second cluster")
plt.plot(X[X["cluster"]==2]["body_mass_g"],
X[X["cluster"]==2]["culmen_length_mm"], "go", label="Third cluster")
plt.plot(kmeans.cluster_centers_[:,3], kmeans.cluster_centers_[:,0], "kD", 
label="Cluster centroid")
plt.xlabel("Body mass (g)", fontsize=14)
plt.ylabel("Culmen length (mm)", fontsize=14)
plt.legend(fontsize=10)
plt.show

這個似乎非常清楚!現(xiàn)在我們把數(shù)據(jù)分成了易于辨別的三組。進(jìn)一步分析我們的可視化圖,我們可以從中獲得更多的發(fā)現(xiàn):

  • 發(fā)現(xiàn)的聚類與“體重”和“喙長”屬性的值之間存在密切的關(guān)系。從圖的左下角到右上角,第一組企鵝的特點是體型小,因為它們的“體重”值低,但喙長變化很大。第二組企鵝體型中等,喙長中偏高。最后,第三組企鵝的特點是體型更大,喙更長。
  • 還可以觀測到有少數(shù)異常值,即非典型值偏離大多數(shù)對象的數(shù)據(jù)觀測。這一點在可視化區(qū)域最上方的點上體現(xiàn)得尤為明顯,這表明在所有三組中,一些觀測到的企鵝的喙都過長。

結(jié)語

本文闡述了聚類分析的概念和實際應(yīng)用,即在數(shù)據(jù)中找到有相似特征或?qū)傩缘脑刈咏M,并分析這些子組從中獲取有價值或可操作的洞察力。從市場營銷、電子商務(wù)到生態(tài)項目,聚類分析被廣泛應(yīng)用于眾多實際領(lǐng)域。

原文標(biāo)題:Using Cluster Analysis to Segment Your Data,作者:Ivan Palomares Carrascosa

責(zé)任編輯:姜華 來源: 51CTO內(nèi)容精選
相關(guān)推薦

2020-03-12 09:06:05

數(shù)據(jù)挖掘聚類分析學(xué)習(xí)

2020-07-23 09:15:25

Python機(jī)器學(xué)習(xí)聚類分析

2018-06-06 14:17:44

聚類分析算法大數(shù)據(jù)

2018-04-24 15:19:52

聚類分析數(shù)據(jù)方法

2024-11-26 08:00:00

SQLPandasPandaSQL

2020-09-02 10:17:10

大數(shù)據(jù)數(shù)據(jù)分析數(shù)據(jù)

2021-08-09 15:00:36

SQL數(shù)據(jù)庫

2016-10-13 16:02:04

2023-04-07 14:04:52

增強(qiáng)分析人工智能

2016-08-28 12:31:22

2015-08-25 15:53:08

LinuxcURL

2018-08-21 22:31:04

數(shù)據(jù)分析單身女朋友

2017-09-26 19:02:09

PythonInstagram數(shù)據(jù)分析

2021-08-30 13:26:41

數(shù)據(jù)分析

2009-12-31 11:07:33

連接ADO.NET

2016-03-18 09:44:05

隊列分析應(yīng)用留存用戶行為

2022-06-09 11:47:21

工具數(shù)據(jù)儀連接器

2013-06-27 15:21:38

App

2021-03-30 11:06:29

數(shù)據(jù)驅(qū)動項目經(jīng)理CIO

2023-02-03 11:40:49

機(jī)器學(xué)習(xí)分析情感
點贊
收藏

51CTO技術(shù)棧公眾號