機器學習 學習筆記 DBSCAN密度聚類

2021-09-29 03:56:23 字數 1803 閱讀 9199

dbscan密度聚類演算法是一種基於密度的聚類演算法:

dbscan密度聚類演算法將資料點分為三類:

演算法過程:

import numpy as np

from sklearn.cluster import dbscan

dbscan主要引數:

import numpy as np

import sklearn.cluster as skc

from sklearn import metrics

import matplotlib.pyplot as plt

mac2id =

dict()

onlinetimes =

f =open

('textdata.txt'

)for line in f:

mac = line.split(

',')[2

] onlinetime =

int(line.split(

',')[6

])starttime =

int(line.split(

',')[4

].split(

' ')[1

].split(

':')[0

])if mac not

in mac2id:

mac2id[mac]

=len

(onlinetimes)

(starttime, onlinetime)

)else

: onlinetimes[mac2id[mac]]=

[(starttime, onlinetime)

]real_x = np.array(onlinetimes)

.reshape((-

1,2)

)x = real_x[:,

0:-1

]db = skc.dbscan(eps=

0.01

, min_samples=20)

.fit(x)

labels = db.labels_

print

("labels:"

)print

(labels)

raito =

len(labels[labels[:]

==-1]

)/len(labels)

print

("noise raito:"

,format

(raito,

".2%"))

n_clusters_ =

len(

set(labels))-

(1if-

1in labels else0)

print

('estinated number of clusters: %d'

% n_clusters_)

print

('silhouette coefficient: %0.3f'

% metrics.silhouette_score(x, labels)

)for i in

range

(n_clusters_)

:print

('cluster '

, i,

':')

print

(list

(x[labels == i]

.flatten())

)# 轉化成直方圖形式分析

plt.hist(x,

24)

機器學習之DBSCAN聚類

coding utf 8 created on wed nov 28 18 50 57 2018 author muli import numpy as np from sklearn.datasets.samples generator import make blobs from sklearn...

機器學習 密度聚類演算法 DBSCAN

1.密度聚類 基於密度的聚類演算法由於能夠發現任意形狀的聚類,識別資料集中的雜訊點,可伸縮性好等特點,在許多領域有著重要的應用。密度演算法概念 1 如果乙個資料點周圍足夠稠密,也就是以這個點為中心,給定半徑的鄰域內的資料點足夠多,密度大於密度閾值 使用者指定的引數minpts 則稱這個資料點為核心資...

機器學習 聚類系列 DBSCAN演算法

dbscan演算法 核心物件 若某個點的密度達到演算法設定的閾值則其為核心點。即 r 鄰域內點的數量不小於 minpts 鄰域的距離閾值 設定的半徑r 直接密度可達 若某點p在點q的 r 鄰域內,且q是核心點則p q直接密度可達。密度可達 若有乙個點的序列q0 q1 qk,對任意qi qi 1是直接...