分享一篇關(guān)于聚類的文章: 10種聚類算法和Python代碼 。文末提供jupyter notebook
的完整代碼獲取方式。
聚類或聚類分析是無監(jiān)督學(xué)習(xí)問題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶群。
有許多聚類算法可供選擇,對于所有情況,沒有單一的最佳聚類算法。相反,最好探索一系列聚類算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python
中安裝和使用頂級聚類算法。
完成本教程后,你將知道:
- 聚類是在輸入數(shù)據(jù)的特征空間中查找自然組的無監(jiān)督問題。
- 對于所有數(shù)據(jù)集,有許多不同的聚類算法和單一的最佳方法。
- 在 scikit-learn 機(jī)器學(xué)習(xí)庫的 Python 中如何實(shí)現(xiàn)、適配和使用頂級聚類算法。
教程概述
本教程分為三部分:
- 聚類
- 聚類算法
- 聚類算法示例
一、聚類
聚類分析,即聚類,是一項(xiàng)無監(jiān)督的機(jī)器學(xué)習(xí)任務(wù)。它包括自動發(fā)現(xiàn)數(shù)據(jù)中的自然分組。與監(jiān)督學(xué)習(xí)(類似預(yù)測建模)不同,聚類算法只解釋輸入數(shù)據(jù),并在特征空間中找到自然組或群集。
聚類技術(shù)適用于沒有要預(yù)測的類,而是將實(shí)例劃分為自然組的情況。
—源自:《數(shù)據(jù)挖掘頁:實(shí)用機(jī)器學(xué)習(xí)工具和技術(shù)》2016年。
群集通常是特征空間中的密度區(qū)域,其中來自域的示例(觀測或數(shù)據(jù)行)比其他群集更接近群集。群集可以具有作為樣本或點(diǎn)特征空間的中心(質(zhì)心),并且可以具有邊界或范圍。
這些群集可能反映出在從中繪制實(shí)例的域中工作的某種機(jī)制,這種機(jī)制使某些實(shí)例彼此具有比它們與其余實(shí)例更強(qiáng)的相似性。
—源自:《數(shù)據(jù)挖掘頁:實(shí)用機(jī)器學(xué)習(xí)工具和技術(shù)》2016年。
聚類可以作為數(shù)據(jù)分析活動提供幫助,以便了解更多關(guān)于問題域的信息,即所謂的模式發(fā)現(xiàn)或知識發(fā)現(xiàn)。例如:
- 該進(jìn)化樹可以被認(rèn)為是人工聚類分析的結(jié)果;
- 將正常數(shù)據(jù)與異常值或異常分開可能會被認(rèn)為是聚類問題;
- 根據(jù)自然行為將集群分開是一個集群問題,稱為市場細(xì)分。
聚類還可用作特征工程的類型,其中現(xiàn)有的和新的示例可被映射并標(biāo)記為屬于數(shù)據(jù)中所標(biāo)識的群集之一。雖然確實(shí)存在許多特定于群集的定量措施,但是對所識別的群集的評估是主觀的,并且可能需要領(lǐng)域?qū)<?。通常,聚類算法在人工合成?shù)據(jù)集上與預(yù)先定義的群集進(jìn)行學(xué)術(shù)比較,預(yù)計(jì)算法會發(fā)現(xiàn)這些群集。
聚類是一種無監(jiān)督學(xué)習(xí)技術(shù),因此很難評估任何給定方法的輸出質(zhì)量。
—源自:《機(jī)器學(xué)習(xí)頁:概率觀點(diǎn)》2012。
二、聚類算法
有許多類型的聚類算法。許多算法在特征空間中的示例之間使用相似度或距離度量,以發(fā)現(xiàn)密集的觀測區(qū)域。因此,在使用聚類算法之前,擴(kuò)展數(shù)據(jù)通常是良好的實(shí)踐。
聚類分析的所有目標(biāo)的核心是被群集的各個對象之間的相似程度(或不同程度)的概念。聚類方法嘗試根據(jù)提供給對象的相似性定義對對象進(jìn)行分組。
—源自:《統(tǒng)計(jì)學(xué)習(xí)的要素:數(shù)據(jù)挖掘、推理和預(yù)測》,2016年
一些聚類算法要求您指定或猜測數(shù)據(jù)中要發(fā)現(xiàn)的群集的數(shù)量,而另一些算法要求指定觀測之間的最小距離,其中示例可以被視為“關(guān)閉”或“連接”。因此,聚類分析是一個迭代過程,在該過程中,對所識別的群集的主觀評估被反饋回算法配置的改變中,直到達(dá)到期望的或適當(dāng)?shù)慕Y(jié)果。scikit-learn 庫提供了一套不同的聚類算法供選擇。下面列出了10種比較流行的算法:
- 親和力傳播
- 聚合聚類
- BIRCH
- DBSCAN
- K-均值
- Mini-Batch K-均值
- Mean Shift
- OPTICS
- 光譜聚類
- 高斯混合
每個算法都提供了一種不同的方法來應(yīng)對數(shù)據(jù)中發(fā)現(xiàn)自然組的挑戰(zhàn)。沒有最好的聚類算法,也沒有簡單的方法來找到最好的算法為您的數(shù)據(jù)沒有使用控制實(shí)驗(yàn)。
在本教程中,我們將回顧如何使用來自 scikit-learn 庫的這10個流行的聚類算法中的每一個。這些示例將為您復(fù)制粘貼示例并在自己的數(shù)據(jù)上測試方法提供基礎(chǔ)。我們不會深入研究算法如何工作的理論,也不會直接比較它們。讓我們深入研究一下。
三、聚類算法示例
在本節(jié)中,我們將回顧如何在 scikit-learn 中使用10個流行的聚類算法。這包括一個擬合模型的例子和可視化結(jié)果的例子。這些示例用于將粘貼復(fù)制到您自己的項(xiàng)目中,并將方法應(yīng)用于您自己的數(shù)據(jù)。
1、庫安裝
首先,讓我們安裝庫。不要跳過此步驟,因?yàn)槟阈枰_保安裝了最新版本。你可以使用 pip Python 安裝程序安裝 scikit-learn 存儲庫,如下所示:
sudo pip install scikit-learn
接下來,讓我們確認(rèn)已經(jīng)安裝了庫,并且您正在使用一個現(xiàn)代版本。運(yùn)行以下腳本以輸出庫版本號。
# 檢查 scikit-learn 版本
import sklearn
print(sklearn.__version__)
運(yùn)行該示例時,您應(yīng)該看到以下版本號或更高版本。
0.22.1
2、聚類數(shù)據(jù)集
我們將使用 make _ classification ()函數(shù)創(chuàng)建一個測試二分類數(shù)據(jù)集。數(shù)據(jù)集將有1000個示例,每個類有兩個輸入要素和一個群集。這些群集在兩個維度上是可見的,因此我們可以用散點(diǎn)圖繪制數(shù)據(jù),并通過指定的群集對圖中的點(diǎn)進(jìn)行顏色繪制。
這將有助于了解,至少在測試問題上,群集的識別能力如何。該測試問題中的群集基于多變量高斯,并非所有聚類算法都能有效地識別這些類型的群集。因此,本教程中的結(jié)果不應(yīng)用作比較一般方法的基礎(chǔ)。下面列出了創(chuàng)建和匯總合成聚類數(shù)據(jù)集的示例。
# 綜合分類數(shù)據(jù)集
from numpy import where
from sklearn.datasets import make_classification
from matplotlib import pyplot
%matplotlib inline
# 定義數(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)
# 為每個類的樣本創(chuàng)建散點(diǎn)圖
for class_value in range(2):
# 獲取此類的示例的行索引
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)建合成的聚類數(shù)據(jù)集,然后創(chuàng)建輸入數(shù)據(jù)的散點(diǎn)圖,其中點(diǎn)由類標(biāo)簽(理想化的群集)著色。我們可以清楚地看到兩個不同的數(shù)據(jù)組在兩個維度,并希望一個自動的聚類算法可以檢測這些分組。
圖:已知聚類著色點(diǎn)的合成聚類數(shù)據(jù)集的散點(diǎn)圖
接下來,我們可以開始查看應(yīng)用于此數(shù)據(jù)集的聚類算法的示例。我已經(jīng)做了一些最小的嘗試來調(diào)整每個方法到數(shù)據(jù)集。
-
代碼
+關(guān)注
關(guān)注
30文章
4830瀏覽量
69095 -
數(shù)據(jù)分析
+關(guān)注
關(guān)注
2文章
1461瀏覽量
34176 -
python
+關(guān)注
關(guān)注
56文章
4809瀏覽量
85054
發(fā)布評論請先 登錄
相關(guān)推薦
一種基于聚類和競爭克隆機(jī)制的多智能體免疫算法
基于關(guān)聯(lián)規(guī)則與聚類算法的查詢擴(kuò)展算法
Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述
![<b class='flag-5'>Python</b>無監(jiān)督學(xué)習(xí)的幾種<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>包括K-Means<b class='flag-5'>聚</b><b class='flag-5'>類</b>,分層<b class='flag-5'>聚</b><b class='flag-5'>類</b>等詳細(xì)概述](https://file.elecfans.com/web1/M00/51/73/o4YBAFsKEoeALEqBAAAddZDLJqY566.png)
如何在python中安裝和使用頂級聚類算法?
一種自適應(yīng)的關(guān)聯(lián)融合聚類算法
![一<b class='flag-5'>種</b>自適應(yīng)的關(guān)聯(lián)融合<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>](https://file.elecfans.com/web1/M00/E8/E4/pIYBAGBlgfKAAR-dAAJcjP47spY153.png)
評論