def dbscan(userid,X):
db = DBSCAN(eps=0.15,min_samples=4).fit(X)
# print db.labels_ zeros_like
core_samples_mask = np.zeros_like(db.labels_,dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
lables = db.labels_
labels_list = list(lables)
# print labels_list.count(-1)
out_user.setdefault(userid,0)
out_user[userid] = labels_list.count(-1)
print out_user
# print labels_list.index(-1)
print lables
n_clusters_ = len(set(lables)) -(1 if -1 in lables else 0)
unique_lables = set(lables)
cols = plt.cm.Spectral(np.linspace(0,1,len(unique_lables)))
# center_points = []
for k,col in zip(unique_lables,cols):
if k == -1:
col = 'k'
class_member_mask = (lables == k)
k_x = X[class_member_mask & core_samples_mask]
plt.plot(k_x[:,0],k_x[:,1],'o',markerfacecolor = col,
markeredgecolor = 'k' , markersize = 5)
center_points.append([np.mean(k_x[:,1]),np.mean(k_x[:,0])])
plt.title('DBSCAN :Estimated number of clusters: %d' % n_clusters_)
# plt.show()
评论列表
文章目录