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

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

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

10種聚類算法和Python代碼3

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

6、DBSCAN

DBSCAN 聚類(其中 DBSCAN 是基于密度的空間聚類的噪聲應(yīng)用程序)涉及在域中尋找高密度區(qū)域,并將其周圍的特征空間區(qū)域擴(kuò)展為群集。

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

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

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

下面列出了完整的示例。

# dbscan 聚類
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import DBSCAN
from matplotlib import pyplot
# 定義數(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)
# 模型擬合與聚類預(yù)測(cè)
yhat = model.fit_predict(X)
# 檢索唯一群集
clusters = unique(yhat)
# 為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
for cluster in clusters:
    # 獲取此群集的示例的行索引
    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)整,但是找到了合理的分組。

圖片

圖:使用DBSCAN集群識(shí)別出具有集群的數(shù)據(jù)集的散點(diǎn)圖

7、K均值

K-均值聚類可以是最常見(jiàn)的聚類算法,并涉及向群集分配示例,以盡量減少每個(gè)群集內(nèi)的方差。

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

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

它是通過(guò) K-均值類實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù)設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。

# k-means 聚類
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import KMeans
from matplotlib import pyplot
# 定義數(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)圖
for cluster in clusters:
    # 獲取此群集的示例的行索引
    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ù)集。

圖片

圖:使用K均值聚類識(shí)別出具有聚類的數(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-均值聚類的迷你批量?jī)?yōu)化。與經(jīng)典批處理算法相比,這降低了計(jì)算成本的數(shù)量級(jí),同時(shí)提供了比在線隨機(jī)梯度下降更好的解決方案。

—源自:《Web-Scale K-均值聚類》2010

它是通過(guò) MiniBatchKMeans 類實(shí)現(xiàn)的,要優(yōu)化的主配置是“ n _ clusters ”超參數(shù),設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。

# mini-batch k均值聚類
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import MiniBatchKMeans
from matplotlib import pyplot
# 定義數(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)圖
for cluster in clusters:
    # 獲取此群集的示例的行索引
    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é)果。

圖片

圖:帶有最小批次K均值聚類的聚類數(shù)據(jù)集的散點(diǎn)圖

9、均值漂移聚類

均值漂移聚類涉及到根據(jù)特征空間中的實(shí)例密度來(lái)尋找和調(diào)整質(zhì)心。

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

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

它是通過(guò) MeanShift 類實(shí)現(xiàn)的,主要配置是“帶寬”超參數(shù)。下面列出了完整的示例。

# 均值漂移聚類
from numpy import unique
from numpy import where
from sklearn.datasets import make_classification
from sklearn.cluster import MeanShift
from matplotlib import pyplot
# 定義數(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()
# 模型擬合與聚類預(yù)測(cè)
yhat = model.fit_predict(X)
# 檢索唯一群集
clusters = unique(yhat)
# 為每個(gè)群集的樣本創(chuàng)建散點(diǎn)圖
for cluster in clusters:
    # 獲取此群集的示例的行索引
    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ù)中找到一組合理的群集。

圖片

圖:具有均值漂移聚類的聚類數(shù)據(jù)集散點(diǎn)圖

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    4697

    瀏覽量

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

    關(guān)注

    2

    文章

    1401

    瀏覽量

    33963
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289
收藏 人收藏

    評(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

    算法融合算法研究

    算法融合算法研究首先對(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>研究

    改進(jìn)的BIRCH算法方法

    為解決傳統(tǒng)BIRCH算法對(duì)數(shù)據(jù)對(duì)象輸入順序敏感、結(jié)果不穩(wěn)定的問(wèn)題,提出了一改進(jìn)的BIRCH算法。該
    發(fā)表于 11-10 15:52 ?1次下載
    一<b class='flag-5'>種</b>改進(jìn)的BIRCH<b class='flag-5'>算法</b><b class='flag-5'>聚</b><b class='flag-5'>類</b>方法

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

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

    基于密度DBSCAN的算法

    本文開(kāi)始介紹了算法概念,其次闡述了算法的分類,最后詳細(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 ?2183次閱讀

    自適應(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 ?2925次閱讀

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

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

    10算法Python代碼1

    分享一篇關(guān)于的文章: **10算法
    的頭像 發(fā)表于 02-20 13:57 ?790次閱讀
    <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>1

    10算法Python代碼2

    分享一篇關(guān)于的文章: **10算法
    的頭像 發(fā)表于 02-20 13:57 ?931次閱讀
    <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代碼4

    分享一篇關(guān)于的文章: **10算法
    的頭像 發(fā)表于 02-20 13:57 ?1233次閱讀
    <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 ?532次閱讀
    如何在 <b class='flag-5'>Python</b> 中安裝和使用頂級(jí)<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>