2019-07-28【机器学习】无监督学习之聚类 DBSCAN方法及其应用 (在线大学生上网时间分析)...
2019-07-30 21:58
302 查看
原文链接:http://www.cnblogs.com/ymzm204/p/11273071.html
样本:
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()
效果图
转载于:https://www.cnblogs.com/ymzm204/p/11273071.html
相关文章推荐
- 无监督学习--DBSCAN密度聚类方法及应用
- Python机器学习应用 | 聚类——DBSCAN方法及应用
- 机器学习--无监督学习之K-means聚类方法
- 机器学习第四篇(stanford大学公开课学习笔记) —生成型学习算法之高斯判别分析模型和朴素贝叶斯方法
- 机器学习两种方法——监督学习和无监督学习(通俗理解)
- Stanford机器学习[第二课]-监督学习应用和梯度下降
- 机器学习--监督学习应用(梯度下降)
- 评估文本评论情感分析的机器学习和非监督语义倾向性方法(IEEE2012)
- 应用机器学习(一):聚类分析
- Andrew Ng机器学习笔记week8 无监督学习(聚类、PCA)
- 求最大子序列和的四种经典方法及其算法时间复杂度分析
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
- 时间序列预测基础教程系列(3)_机器学习中的 无监督学习,有监督学习,半监督学习
- 【学习笔记】python版希尔排序及其时间复杂度分析
- Andrew Ng 机器学习 第一课 监督学习应用.梯度下降 笔记
- 复分析学习10——Liouville定理及其应用
- 应用时间序列分析(王燕)学习笔记1
- Python 数据分析(二 本实验将学习利用 Python 数据聚合与分组运算,时间序列,金融与经济数据应用等相关知识
- 斯坦福大学公开课机器学习课程(Andrew Ng)二监督学习应用 梯度下降
- Stanford大学机器学习公开课(二):监督学习应用与梯度下降