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

如何使用聚類分析分割數據

譯文 精選
人工智能
聚類是一種無監督學習任務,涉及一系列廣泛的機器學習方法,假設數據未標記或未先驗分類,旨在發現其底層的模式或洞察力。具體來說,聚類的目的是發現有相似特征或屬性的數據觀測組。

譯者 | 布加迪

審校 | 重樓

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

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

什么是聚類?

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

不妨進一步闡述這個概念:聚類是一種無監督學習任務,涉及一系列廣泛的機器學習方法,假設數據未標記或未先驗分類,旨在發現其底層的模式或洞察力。具體來說,聚類的目的是發現有相似特征或屬性的數據觀測組。

以下是聚類在眾多機器學習技術中所處的位置:

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

常見的聚類技術

數據聚類的方法有好多種,最流行的三種方法如下:

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

聚類和聚類分析一樣嗎?

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

下圖表明了這兩個經常混淆的術語之間的區別和關系。

實際例子

不妨現在開始關注聚類分析,為此舉一個實際的例子:

  • 分割一組數據。
  • 分析得到的數據片段。

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

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

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

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

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

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

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

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

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

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

以下是可視化圖:

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

  • 在分配給不同聚類的數據點(企鵝)之間有一種微妙的,但不是很清楚的分離,發現的子組之間有一些輕微的重疊。這不一定會讓我們得出聚類結果是好還是壞的結論:我們已經對數據集的幾個屬性運用了k-means算法,但這個可視化圖顯示了聚類上的數據點如何僅根據兩個屬性“culmen length”和“flipper length”來定位。可能存在其他屬性對,根據這些屬性對,聚類在可視化圖上被表示為更清晰地彼此分開。

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

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

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

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

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

結語

本文闡述了聚類分析的概念和實際應用,即在數據中找到有相似特征或屬性的元素子組,并分析這些子組從中獲取有價值或可操作的洞察力。從市場營銷、電子商務到生態項目,聚類分析被廣泛應用于眾多實際領域。

原文標題:Using Cluster Analysis to Segment Your Data,作者:Ivan Palomares Carrascosa

責任編輯:姜華 來源: 51CTO內容精選
相關推薦

2020-03-12 09:06:05

數據挖掘聚類分析學習

2020-07-23 09:15:25

Python機器學習聚類分析

2018-06-06 14:17:44

聚類分析算法大數據

2018-04-24 15:19:52

聚類分析數據方法

2024-11-26 08:00:00

SQLPandasPandaSQL

2016-10-13 16:02:04

2021-08-09 15:00:36

SQL數據庫

2020-09-02 10:17:10

大數據數據分析數據

2023-04-07 14:04:52

增強分析人工智能

2016-08-28 12:31:22

2018-08-21 22:31:04

數據分析單身女朋友

2015-08-25 15:53:08

LinuxcURL

2017-09-26 19:02:09

PythonInstagram數據分析

2021-08-30 13:26:41

數據分析

2009-12-31 11:07:33

連接ADO.NET

2016-03-18 09:44:05

隊列分析應用留存用戶行為

2022-06-09 11:47:21

工具數據儀連接器

2013-06-27 15:21:38

App

2021-03-30 11:06:29

數據驅動項目經理CIO

2023-10-11 11:34:54

數據分析運營
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩在线视频免费观看 | 国产精品视频一二三区 | 一级黄色片网站 | 超碰导航 | 亚洲精品视频在线观看视频 | 亚洲一区av | 国产91久久久久 | 狠狠操狠狠干 | 久久一区视频 | 99亚洲综合 | 草樱av| 午夜三级视频 | 亚洲性爰 | 精品一二| 91在线电影 | 99精品国产一区二区青青牛奶 | 中文字幕精品一区 | 成人精品啪啪欧美成 | 欧美一级片在线看 | 视频在线亚洲 | 福利社午夜影院 | 欧美精品一区在线发布 | 91视频进入 | 亚洲一区二区三区视频 | 国产精品资源在线观看 | 中文字幕一区二区在线观看 | 91久久视频 | 欧美一级欧美三级在线观看 | 欧美精品一区二区三区在线播放 | 黄网站在线观看 | 亚洲香蕉在线视频 | 午夜影视 | 免费午夜视频在线观看 | 久久久久9999| 久久综合狠狠综合久久综合88 | 欧美极品视频 | 国产成年人小视频 | 伊人久久大香线 | 国产1区2区 | 91pao对白在线播放 | 懂色中文一区二区三区在线视频 |