国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

人工智能|機器學(xué)習(xí)——DBSCAN聚類算法(密度聚類)

這篇具有很好參考價值的文章主要介紹了人工智能|機器學(xué)習(xí)——DBSCAN聚類算法(密度聚類)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.算法簡介

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一種基于密度的聚類算法,簇集的劃定完全由樣本的聚集程度決定。聚集程度不足以構(gòu)成簇落的那些樣本視為噪聲點,因此DBSCAN聚類的方式也可以用于異常點的檢測。

2.算法原理

2.1 基本原理

算法的關(guān)鍵在于樣本的‘聚集程度’,這個程度的刻畫可以由聚集半徑和最小聚集數(shù)兩個參數(shù)來描述。如果一個樣本聚集半徑領(lǐng)域內(nèi)的樣本數(shù)達到了最小聚集數(shù),那么它所在區(qū)域就是密集的,就可以圍繞該樣本生成簇落,這樣的樣本被稱為核心點。如果一個樣本在某個核心點的聚集半徑領(lǐng)域內(nèi),但其本身又不是核心點,則被稱為邊界點;既不是核心點也不是邊界點的樣本即為噪聲點。其中,最小聚集數(shù)通常由經(jīng)驗指定,一般是數(shù)據(jù)維數(shù)+1或者數(shù)據(jù)維數(shù)的2倍。

通俗地講,核心點就是構(gòu)成一個簇落的核心成員;邊界點就是構(gòu)成一個簇落的非核心成員,它們分布于簇落的邊界區(qū)域;噪聲點是無法歸屬在任何一個簇集的游離的異常樣本。如圖所示。

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

對于聚成的簇集,這里有三個相關(guān)的概念:密度直達,密度可達,密度相連。

  • 密度直達:對一個核心點p,它的聚集半徑領(lǐng)域內(nèi)的有點q,那么稱p到q密度直達。密度直達不具有對稱性。
  • 密度可達: 有核心點p1,p2,…,pn,非核心點q,如果pi到pi+1(i=1,2,…,n-1)是密度直達的,pn到q是密度直達的,那么稱核心點pi(i=1,2,…,n)到其他的點是密度可達的。密度可達不具有對稱性。
  • 密度相連:如果有核心點P,到兩個點A和B都密度可達,那么稱A和B密度相連。密度相連具有對稱性。

簡單地講,核心點到其半徑鄰域內(nèi)的點是密度直達的;核心點到其同簇集內(nèi)的點是密度可達的;同一個簇集里的成員間是密度相連的。

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

由定義易知,密度直達一定密度可達,密度可達一定密度相連。密度相連就是對聚成的一個簇集最直接的描述。

2.2 算法描述

輸入:樣本集D,聚集半徑r,最小聚集數(shù)MinPts;

輸出:簇集C1,C2,…,Cn,噪聲集O.

根據(jù)樣本聚集程度,傳播式地劃定聚類簇,并將不屬于任何一個簇的樣本劃入噪聲集合。

  • (1)隨機搜尋一個核心點p,

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

  • (2)在核心點p處建立簇C,將r鄰域內(nèi)所有的點加入簇C.
  • (3)對鄰域內(nèi)所有未被標(biāo)記的點迭代式進行考察,擴展簇集.若一個鄰域點q為核心點,則將它領(lǐng)域內(nèi)未歸入集合的點加入簇C中.
  • (4)重復(fù)以上步驟,直至所有樣本劃入了指定集合;
  • (5)輸出簇集C1,C2,…,Cn和噪聲集合O。

3.優(yōu)缺點

3.1 優(yōu)勢

1.可以發(fā)現(xiàn)任意形狀的簇,適用于非凸數(shù)據(jù)集;

2.可以進行異常檢測;

3.不需要指定簇數(shù),根據(jù)樣本的密集程度適應(yīng)性地聚集。

3.2 不足

1.當(dāng)樣本集密度不均勻,不同簇中的平均密度相差較大時,效果較差;

2.聚集半徑和最小聚集數(shù)兩個參數(shù)需人工指定。

4.示例

假設(shè)二維空間中有下列樣本,坐標(biāo)為(1,2),(1,3),(3,1),(2,2),(9,8),(8,9),(9,9),(18,18)

由DBSCAN算法完成聚類操作。

過程演算:

由經(jīng)驗指定參數(shù)聚集半徑r=2,最小聚集數(shù)MinPts=3。

  • (1)隨機搜尋一個核心點,若不存在,返回噪聲集合。考察點(1,2),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共三個樣本點,達到了MinPts數(shù),因此(1,2)為核心點。

  • (2)在核心點(1,2)處建立簇C1,原始簇成員為r鄰域內(nèi)樣本:(1,2)、(1,3)、(2,2)。
  • (3)對簇落C1成員迭代式進行考察,擴展簇集。先考察(1,3),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共三個樣本點,達到了MinPts數(shù),因此(1,3)為核心點,它鄰域內(nèi)的樣本均已在簇C1中,無需進行操作。

再考察(2,2),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共四個樣本點,達到了MinPts數(shù),因此(2,2)為核心點,將它領(lǐng)域內(nèi)尚未歸入任何一個簇落的點(3,1)加入簇C1。

再考察(3,1),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共兩個樣本點,因此(3,1)是非核心點。

考察結(jié)束,簇集C1擴展完畢。

  • (4)在其余未歸簇的樣本點中搜尋一個核心點,若不存在,返回噪聲集合??疾禳c(9,8),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共三個樣本點,達到了MinPts數(shù),因此(9,8)為核心點。

  • (5)在核心點(9,8)處建立簇C2,原始簇成員為r鄰域內(nèi)樣本:(9,8)、(8,9)、(9,9)。
  • (6)對簇落C2成員迭代式進行考察,擴展簇集。先考察(8,9),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共三個樣本點,達到了MinPts數(shù),因此(8,9)為核心點,它鄰域內(nèi)的樣本均已在簇C2中,無需進行操作。

再考察(9,9),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共三個樣本點,達到了MinPts數(shù),因此(9,9)為核心點。它鄰域內(nèi)的樣本均已在簇C2中,無需進行操作。

考察結(jié)束,簇集C2擴展完畢。

  • (7)在其余未歸簇的樣本點中搜尋一個核心點,若不存在,返回噪聲集合。其余未歸簇的樣本點集合為{(18,18)},考察(18,18),它到各點的距離分別為

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

在它的r鄰域內(nèi),包括了自身在內(nèi)的共一個樣本點,未達到MinPts數(shù),因此(18,18)為非核心點。其余未歸簇的樣本中不存在核心點,因此歸入噪聲集O={(18,18)}。

  • (8)輸出聚類結(jié)果

簇類C1:{(1,2),(1,3),(3,1),(2,2)}

簇類C2:{(9,8),(8,9),(9,9)}

噪聲集O:{(18,18)}

5.Python代碼

'''
功能:用python實現(xiàn)DBSCAN聚類算法。
'''
from sklearn.cluster import DBSCAN
import numpy as np
import matplotlib.pyplot as plt

# 初始化數(shù)據(jù)
data = np.array([(1,2),(1,3),(3,1),(2,2),
              (9,8),(8,9),(9,9),
              (18,18)])

# 定義DBSCAN模型
dbscan = DBSCAN(eps=2,min_samples=3)

# 計算數(shù)據(jù),獲取標(biāo)簽
labels = dbscan.fit_predict(data)

# 定義顏色列表
colors = ['b','r','c']
T = [colors[i] for i in labels]

# 輸出簇類
print('\n 聚類結(jié)果: \n')
ue = np.unique(labels)
for i in range(ue.size):
    CLS = []
    for k in range(labels.size):
        if labels[k] == ue[i]:
            CLS.append(tuple(data[k]))
    print('簇類{}:'.format(ue[i]),CLS)

# 結(jié)果可視化
plt.figure()
plt.scatter(data[:,0],data[:,1],c=T,alpha=0.5)  # 繪制數(shù)據(jù)點
plt.show()

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN

神經(jīng)網(wǎng)絡(luò) 密度聚類,人工智能,# 機器學(xué)習(xí)【算法】,人工智能,機器學(xué)習(xí),算法,密度聚類,DBSCAN文章來源地址http://www.zghlxwxcb.cn/news/detail-846051.html

到了這里,關(guān)于人工智能|機器學(xué)習(xí)——DBSCAN聚類算法(密度聚類)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包