亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么學會DBSCAN聚類算法

發布時間:2021-12-10 10:45:17 來源:億速云 閱讀:330 作者:柒染 欄目:大數據

怎么學會DBSCAN聚類算法,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

DBSCAN是一種非常著名的基于密度的聚類算法。其英文全稱是 Density-Based Spatial Clustering of Applications with Noise,意即:一種基于密度,對噪聲魯棒的空間聚類算法。直觀效果上看,DBSCAN算法可以找到樣本點的全部密集區域,并把這些密集區域當做一個一個的聚類簇。

DBSCAN算法具有以下特點:

  • 基于密度,對遠離密度核心的噪聲點魯棒

  • 無需知道聚類簇的數量

  • 可以發現任意形狀的聚類簇

DBSCAN通常適合于對較低維度數據進行聚類分析。

一,基本概念

DBSCAN的基本概念可以用1,2,3,4來總結。

1個核心思想:基于密度。

直觀效果上看,DBSCAN算法可以找到樣本點的全部密集區域,并把這些密集區域當做一個一個的聚類簇。

怎么學會DBSCAN聚類算法2個算法參數:鄰域半徑R和最少點數目minpoints。

這兩個算法參數實際可以刻畫什么叫密集——當鄰域半徑R內的點的個數大于最少點數目minpoints時,就是密集。

怎么學會DBSCAN聚類算法

3種點的類別:核心點,邊界點和噪聲點。

鄰域半徑R內樣本點的數量大于等于minpoints的點叫做核心點。不屬于核心點但在某個核心點的鄰域內的點叫做邊界點。既不是核心點也不是邊界點的是噪聲點。

怎么學會DBSCAN聚類算法

4種點的關系:密度直達,密度可達,密度相連,非密度相連。

如果P為核心點,Q在P的R鄰域內,那么稱P到Q密度直達。任何核心點到其自身密度直達,密度直達不具有對稱性,如果P到Q密度直達,那么Q到P不一定密度直達。

如果存在核心點P2,P3,……,Pn,且P1到P2密度直達,P2到P3密度直達,……,P(n-1)到Pn密度直達,Pn到Q密度直達,則P1到Q密度可達。密度可達也不具有對稱性。

如果存在核心點S,使得S到P和Q都密度可達,則P和Q密度相連。密度相連具有對稱性,如果P和Q密度相連,那么Q和P也一定密度相連。密度相連的兩個點屬于同一個聚類簇。

如果兩個點不屬于密度相連關系,則兩個點非密度相連。非密度相連的兩個點屬于不同的聚類簇,或者其中存在噪聲點。

怎么學會DBSCAN聚類算法

二,DBSCAN算法步驟

DBSCAN的算法步驟分成兩步。

1,尋找核心點形成臨時聚類簇。

掃描全部樣本點,如果某個樣本點R半徑范圍內點數目>=MinPoints,則將其納入核心點列表,并將其密度直達的點形成對應的臨時聚類簇。

2,合并臨時聚類簇得到聚類簇。

對于每一個臨時聚類簇,檢查其中的點是否為核心點,如果是,將該點對應的臨時聚類簇和當前臨時聚類簇合并,得到新的臨時聚類簇。

重復此操作,直到當前臨時聚類簇中的每一個點要么不在核心點列表,要么其密度直達的點都已經在該臨時聚類簇,該臨時聚類簇升級成為聚類簇。

繼續對剩余的臨時聚類簇進行相同的合并操作,直到全部臨時聚類簇被處理。

怎么學會DBSCAN聚類算法

三,DBSCAN使用范例

1,生成樣本點

import numpy as npimport pandas as pdfrom sklearn import datasets%matplotlib inline
X,_ = datasets.make_moons(500,noise = 0.1,random_state=1)df = pd.DataFrame(X,columns = ['feature1','feature2'])
df.plot.scatter('feature1','feature2', s = 100,alpha = 0.6, title = 'dataset by make_moon')

怎么學會DBSCAN聚類算法

2,調用dbscan接口完成聚類

from sklearn.cluster import dbscan
# eps為鄰域半徑,min_samples為最少點數目core_samples,cluster_ids = dbscan(X, eps = 0.2, min_samples=20) # cluster_ids中-1表示對應的點為噪聲點
df = pd.DataFrame(np.c_[X,cluster_ids],columns = ['feature1','feature2','cluster_id'])df['cluster_id'] = df['cluster_id'].astype('i2')
df.plot.scatter('feature1','feature2', s = 100,    c = list(df['cluster_id']),cmap = 'rainbow',colorbar = False,    alpha = 0.6,title = 'DBSCAN cluster result')

怎么學會DBSCAN聚類算法

關于怎么學會DBSCAN聚類算法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄烦县| 富阳市| 拜泉县| 佛坪县| 南华县| 循化| 连城县| 宜兴市| 鞍山市| 黔东| 保康县| 临汾市| 江安县| 阜南县| 安乡县| 同仁县| 建湖县| 辉县市| 自治县| 太和县| 临泉县| 汝州市| 宜阳县| 汕尾市| 岳阳县| 兴宁市| 湛江市| 开平市| 渑池县| 大连市| 南涧| 清新县| 铜山县| 搜索| 城步| 千阳县| 松溪县| 临夏市| 纳雍县| 凌源市| 克拉玛依市|