DBSCAN 密度聚类
2017-05-25 21:48
471 查看
DBSCAN 密度聚类
DBSCAN算法是一种基于密度的聚类算法:
DBSCAN算法将数据点分为三类:
DBSCAN算法流程:
DBSCAN 密度聚类应用
数据介绍:
现有大学校园网的日志数据,290条大学生的校园网使用情况数据,数据包 括用户ID,设备的MAC地址,IP地址,开始上网时间,停止上网时间,上 网时长,校园网套餐等。利用已有数据,分析学生上网的模式。
实验目的:
通过DBSCAN聚类,分析学生上网时间和上网时长的模式。
代码:
DBSCAN算法是一种基于密度的聚类算法:
• 聚类的时候不需要预先指定簇的个数 • 最终的簇的个数不定
DBSCAN算法将数据点分为三类:
• 核心点:在半径Eps内含有超过MinPts数目的点 • 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内 • 噪音点:既不是核心点也不是边界点的点
DBSCAN算法流程:
1.将所有点标记为核心点、边界点或噪声点; 2.删除噪声点; 3.为距离在Eps之内的所有核心点之间赋予一条边; 4.每组连通的核心点形成一个簇; 5.将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半 径范围之内)。
DBSCAN 密度聚类应用
数据介绍:
现有大学校园网的日志数据,290条大学生的校园网使用情况数据,数据包 括用户ID,设备的MAC地址,IP地址,开始上网时间,停止上网时间,上 网时长,校园网套餐等。利用已有数据,分析学生上网的模式。
实验目的:
通过DBSCAN聚类,分析学生上网时间和上网时长的模式。
代码:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu May 25 20:21:14 2017 @author: xiaolian """ import numpy as np import sklearn.cluster as skc from sklearn import metrics import matplotlib.pyplot as plt mac2id = dict() onlinetimes = [] f = open('TestData.txt', 'r+', encoding = 'utf-8') 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) onlinetimes.append( (starttime, onlinetime) ) else: onlinetimes[ mac2id[mac] ] = [(starttime, onlinetime)] real_x = np.array(onlinetimes) print(onlinetimes) print(real_x) x = real_x[:, 0:1] print(x) plt.hist(x, 24) db = skc.DBSCAN(eps = 0.5, min_samples = 20).fit(x) labels = db.labels_ print(labels) ratio = len(labels[labels[:] == -1]) / len(labels) print(ratio) n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) print(n_clusters_) for i in range(n_clusters_): print('cluster', i, ':') print(list(x[labels == i].flatten()))
相关文章推荐
- 基于密度的聚类之DBSCAN算法
- 基于密度的空间的数据聚类方法DBSCAN(Density-Based Spatial Clustering of Applications with Noise)matlab实现
- 基于密度的聚类----DBSCAN算法使用(R语言)
- 密度聚类(DBSCAN)
- DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)
- 密度聚类之DBSCAN及Python实现
- 聚类算法之DBSCAN(具有噪声的基于密度的聚类方法)
- 白话机器学习算法(三)基于密度的聚类 DBSCAN
- 聚类分析之基于密度的聚类算法(DBSCAN)
- 基于密度的聚类:DBSCAN(Density-based Spatial Clustering of Applications with Noise)
- 机器学习知识点(十八)密度聚类DBSCAN算法Java实现
- python机器学习案例系列教程——DBSCAN密度聚类
- 聚类:dbscan,密度最大值
- DBSCAN密度聚类
- 白话机器学习算法(三)基于密度的聚类 DBSCAN
- 聚类 - 4 - 层次聚类、密度聚类(DBSCAN算法、密度最大值聚类)
- 机器学习实战——python实现DBSCAN密度聚类
- 【Python-ML】SKlearn库密度聚类DBSCAN模型
- 机器学习之聚类(一)密度聚类DBSCAN
- 基于密度的聚类之Dbscan算法