1. 程式人生 > >機器學習-*-DBSCAN聚類及程式碼實現

機器學習-*-DBSCAN聚類及程式碼實現

DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪聲的基於密度的聚類方法)

原理

首先描述以下幾個概念,假設我們有資料集 D = { x 1

, x 2 , x 3 , . .
. , x n } D=\{x_1,x_2,x_3,...,x_n\} ,則
1. ϵ
\epsilon
鄰域:對於 x i D \forall x_i\in D ,有 N ϵ ( x i ) = { x j d i s t a n c e ( x i , x j ) < ϵ , i j } N_{\epsilon}(x_i)=\{x_j|distance(x_i,x_j)<\epsilon,此處認為i可以等於j\} ,該鄰域的資料個數為 C ( N ϵ ( x i ) ) C(N_{\epsilon}(x_i))
2.核心點:設最小鄰域內個數為 m i n p t s minpts ,若一點 x i x_i ϵ \epsilon 鄰域的 C ( N ϵ ( x i ) ) > = m i n p t s C(N_{\epsilon}(x_i))>=minpts ,則稱該點為核心點
3.邊界點:若一點 x i x_i ϵ \epsilon 鄰域內 C ( N ϵ ( x i ) ) < m i n p t s C(N_{\epsilon}(x_i))<minpts ,且處於核心點鄰域內的點,則稱該點為邊界點
4.噪聲點:不是核心點和邊界點的其他點為噪聲點。
5.密度直達:如果 x i x_i 在核心點 x j x_j 的鄰域內,則它倆就是密度直達的
6.密度可達:若有核心物件序列 k 1 , k 2 , k 3 , . . . , k m k_1,k_2,k_3,...,k_m ,若 k t + 1 k_{t+1} 均可以由 k t k_t 密度直達,則稱 k 1 k_1 k m k_m 密度可達
密度直達和密度可達是不對稱的,不能絕對的反向匯出,參見參考文獻1
7.密度相連:有點 x i x_i x j x_j ,若他們與核心物件 x k x_k 密度可達,那麼他們倆是密度相連的。這個概念可以對稱的。
下邊是網上擷取的相關示例
在這裡插入圖片描述

聚類流程

首先闡述一下聚類的思想:以某一核心點為基點,根據密度可達關係、密度相連關係,匯出最大樣本集類簇,此為第一個類簇;再從剩下的核心點中選取新的為基點重複上述過程;直到所有的核心點被選取完畢,若剩下了樣本點,每一個樣本點均為一個類別。
具體流程:
1.初始化核心點集合 Ψ \Psi ,遍歷資料找到所有的核心點,建立類簇集合 C C
2.若 Ψ = \Psi =\emptyset 停止迭代 轉6,否則 Ψ \Psi 中隨機選取一個核心點 o o (不放回),轉3
3.以當前核心點為原點建立一個新的類簇 C o C_o ,建立當前子樣本集 D o D_o ,子核心點集 Ψ o \Psi_{o} ,將核心點加入 Ψ o \Psi_{o} D o D_o
4.遍歷 Ψ o \Psi_{o} ,拿取一個核心點(不放回),查詢其相關鄰域內的點 N ϵ o N_{\epsilon}o N ϵ o N_{\epsilon}o 中的點加入 D o D_o ,將 N ϵ o N_{\epsilon}o 與原始核心點集 Ψ \Psi 做交集,得到的集合再與 Ψ o \Psi_{o} 做並集。
5.不斷重複3-4,直到 Ψ o \Psi_{o} 為空,將 D o D_o 中的點作為類簇 C o C_o 的成員, C o C_o 加入 C C ,轉2
6.查詢餘下的未加入到 C C

相關推薦

機器學習-*-DBSCAN程式碼實現

DBSCAN DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪聲的基於密度的聚類方法) 原理 首先描述以下幾個概念,假設我們有資料集

機器學習-*-K均值程式碼實現

KMeans聚類 在聚類演算法中,最出名的應該就是k均值聚類(KMeans)了,幾乎所有的資料探勘/機器學習書籍都會介紹它,有些初學者還會將其與KNN等混淆。k均值是一種聚類演算法,屬於無監督學習的一種,而KNN是有監督學習/分類學習的一種。 聚類:顧名思義,就是講某些相似的事物聚在

Python機器學習——DBSCAN

  密度聚類(Density-based Clustering)假設聚類結構能夠通過樣本分佈的緊密程度來確定。DBSCAN是常用的密度聚類演算法,它通過一組鄰域引數(ϵ,MinPts)來描述樣本分佈的緊密程度。給定資料集D={x⃗ 1,x⃗ 2,x⃗ 3,.

機器學習-*-MeanShift演算法程式碼實現

MeanShift 該演算法也叫做均值漂移,在目標追蹤中應用廣泛。本身其實是一種基於密度的聚類演算法。 主要思路是:計算某一點A與其周圍半徑R內的向量距離的平均值M,計算出該點下一步漂移(移動)的方向(A=M+A)。當該點不再移動時,其與周圍點形成一個類簇,計算這個類簇與歷史類簇的距

機器學習經典演算法 —— k-均值演算法(附python實現程式碼資料集)

目錄 工作原理 python實現 演算法實戰 對mnist資料集進行聚類 小結 附錄 工作原理 聚類是一種無監督的學習,它將相似

機器學習之層次程式碼示例

一、層次聚類 層次聚類是無監督學習方法,可對給定的N個待聚類的樣本進行層次的分類,直到某種條件(類的個數、類間的距離超過某個閾值)滿足為止。 1、層次聚類的劃分 對於層次聚類,可具體分為: a. 凝聚的(agglomerative)層次聚類: 採用

機器學習-K均值(python3程式碼實現)

K均值聚類 哈爾濱工程大學-537 演算法原理: K均值是發現給定資料集的kk個簇的演算法。簇個數kk是使用者給定的,每一個簇通過其質心(centroid),即簇中所有點的中心來描述。 K均值演算法的工作流程是:首先隨機確定kk個初始點作為質心。然後

機器學習之劃分程式碼示例

一、聚類 聚類是一種無監督學習,根據樣本的內在相似性/距離,將大量未知標記的樣本集劃分為多個類別,使得同一個類別內的樣本相似度較大(距離較小),而不同類別間的樣本相似度較小(距離較大)。 劃分聚類包含K-Means、Bisecting K-Means(二分K

吳裕雄 python 機器學習——密度DBSCAN模型

ted itl 機器學習 blob pri plt matplot space ase import numpy as np import matplotlib.pyplot as plt from sklearn import cluster from s

機器學習-KMeans K值以及初始簇中心點的選取

src 常用 趨勢 試圖 重復執行 很大的 一個點 3.4 選擇 【轉】http://www.cnblogs.com/kemaswill/archive/2013/01/26/2877434.html 本文主要基於Anand Rajaraman和Jeffrey David

機器學習演算法--

常見的無監督學習型別:聚類任務  密度估計  異常檢測 聚類演算法試圖將樣本分成k個不想交的子集,每個子集稱為一個簇,對應一些潛在的概念。 樣本集x={x1, x2....xm} 每個樣本Xi={xi1,xi2...xin}對應n個特徵 劃分為K個不同的類別C={C1

[五]機器學習

5.1 實驗概要 通過K-Mean,譜聚類,DBSCAN三種演算法解決基本的聚類問題,使用sklearn提供的聚類模組和鳶尾花資料集,對聚類效果進行橫向比較。 5.2 實驗輸入描述 資料集:鳶尾花資料集,詳情見[機器學習之迴歸]的Logistic迴歸實驗 5.3 實驗步驟 匯入資

機器學習6---簡述

一、 聚類介紹 聚類屬於“無監督學習”的一種,即訓練樣本的標籤資訊在訓練過程中是不被使用的,這也是區別於分類的重要特徵。 從數學角度而言,聚類是將樣本集劃分成k個不相交的“簇”,並且使用作為第i個簇的標記(cluster label)。 聚類演算法可以單獨作為一個劃分資料的過程,也可

【深度學習】ResNet解讀程式碼實現

簡介 ResNet是何凱明大神在2015年提出的一種網路結構,獲得了ILSVRC-2015分類任務的第一名,同時在ImageNet detection,ImageNet localization,COCO detection和COCO segmentation等任務中均獲得了第一名,在當

機器學習---1.演算法綱領總結

     近期定了研究生畢設的課題,有種一錘定兩年的趕腳。心裡還是有點方,只好天天催眠自己現在的選擇就是最好的選擇。      其中一塊應該會用到聚類演算法,這就需要我對各種種類的適用條件、引數摸清楚了,到時候再選出效果最好的聚類方式。

吳恩達機器學習演算法的引數選擇以及優化

對於K(k<樣本量的)均值聚類,一般引數的自定義主要有兩個,一個是聚類中心初始位置的選擇,二是K值的選擇 優化目標:每個樣本點到該點聚類中心的平方的累加 解決聚類中心的初始化問題: 隨機挑選樣本點作為聚類中心,這個過程重複50-1000次,選出J值最低的(通常K值為2-10的時候

機器學習之AdaBoost原理與程式碼實現

1 2.000000 1.000000 38.500000 66.000000 28.000000 3.000000 3.000000 0.000000 2.000000 5.000000 4.000000 4.000000 0.0

機器學習之KNN原理與程式碼實現

                                      KNN原理與程式碼實現 KNN原理 KNN(k-Nearest Neighbour):K-近鄰演算法,主要思想可以歸結為一個成語:物以類聚 工作原理 給定一個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的 k (k

機器學習之神經網路python實現

神經網路在機器學習中有很大的應用,甚至涉及到方方面面。本文主要是簡單介紹一下神經網路的基本理論概念和推算。同時也會介紹一下神經網路在資料分類方面的應用。 首先,當我們建立一個迴歸和分類模型的時候,無論是用最小二乘法(OLS)還是最大似然值(MLE)都用來使得殘差達到最小。因此我們在建立模型的時候,都會有一個l

機器學習(二)

在機器學習和資料探勘中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。最常見的是資料分析中的相關分析,資料探勘中的分類和聚類演算法,如 K 最近鄰(KNN)和 K 均值(K-Means)等等。根據資料特性的不同,可以採用不同的度量方法