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

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

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

10種聚類算法和Python代碼1

jf_78858299 ? 來(lái)源:海豚科學(xué)實(shí)驗(yàn)室 ? 作者:海豚科學(xué)實(shí)驗(yàn)室 ? 2023-02-20 13:57 ? 次閱讀

分享一篇關(guān)于聚類的文章: 10種聚類算法Python代碼 。文末提供jupyter notebook的完整代碼獲取方式。

聚類或聚類分析是無(wú)監(jiān)督學(xué)習(xí)問(wèn)題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶群。

有許多聚類算法可供選擇,對(duì)于所有情況,沒(méi)有單一的最佳聚類算法。相反,最好探索一系列聚類算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級(jí)聚類算法。

完成本教程后,你將知道:

  • 聚類是在輸入數(shù)據(jù)的特征空間中查找自然組的無(wú)監(jiān)督問(wèn)題。
  • 對(duì)于所有數(shù)據(jù)集,有許多不同的聚類算法和單一的最佳方法。
  • 在 scikit-learn 機(jī)器學(xué)習(xí)庫(kù)的 Python 中如何實(shí)現(xiàn)、適配和使用頂級(jí)聚類算法。

教程概述

本教程分為三部分:

  1. 聚類
  2. 聚類算法
  3. 聚類算法示例
  • 庫(kù)安裝
  • 聚類數(shù)據(jù)集
  • 親和力傳播
  • 聚合聚類
  • BIRCH
  • DBSCAN
  • K-均值
  • Mini-Batch K-均值
  • Mean Shift
  • OPTICS
  • 光譜聚類
  • 高斯混合模型

一、聚類

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

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

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

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

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

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

聚類可以作為數(shù)據(jù)分析活動(dòng)提供幫助,以便了解更多關(guān)于問(wèn)題域的信息,即所謂的模式發(fā)現(xiàn)或知識(shí)發(fā)現(xiàn)。例如:

  • 該進(jìn)化樹可以被認(rèn)為是人工聚類分析的結(jié)果;
  • 將正常數(shù)據(jù)與異常值或異常分開可能會(huì)被認(rèn)為是聚類問(wèn)題;
  • 根據(jù)自然行為將集群分開是一個(gè)集群?jiǎn)栴},稱為市場(chǎng)細(xì)分。

聚類還可用作特征工程的類型,其中現(xiàn)有的和新的示例可被映射并標(biāo)記為屬于數(shù)據(jù)中所標(biāo)識(shí)的群集之一。雖然確實(shí)存在許多特定于群集的定量措施,但是對(duì)所識(shí)別的群集的評(píng)估是主觀的,并且可能需要領(lǐng)域?qū)<摇Mǔ?,聚類算法在人工合成?shù)據(jù)集上與預(yù)先定義的群集進(jìn)行學(xué)術(shù)比較,預(yù)計(jì)算法會(huì)發(fā)現(xiàn)這些群集。

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

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

二、聚類算法

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

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

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

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

  1. 親和力傳播
  2. 聚合聚類
  3. BIRCH
  4. DBSCAN
  5. K-均值
  6. Mini-Batch K-均值
  7. Mean Shift
  8. OPTICS
  9. 光譜聚類
  10. 高斯混合

每個(gè)算法都提供了一種不同的方法來(lái)應(yīng)對(duì)數(shù)據(jù)中發(fā)現(xiàn)自然組的挑戰(zhàn)。沒(méi)有最好的聚類算法,也沒(méi)有簡(jiǎn)單的方法來(lái)找到最好的算法為您的數(shù)據(jù)沒(méi)有使用控制實(shí)驗(yàn)。

在本教程中,我們將回顧如何使用來(lái)自 scikit-learn 庫(kù)的這10個(gè)流行的聚類算法中的每一個(gè)。這些示例將為您復(fù)制粘貼示例并在自己的數(shù)據(jù)上測(cè)試方法提供基礎(chǔ)。我們不會(huì)深入研究算法如何工作的理論,也不會(huì)直接比較它們。讓我們深入研究一下。

三、聚類算法示例

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

1、庫(kù)安裝

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

sudo pip install scikit-learn

接下來(lái),讓我們確認(rèn)已經(jīng)安裝了庫(kù),并且您正在使用一個(gè)現(xiàn)代版本。運(yùn)行以下腳本以輸出庫(kù)版本號(hào)。

# 檢查 scikit-learn 版本
import sklearn
print(sklearn.__version__)

運(yùn)行該示例時(shí),您應(yīng)該看到以下版本號(hào)或更高版本。

0.22.1

2、聚類數(shù)據(jù)集

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

這將有助于了解,至少在測(cè)試問(wèn)題上,群集的識(shí)別能力如何。該測(cè)試問(wèn)題中的群集基于多變量高斯,并非所有聚類算法都能有效地識(shí)別這些類型的群集。因此,本教程中的結(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)
# 為每個(gè)類的樣本創(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)簽(理想化的群集)著色。我們可以清楚地看到兩個(gè)不同的數(shù)據(jù)組在兩個(gè)維度,并希望一個(gè)自動(dòng)的聚類算法可以檢測(cè)這些分組。

圖片

圖:已知聚類著色點(diǎn)的合成聚類數(shù)據(jù)集的散點(diǎn)圖

接下來(lái),我們可以開始查看應(yīng)用于此數(shù)據(jù)集的聚類算法的示例。我已經(jīng)做了一些最小的嘗試來(lái)調(diào)整每個(gè)方法到數(shù)據(jù)集。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎ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

    文章

    4788

    瀏覽量

    68616
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1449

    瀏覽量

    34060
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84690
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

    基于關(guān)聯(lián)規(guī)則與算法的查詢擴(kuò)展算法

    基于關(guān)聯(lián)規(guī)則與算法的查詢擴(kuò)展算法:針對(duì)信息檢索中查詢關(guān)鍵詞與文檔用詞不匹配的問(wèn)題,提出一基于關(guān)聯(lián)規(guī)則與
    發(fā)表于 10-17 23:00 ?12次下載

    算法融合算法研究

    算法融合算法研究首先對(duì)
    發(fā)表于 08-10 15:08 ?33次下載
    <b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>及<b class='flag-5'>聚</b><b class='flag-5'>類</b>融合<b class='flag-5'>算法</b>研究

    新的基于流行距離的譜算法

    本文提出了一新的基于流行距離的譜算法,這是一新型的聚類分析算法。不僅能夠?qū)θ我獾姆且?guī)則形
    發(fā)表于 12-07 14:53 ?3次下載

    基于密度DBSCAN的算法

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

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

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

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

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

    自適應(yīng)的關(guān)聯(lián)融合算法

    為解決傳統(tǒng)算法多數(shù)需要預(yù)先設(shè)定聚參數(shù)且無(wú)法有效識(shí)別異常點(diǎn)和噪聲點(diǎn)的問(wèn)題,提出一自適應(yīng)的關(guān)聯(lián)融合
    發(fā)表于 04-01 16:16 ?13次下載
    一<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>

    10介紹和Python代碼

    分享一篇關(guān)于的文章,10介紹和Python
    的頭像 發(fā)表于 07-30 10:25 ?3054次閱讀

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

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

    10算法Python代碼2

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

    10算法Python代碼3

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

    10算法Python代碼4

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

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

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