样本:

import numpy as np
import sklearn.cluster as skc
from sklearn import metrics
import matplotlib.pyplot as plt mac2id = dict()
onlinetimes = []
f = open('D:\python_source\Machine_study\mooc课程数据\课程数据\聚类\学生月上网时间分布-TestData.txt', encoding='utf-8')
for line in f:
mac = line.split(',')[2] #获取mac地址
onlinetime = int(line.split(',')[6]) #上网时间,单位为秒
starttime = int(line.split(',')[4].split(' ')[1].split(':')[0])#源数据为,2014-07-20 22:44:18.540000000,提取出22
if mac not in mac2id:
mac2id[mac] = len(onlinetimes) #字典,key-mac,??value-上网时长和上网时间/0,1,2,3,4,5,6,7
onlinetimes.append((starttime, onlinetime)) else:
onlinetimes[mac2id[mac]] = [(starttime, onlinetime)] real_X = np.array(onlinetimes).reshape((-1, 2)) #二维数组 X = real_X[:, 0:1] #提取出开始时间点
#S = np.log(1 + real_X[:, 1:]) 对数变换
#print(S)
db = skc.DBSCAN(eps=0.01, min_samples=20).fit(X) #lables为每个数据的簇标签
lables = db.labels_ print('Lables:')
print(lables) #分为7类标签
#输出噪点比例
raito = len(lables[lables[:] == -1])/len(lables)
print('Noise raito:', format(raito, '.2%')) n_clusters = len(set(lables)) - (1 if -1 in lables else 0) #噪点为-1,如果有噪点,则7-1==6类 print('Estimated nuber of clusters: %d' %n_clusters)
print("Silhouetts Coefficient: %0.3f" %metrics.silhouette_score(X, lables)) #聚类效果评价指标 for i in range(n_clusters):
print('Cluster', i, ':')
print(list(X[lables == i].flatten())) plt.hist(X, 24)
plt.show()

效果图

最新文章

  1. Linux SVN 命令详解(zz)
  2. 【转载】 Pyqt QStackedWidget堆栈窗体
  3. Python strange questions list
  4. unity 翻牌游戏(全都是gui)
  5. phpcms v9 源码解析(4)content模块下的index.php文件的init()方法解析
  6. [编译] g++ 与 Makefile
  7. Java 热部署深入探索
  8. 常用的JQuery UI框架
  9. RelativeLayout与LinearLayout的区别
  10. php - preg_match
  11. Ubuntu下安装Intellij IDEA和PyCharm
  12. iOS中self与_的区别
  13. 关于Spring的69个面试题
  14. mybatis代码生成器——MyBatis Generator
  15. 【Vagrant】-NO.130.Vagrant.2 -【Error:the filesystem "vboxsf" is not available】
  16. Microsoft SQL - 操作语句
  17. 阿里云申请免费https证书 + IIS服务器安装
  18. MySQL 5.7--复制延迟监控
  19. WP8.1 中获取背景色和主题色
  20. redis-Sentinel配置

热门文章

  1. MySQL windows中的存储备份
  2. Journal of Proteome Research | Global Proteomic Analysis of Lysine Succinylation in Zebrafish (Danio rerio) (解读人:关姣)
  3. 为什么Mysql的常用引擎都默认使用B+树作为索引?
  4. SVN分支合并指南
  5. go第三方常用包
  6. body体里面传///貌似jmeter不支持
  7. Redis底层函数详解
  8. Java 访问修饰符大全详解
  9. GIS中地图投影的定义
  10. 初识js(第一篇)