chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

10種聚類(lèi)介紹和Python代碼

馬哥Linux運(yùn)維 ? 來(lái)源:海豚數(shù)據(jù)科學(xué)實(shí)驗(yàn)室 ? 作者:海豚數(shù)據(jù)科學(xué)實(shí)驗(yàn) ? 2022-07-30 10:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

分享一篇關(guān)于聚類(lèi)的文章,10種聚類(lèi)介紹和Python代碼。

聚類(lèi)或聚類(lèi)分析是無(wú)監(jiān)督學(xué)習(xí)問(wèn)題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶(hù)群。有許多聚類(lèi)算法可供選擇,對(duì)于所有情況,沒(méi)有單一的最佳聚類(lèi)算法。相反,最好探索一系列聚類(lèi)算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級(jí)聚類(lèi)算法。 完成本教程后,你將知道:
  • 聚類(lèi)是在輸入數(shù)據(jù)的特征空間中查找自然組的無(wú)監(jiān)督問(wèn)題。

  • 對(duì)于所有數(shù)據(jù)集,有許多不同的聚類(lèi)算法和單一的最佳方法。

  • 在 scikit-learn 機(jī)器學(xué)習(xí)庫(kù)的 Python 中如何實(shí)現(xiàn)、適配和使用頂級(jí)聚類(lèi)算法。

教程概述 本教程分為三部分:
  1. 聚類(lèi)

  2. 聚類(lèi)算法

  3. 聚類(lèi)算法示例

  • 庫(kù)安裝

  • 聚類(lèi)數(shù)據(jù)集

  • 親和力傳播

  • 聚合聚類(lèi)

  • BIRCH

  • DBSCAN

  • K-均值

  • Mini-Batch K-均值

  • Mean Shift

  • OPTICS

  • 光譜聚類(lèi)

  • 高斯混合模型

一.聚類(lèi)

聚類(lèi)分析,即聚類(lèi),是一項(xiàng)無(wú)監(jiān)督的機(jī)器學(xué)習(xí)任務(wù)。它包括自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的自然分組。與監(jiān)督學(xué)習(xí)(類(lèi)似預(yù)測(cè)建模)不同,聚類(lèi)算法只解釋輸入數(shù)據(jù),并在特征空間中找到自然組或群集。

聚類(lèi)技術(shù)適用于沒(méi)有要預(yù)測(cè)的類(lèi),而是將實(shí)例劃分為自然組的情況。

—源自:《數(shù)據(jù)挖掘頁(yè):實(shí)用機(jī)器學(xué)習(xí)工具和技術(shù)》2016年。

群集通常是特征空間中的密度區(qū)域,其中來(lái)自域的示例(觀(guān)測(cè)或數(shù)據(jù)行)比其他群集更接近群集。群集可以具有作為樣本或點(diǎn)特征空間的中心(質(zhì)心),并且可以具有邊界或范圍。

這些群集可能反映出在從中繪制實(shí)例的域中工作的某種機(jī)制,這種機(jī)制使某些實(shí)例彼此具有比它們與其余實(shí)例更強(qiáng)的相似性。

—源自:《數(shù)據(jù)挖掘頁(yè):實(shí)用機(jī)器學(xué)習(xí)工具和技術(shù)》2016年。

聚類(lèi)可以作為數(shù)據(jù)分析活動(dòng)提供幫助,以便了解更多關(guān)于問(wèn)題域的信息,即所謂的模式發(fā)現(xiàn)或知識(shí)發(fā)現(xiàn)。例如:
  • 該進(jìn)化樹(shù)可以被認(rèn)為是人工聚類(lèi)分析的結(jié)果;
  • 將正常數(shù)據(jù)與異常值或異常分開(kāi)可能會(huì)被認(rèn)為是聚類(lèi)問(wèn)題;
  • 根據(jù)自然行為將集群分開(kāi)是一個(gè)集群?jiǎn)栴},稱(chēng)為市場(chǎng)細(xì)分。
聚類(lèi)還可用作特征工程的類(lèi)型,其中現(xiàn)有的和新的示例可被映射并標(biāo)記為屬于數(shù)據(jù)中所標(biāo)識(shí)的群集之一。雖然確實(shí)存在許多特定于群集的定量措施,但是對(duì)所識(shí)別的群集的評(píng)估是主觀(guān)的,并且可能需要領(lǐng)域?qū)<?。通常,聚?lèi)算法在人工合成數(shù)據(jù)集上與預(yù)先定義的群集進(jìn)行學(xué)術(shù)比較,預(yù)計(jì)算法會(huì)發(fā)現(xiàn)這些群集。

聚類(lèi)是一種無(wú)監(jiān)督學(xué)習(xí)技術(shù),因此很難評(píng)估任何給定方法的輸出質(zhì)量。

—源自:《機(jī)器學(xué)習(xí)頁(yè):概率觀(guān)點(diǎn)》2012。

二.聚類(lèi)算法

有許多類(lèi)型的聚類(lèi)算法。許多算法在特征空間中的示例之間使用相似度或距離度量,以發(fā)現(xiàn)密集的觀(guān)測(cè)區(qū)域。因此,在使用聚類(lèi)算法之前,擴(kuò)展數(shù)據(jù)通常是良好的實(shí)踐。

聚類(lèi)分析的所有目標(biāo)的核心是被群集的各個(gè)對(duì)象之間的相似程度(或不同程度)的概念。聚類(lèi)方法嘗試根據(jù)提供給對(duì)象的相似性定義對(duì)對(duì)象進(jìn)行分組。

—源自:《統(tǒng)計(jì)學(xué)習(xí)的要素:數(shù)據(jù)挖掘、推理和預(yù)測(cè)》,2016年

一些聚類(lèi)算法要求您指定或猜測(cè)數(shù)據(jù)中要發(fā)現(xiàn)的群集的數(shù)量,而另一些算法要求指定觀(guān)測(cè)之間的最小距離,其中示例可以被視為“關(guān)閉”或“連接”。因此,聚類(lèi)分析是一個(gè)迭代過(guò)程,在該過(guò)程中,對(duì)所識(shí)別的群集的主觀(guān)評(píng)估被反饋回算法配置的改變中,直到達(dá)到期望的或適當(dāng)?shù)慕Y(jié)果。scikit-learn 庫(kù)提供了一套不同的聚類(lèi)算法供選擇。下面列出了10種比較流行的算法:

  1. 親和力傳播

  2. 聚合聚類(lèi)

  3. BIRCH

  4. DBSCAN

  5. K-均值

  6. Mini-Batch K-均值

  7. Mean Shift

  8. OPTICS

  9. 光譜聚類(lèi)

  10. 高斯混合
每個(gè)算法都提供了一種不同的方法來(lái)應(yīng)對(duì)數(shù)據(jù)中發(fā)現(xiàn)自然組的挑戰(zhàn)。沒(méi)有最好的聚類(lèi)算法,也沒(méi)有簡(jiǎn)單的方法來(lái)找到最好的算法為您的數(shù)據(jù)沒(méi)有使用控制實(shí)驗(yàn)。在本教程中,我們將回顧如何使用來(lái)自 scikit-learn 庫(kù)的這10個(gè)流行的聚類(lèi)算法中的每一個(gè)。這些示例將為您復(fù)制粘貼示例并在自己的數(shù)據(jù)上測(cè)試方法提供基礎(chǔ)。我們不會(huì)深入研究算法如何工作的理論,也不會(huì)直接比較它們。讓我們深入研究一下。

三.聚類(lèi)算法示例

在本節(jié)中,我們將回顧如何在 scikit-learn 中使用10個(gè)流行的聚類(lèi)算法。這包括一個(gè)擬合模型的例子和可視化結(jié)果的例子。這些示例用于將粘貼復(fù)制到您自己的項(xiàng)目中,并將方法應(yīng)用于您自己的數(shù)據(jù)。1.庫(kù)安裝

首先,讓我們安裝庫(kù)。不要跳過(guò)此步驟,因?yàn)槟阈枰_保安裝了最新版本。你可以使用 pip Python 安裝程序安裝 scikit-learn 存儲(chǔ)庫(kù),如下所示:

sudopipinstallscikit-learn
接下來(lái),讓我們確認(rèn)已經(jīng)安裝了庫(kù),并且您正在使用一個(gè)現(xiàn)代版本。運(yùn)行以下腳本以輸出庫(kù)版本號(hào)。
#檢查scikit-learn版本
importsklearn
print(sklearn.__version__)
運(yùn)行該示例時(shí),您應(yīng)該看到以下版本號(hào)或更高版本。
0.22.1
2.聚類(lèi)數(shù)據(jù)集

我們將使用 make _ classification ()函數(shù)創(chuàng)建一個(gè)測(cè)試二分類(lèi)數(shù)據(jù)集。數(shù)據(jù)集將有1000個(gè)示例,每個(gè)類(lèi)有兩個(gè)輸入要素和一個(gè)群集。這些群集在兩個(gè)維度上是可見(jiàn)的,因此我們可以用散點(diǎn)圖繪制數(shù)據(jù),并通過(guò)指定的群集對(duì)圖中的點(diǎn)進(jìn)行顏色繪制。

這將有助于了解,至少在測(cè)試問(wèn)題上,群集的識(shí)別能力如何。該測(cè)試問(wèn)題中的群集基于多變量高斯,并非所有聚類(lèi)算法都能有效地識(shí)別這些類(lèi)型的群集。因此,本教程中的結(jié)果不應(yīng)用作比較一般方法的基礎(chǔ)。下面列出了創(chuàng)建和匯總合成聚類(lèi)數(shù)據(jù)集的示例。

#綜合分類(lèi)數(shù)據(jù)集
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,y=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#為每個(gè)類(lèi)的樣本創(chuàng)建散點(diǎn)圖
forclass_valueinrange(2):
#獲取此類(lèi)的示例的行索引
row_ix=where(y==class_value)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例將創(chuàng)建合成的聚類(lèi)數(shù)據(jù)集,然后創(chuàng)建輸入數(shù)據(jù)的散點(diǎn)圖,其中點(diǎn)由類(lèi)標(biāo)簽(理想化的群集)著色。我們可以清楚地看到兩個(gè)不同的數(shù)據(jù)組在兩個(gè)維度,并希望一個(gè)自動(dòng)的聚類(lèi)算法可以檢測(cè)這些分組。

ba8389e2-0f48-11ed-ba43-dac502259ad0.jpg

已知聚類(lèi)著色點(diǎn)的合成聚類(lèi)數(shù)據(jù)集的散點(diǎn)圖接下來(lái),我們可以開(kāi)始查看應(yīng)用于此數(shù)據(jù)集的聚類(lèi)算法的示例。我已經(jīng)做了一些最小的嘗試來(lái)調(diào)整每個(gè)方法到數(shù)據(jù)集。3.親和力傳播親和力傳播包括找到一組最能概括數(shù)據(jù)的范例。

我們?cè)O(shè)計(jì)了一種名為“親和傳播”的方法,它作為兩對(duì)數(shù)據(jù)點(diǎn)之間相似度的輸入度量。在數(shù)據(jù)點(diǎn)之間交換實(shí)值消息,直到一組高質(zhì)量的范例和相應(yīng)的群集逐漸出現(xiàn)

—源自:《通過(guò)在數(shù)據(jù)點(diǎn)之間傳遞消息》2007。

它是通過(guò) AffinityPropagation 類(lèi)實(shí)現(xiàn)的,要調(diào)整的主要配置是將“ 阻尼 ”設(shè)置為0.5到1,甚至可能是“首選項(xiàng)”。

下面列出了完整的示例。

#親和力傳播聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportAffinityPropagation
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=AffinityPropagation(damping=0.9)
#匹配模型
model.fit(X)
#為每個(gè)示例分配一個(gè)集群
yhat=model.predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無(wú)法取得良好的結(jié)果。

ba947d1a-0f48-11ed-ba43-dac502259ad0.jpg

數(shù)據(jù)集的散點(diǎn)圖,具有使用親和力傳播識(shí)別的聚類(lèi)4.聚合聚類(lèi)聚合聚類(lèi)涉及合并示例,直到達(dá)到所需的群集數(shù)量為止。它是層次聚類(lèi)方法的更廣泛類(lèi)的一部分,通過(guò) AgglomerationClustering 類(lèi)實(shí)現(xiàn)的,主要配置是“ n _ clusters ”集,這是對(duì)數(shù)據(jù)中的群集數(shù)量的估計(jì),例如2。下面列出了完整的示例。
#聚合聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportAgglomerativeClustering
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=AgglomerativeClustering(n_clusters=2)
#模型擬合與聚類(lèi)預(yù)測(cè)
yhat=model.fit_predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組。

baa21e2a-0f48-11ed-ba43-dac502259ad0.jpg

使用聚集聚類(lèi)識(shí)別出具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖5.BIRCHBIRCH 聚類(lèi)( BIRCH 是平衡迭代減少的縮寫(xiě),聚類(lèi)使用層次結(jié)構(gòu))包括構(gòu)造一個(gè)樹(shù)狀結(jié)構(gòu),從中提取聚類(lèi)質(zhì)心。

BIRCH 遞增地和動(dòng)態(tài)地群集傳入的多維度量數(shù)據(jù)點(diǎn),以嘗試?yán)每捎觅Y源(即可用內(nèi)存和時(shí)間約束)產(chǎn)生最佳質(zhì)量的聚類(lèi)。

—源自:《 BIRCH :1996年大型數(shù)據(jù)庫(kù)的高效數(shù)據(jù)聚類(lèi)方法》

它是通過(guò) Birch 類(lèi)實(shí)現(xiàn)的,主要配置是“ threshold ”和“ n _ clusters ”超參數(shù),后者提供了群集數(shù)量的估計(jì)。下面列出了完整的示例。
#birch聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportBirch
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=Birch(threshold=0.01,n_clusters=2)
#適配模型
model.fit(X)
#為每個(gè)示例分配一個(gè)集群
yhat=model.predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)很好的分組。

bab96102-0f48-11ed-ba43-dac502259ad0.jpg

使用BIRCH聚類(lèi)確定具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖6.DBSCANDBSCAN 聚類(lèi)(其中 DBSCAN 是基于密度的空間聚類(lèi)的噪聲應(yīng)用程序)涉及在域中尋找高密度區(qū)域,并將其周?chē)奶卣骺臻g區(qū)域擴(kuò)展為群集。

…我們提出了新的聚類(lèi)算法 DBSCAN 依賴(lài)于基于密度的概念的集群設(shè)計(jì),以發(fā)現(xiàn)任意形狀的集群。DBSCAN 只需要一個(gè)輸入?yún)?shù),并支持用戶(hù)為其確定適當(dāng)?shù)闹?/p>

-源自:《基于密度的噪聲大空間數(shù)據(jù)庫(kù)聚類(lèi)發(fā)現(xiàn)算法》,1996

它是通過(guò) DBSCAN 類(lèi)實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。

下面列出了完整的示例。

#dbscan聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportDBSCAN
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=DBSCAN(eps=0.30,min_samples=9)
#模型擬合與聚類(lèi)預(yù)測(cè)
yhat=model.fit_predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,盡管需要更多的調(diào)整,但是找到了合理的分組。

bac2ac9e-0f48-11ed-ba43-dac502259ad0.jpg

使用DBSCAN集群識(shí)別出具有集群的數(shù)據(jù)集的散點(diǎn)圖7.K均值K-均值聚類(lèi)可以是最常見(jiàn)的聚類(lèi)算法,并涉及向群集分配示例,以盡量減少每個(gè)群集內(nèi)的方差。

本文的主要目的是描述一種基于樣本將 N 維種群劃分為 k 個(gè)集合的過(guò)程。這個(gè)叫做“ K-均值”的過(guò)程似乎給出了在類(lèi)內(nèi)方差意義上相當(dāng)有效的分區(qū)。

-源自:《關(guān)于多元觀(guān)測(cè)的分類(lèi)和分析的一些方法》1967年

它是通過(guò) K-均值類(lèi)實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù)設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
#k-means聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportKMeans
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=KMeans(n_clusters=2)
#模型擬合
model.fit(X)
#為每個(gè)示例分配一個(gè)集群
yhat=model.predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組,盡管每個(gè)維度中的不等等方差使得該方法不太適合該數(shù)據(jù)集。

bad1c666-0f48-11ed-ba43-dac502259ad0.jpg

使用K均值聚類(lèi)識(shí)別出具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖8.Mini-Batch K-均值Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的樣本而不是整個(gè)數(shù)據(jù)集對(duì)群集質(zhì)心進(jìn)行更新,這可以使大數(shù)據(jù)集的更新速度更快,并且可能對(duì)統(tǒng)計(jì)噪聲更健壯。

...我們建議使用 k-均值聚類(lèi)的迷你批量?jī)?yōu)化。與經(jīng)典批處理算法相比,這降低了計(jì)算成本的數(shù)量級(jí),同時(shí)提供了比在線(xiàn)隨機(jī)梯度下降更好的解決方案。

—源自:《Web-Scale K-均值聚類(lèi)》2010

它是通過(guò) MiniBatchKMeans 類(lèi)實(shí)現(xiàn)的,要優(yōu)化的主配置是“ n _ clusters ”超參數(shù),設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
#mini-batchk均值聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportMiniBatchKMeans
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=MiniBatchKMeans(n_clusters=2)
#模型擬合
model.fit(X)
#為每個(gè)示例分配一個(gè)集群
yhat=model.predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,會(huì)找到與標(biāo)準(zhǔn) K-均值算法相當(dāng)?shù)慕Y(jié)果。

badc43b6-0f48-11ed-ba43-dac502259ad0.jpg

帶有最小批次K均值聚類(lèi)的聚類(lèi)數(shù)據(jù)集的散點(diǎn)圖9.均值漂移聚類(lèi)均值漂移聚類(lèi)涉及到根據(jù)特征空間中的實(shí)例密度來(lái)尋找和調(diào)整質(zhì)心。

對(duì)離散數(shù)據(jù)證明了遞推平均移位程序收斂到最接近駐點(diǎn)的基礎(chǔ)密度函數(shù),從而證明了它在檢測(cè)密度模式中的應(yīng)用。

—源自:《Mean Shift :面向特征空間分析的穩(wěn)健方法》,2002

它是通過(guò) MeanShift 類(lèi)實(shí)現(xiàn)的,主要配置是“帶寬”超參數(shù)。下面列出了完整的示例。
#均值漂移聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportMeanShift
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=MeanShift()
#模型擬合與聚類(lèi)預(yù)測(cè)
yhat=model.fit_predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以在數(shù)據(jù)中找到一組合理的群集。

baea94b6-0f48-11ed-ba43-dac502259ad0.jpg

具有均值漂移聚類(lèi)的聚類(lèi)數(shù)據(jù)集散點(diǎn)圖10.OPTICSOPTICS 聚類(lèi)( OPTICS 短于訂購(gòu)點(diǎn)數(shù)以標(biāo)識(shí)聚類(lèi)結(jié)構(gòu))是上述 DBSCAN 的修改版本。

我們?yōu)榫垲?lèi)分析引入了一種新的算法,它不會(huì)顯式地生成一個(gè)數(shù)據(jù)集的聚類(lèi);而是創(chuàng)建表示其基于密度的聚類(lèi)結(jié)構(gòu)的數(shù)據(jù)庫(kù)的增強(qiáng)排序。此群集排序包含相當(dāng)于密度聚類(lèi)的信息,該信息對(duì)應(yīng)于范圍廣泛的參數(shù)設(shè)置。

—源自:《OPTICS :排序點(diǎn)以標(biāo)識(shí)聚類(lèi)結(jié)構(gòu)》,1999

它是通過(guò) OPTICS 類(lèi)實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。下面列出了完整的示例。
#optics聚類(lèi)
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportOPTICS
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=OPTICS(eps=0.8,min_samples=10)
#模型擬合與聚類(lèi)預(yù)測(cè)
yhat=model.fit_predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無(wú)法在此數(shù)據(jù)集上獲得合理的結(jié)果。

baf6b6d8-0f48-11ed-ba43-dac502259ad0.jpg

使用OPTICS聚類(lèi)確定具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖11.光譜聚類(lèi)光譜聚類(lèi)是一類(lèi)通用的聚類(lèi)方法,取自線(xiàn)性線(xiàn)性代數(shù)。

最近在許多領(lǐng)域出現(xiàn)的一個(gè)有希望的替代方案是使用聚類(lèi)的光譜方法。這里,使用從點(diǎn)之間的距離導(dǎo)出的矩陣的頂部特征向量。

—源自:《關(guān)于光譜聚類(lèi):分析和算法》,2002年

它是通過(guò) Spectral 聚類(lèi)類(lèi)實(shí)現(xiàn)的,而主要的 Spectral 聚類(lèi)是一個(gè)由聚類(lèi)方法組成的通用類(lèi),取自線(xiàn)性線(xiàn)性代數(shù)。要優(yōu)化的是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中的估計(jì)群集數(shù)量。下面列出了完整的示例。
#spectralclustering
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.clusterimportSpectralClustering
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=SpectralClustering(n_clusters=2)
#模型擬合與聚類(lèi)預(yù)測(cè)
yhat=model.fit_predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,找到了合理的集群。

bb044c9e-0f48-11ed-ba43-dac502259ad0.jpg

使用光譜聚類(lèi)聚類(lèi)識(shí)別出具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖12.高斯混合模型高斯混合模型總結(jié)了一個(gè)多變量概率密度函數(shù),顧名思義就是混合了高斯概率分布。它是通過(guò) Gaussian Mixture 類(lèi)實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
#高斯混合模型
fromnumpyimportunique
fromnumpyimportwhere
fromsklearn.datasetsimportmake_classification
fromsklearn.mixtureimportGaussianMixture
frommatplotlibimportpyplot
#定義數(shù)據(jù)集
X,_=make_classification(n_samples=1000,n_features=2,n_informative=2,n_redundant=0,n_clusters_per_class=1,random_state=4)
#定義模型
model=GaussianMixture(n_components=2)
#模型擬合
model.fit(X)
#為每個(gè)示例分配一個(gè)集群
yhat=model.predict(X)
#檢索唯一群集
clusters=unique(yhat)
#為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
forclusterinclusters:
#獲取此群集的示例的行索引
row_ix=where(yhat==cluster)
#創(chuàng)建這些樣本的散布
pyplot.scatter(X[row_ix,0],X[row_ix,1])
#繪制散點(diǎn)圖
pyplot.show()
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我們可以看到群集被完美地識(shí)別。這并不奇怪,因?yàn)閿?shù)據(jù)集是作為 Gaussian 的混合生成的。

bb13009a-0f48-11ed-ba43-dac502259ad0.jpg

使用高斯混合聚類(lèi)識(shí)別出具有聚類(lèi)的數(shù)據(jù)集的散點(diǎn)圖

三.總結(jié)

在本教程中,您發(fā)現(xiàn)了如何在 python 中安裝和使用頂級(jí)聚類(lèi)算法。具體來(lái)說(shuō),你學(xué)到了:
  • 聚類(lèi)是在特征空間輸入數(shù)據(jù)中發(fā)現(xiàn)自然組的無(wú)監(jiān)督問(wèn)題。

  • 有許多不同的聚類(lèi)算法,對(duì)于所有數(shù)據(jù)集沒(méi)有單一的最佳方法。

  • 在 scikit-learn 機(jī)器學(xué)習(xí)庫(kù)的 Python 中如何實(shí)現(xiàn)、適合和使用頂級(jí)聚類(lèi)算法。

審核編輯:湯梓紅


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4922

    瀏覽量

    72243
  • 聚類(lèi)
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    14568
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

    88959

原文標(biāo)題:10 種聚類(lèi)算法的完整 Python 操作示例

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    深非監(jiān)督學(xué)習(xí)-Hierarchical clustering 層次類(lèi)python的實(shí)現(xiàn)

    【深度學(xué)習(xí)基礎(chǔ)-17】非監(jiān)督學(xué)習(xí)-Hierarchical clustering 層次類(lèi)-python實(shí)現(xiàn)
    發(fā)表于 04-28 10:07

    Python如何實(shí)現(xiàn)模糊動(dòng)態(tài)類(lèi)

    利用Python實(shí)現(xiàn)模糊動(dòng)態(tài)類(lèi)
    發(fā)表于 06-02 17:38

    基于類(lèi)和競(jìng)爭(zhēng)克隆機(jī)制的多智能體免疫算法

    包含分布式電源的配電網(wǎng)無(wú)功優(yōu)化matlab源代碼,代碼按照高水平文章復(fù)現(xiàn),保證正確,可先發(fā)您文章看是否滿(mǎn)足您的要求利用分布式電源的無(wú)功補(bǔ)償能力,提出了一基于
    發(fā)表于 12-29 06:50

    類(lèi)個(gè)數(shù)自適應(yīng)的類(lèi)方法(簡(jiǎn)稱(chēng)SKKM)

    在數(shù)據(jù)挖掘算法中,K均值類(lèi)算法是一比較常見(jiàn)的無(wú)監(jiān)督學(xué)習(xí)方法,簇間數(shù)據(jù)對(duì)象越相異,簇內(nèi)數(shù)據(jù)對(duì)象越相似,說(shuō)明該類(lèi)效果越好。然而,簇個(gè)數(shù)的選
    發(fā)表于 11-03 16:13 ?12次下載
    一<b class='flag-5'>種</b><b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>個(gè)數(shù)自適應(yīng)的<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>方法(簡(jiǎn)稱(chēng)SKKM)

    基于密度DBSCAN的類(lèi)算法

    本文開(kāi)始介紹類(lèi)算法概念,其次闡述了類(lèi)算法的分類(lèi),最后詳細(xì)介紹
    的頭像 發(fā)表于 04-26 10:56 ?2.2w次閱讀
    基于密度DBSCAN的<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法

    Python無(wú)監(jiān)督學(xué)習(xí)的幾種類(lèi)算法包括K-Means類(lèi),分層類(lèi)等詳細(xì)概述

    無(wú)監(jiān)督學(xué)習(xí)是機(jī)器學(xué)習(xí)技術(shù)中的一類(lèi),用于發(fā)現(xiàn)數(shù)據(jù)中的模式。本文介紹Python進(jìn)行無(wú)監(jiān)督學(xué)習(xí)的幾種類(lèi)算法,包括K-Means
    的頭像 發(fā)表于 05-27 09:59 ?3.1w次閱讀
    <b class='flag-5'>Python</b>無(wú)監(jiān)督學(xué)習(xí)的幾種<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法包括K-Means<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>,分層<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>等詳細(xì)概述

    100天搞定機(jī)器學(xué)習(xí):day54 類(lèi)系列:層次類(lèi)原理及案例

    幾張GIF理解K-均值類(lèi)原理k均值類(lèi)數(shù)學(xué)推導(dǎo)與python實(shí)現(xiàn)前文說(shuō)了k均值
    的頭像 發(fā)表于 12-10 21:56 ?876次閱讀

    如何在python中安裝和使用頂級(jí)類(lèi)算法?

    以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級(jí)類(lèi)算法。 完成本教程后,你將知道: 類(lèi)是在輸入數(shù)據(jù)的特
    的頭像 發(fā)表于 03-12 18:23 ?2596次閱讀

    10頂流類(lèi)算法Python實(shí)現(xiàn)(附完整代碼

    分享一篇關(guān)于類(lèi)的文章:10類(lèi)算法和Python
    的頭像 發(fā)表于 01-07 09:33 ?2331次閱讀

    10類(lèi)算法和Python代碼1

    分享一篇關(guān)于類(lèi)的文章: **10類(lèi)算法和Python
    的頭像 發(fā)表于 02-20 13:57 ?1172次閱讀
    <b class='flag-5'>10</b><b class='flag-5'>種</b><b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法和<b class='flag-5'>Python</b><b class='flag-5'>代碼</b>1

    10類(lèi)算法和Python代碼2

    分享一篇關(guān)于類(lèi)的文章: **10類(lèi)算法和Python
    的頭像 發(fā)表于 02-20 13:57 ?1397次閱讀
    <b class='flag-5'>10</b><b class='flag-5'>種</b><b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法和<b class='flag-5'>Python</b><b class='flag-5'>代碼</b>2

    10類(lèi)算法和Python代碼3

    分享一篇關(guān)于類(lèi)的文章: **10類(lèi)算法和Python
    的頭像 發(fā)表于 02-20 13:57 ?1594次閱讀
    <b class='flag-5'>10</b><b class='flag-5'>種</b><b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法和<b class='flag-5'>Python</b><b class='flag-5'>代碼</b>3

    10類(lèi)算法和Python代碼4

    分享一篇關(guān)于類(lèi)的文章: **10類(lèi)算法和Python
    的頭像 發(fā)表于 02-20 13:57 ?1720次閱讀
    <b class='flag-5'>10</b><b class='flag-5'>種</b><b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法和<b class='flag-5'>Python</b><b class='flag-5'>代碼</b>4

    如何在 Python 中安裝和使用頂級(jí)類(lèi)算法

    有許多類(lèi)算法可供選擇,對(duì)于所有情況,沒(méi)有單一的最佳類(lèi)算法。相反,最好探索一系列類(lèi)算法以及每
    的頭像 發(fā)表于 05-22 09:13 ?1007次閱讀
    如何在 <b class='flag-5'>Python</b> 中安裝和使用頂級(jí)<b class='flag-5'>聚</b><b class='flag-5'>類(lèi)</b>算法

    python軟件怎么運(yùn)行代碼

    Python是一高級(jí)編程語(yǔ)言,它被廣泛用于開(kāi)發(fā)各種類(lèi)型的應(yīng)用程序,從簡(jiǎn)單的腳本到復(fù)雜的網(wǎng)絡(luò)應(yīng)用和機(jī)器學(xué)習(xí)模型。要運(yùn)行Python代碼,您需要一個(gè)P
    的頭像 發(fā)表于 11-28 16:02 ?1665次閱讀