聚类(1)----DBSCAN实例
来源:互联网 发布:四知的翻译 编辑:程序博客网 时间:2024/05/22 03:23
DBSCAN算法是一种基于密度聚类算法:
- 聚类的时候不需要预先指定簇的个数
- 最终簇的个数不一定
DBSCAN算法将数据点分为三类:
- 核心点:在半斤EPS内含有超过MinPts数目的点
- 边界点:在半斤EPS内点的数量小于MinPts,但是落在核心点的领域内
算法流程:
1. 对所有点计算其领域Eps=distance内的点的集合
2. 集合内的点个数超过MinPt3=count的点为核心点
3. 查看剩余点是否在核心点的领域内,若在则为边界点,否则为噪声点
import numpy as npimport sklearn.cluster as skcfrom sklearn import metricsimport matplotlib.pyplot as pltmac2id = dict()onlinetimes = []f = open('/Users/tangweize/Desktop/TestData.txt', encoding='utf-8')for line in f: mac = line.split(',')[2] onlinetime = int(line.split(',')[6]) #上网时间长度 #print(onlinetime) starttime = int(line.split(',')[4].split(' ')[1].split(':')[0])#上网开始时间,2014-07-20 22:44:18.540000000,提取其中的小时 if mac not in mac2id: #mac2id是个字典,给每个mac地址编id序号 mac2id[mac] = len(onlinetimes) onlinetimes.append((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) #DBSCAN聚类方法 还有参数,matric = ""距离计算方法labels = db.labels_ #和X同一个维度,labels对应索引序号的值 为她所在簇的序号print('Labels:')print(labels)raito = len(labels[labels[:] == -1]) / len(labels) #计算噪声点个数占总数的比例print('Noise raito:', format(raito, '.2%'))n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)print('Estimated 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())) #flatten 合并子维度的数组 ("C")按照列来合并,("F")按照行合并plt.hist(X, 24) #24条数plt.show()
阅读全文
0 0
- 聚类(1)----DBSCAN实例
- DBSCAN 聚类
- DBSCAN聚类
- DBSCAN 聚类
- 聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法
- 聚类:dbscan,密度最大值
- 聚类-DBSCAN算法
- 聚类(k-means,dbscan,..)
- DBSCAN聚类point cloud
- DBSCAN
- DBSCAN
- 机器学习算法-DBSCAN聚类
- 密度聚类(DBSCAN)
- 聚类方法:DBSCAN算法研究(3)--C++代码实现及与matlab实例结果比较
- 5.3、聚类之DBSCAN聚类实例
- 用scikit-learn学习DBSCAN聚类
- 用scikit-learn学习DBSCAN聚类
- Python机器学习——DBSCAN聚类
- mysql开启慢查询日志及查询--windows
- B.Twins
- Redis之——配置详解
- java.lang.ArrayIndexOutOfBoundsException
- JavaScript常用语法说明
- 聚类(1)----DBSCAN实例
- docker入门命令教程
- 利用bootstrap的modal组件自定义alert,confirm和modal对话框
- 动态代理模拟连接池
- windows网络编程(二)——传送图片
- ECMAScript 6(15)对象的扩展(1)——简写、属性名拼接、name
- C.进制转换
- redis基础知识
- Android生命周期学习笔记