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是直接...