学生月上网时间分布-TestData

时间:2024-11-06 21:06:50

Python机器学习应用 | 【第一周】无监督学习 - weixin_42906066的博客 - ****博客
https://blog.****.net/weixin_42906066/article/details/81867175

前置课程没有听,科学计算numpy和matlib画图(shuf)等在硬盘里,看一下会很方便进度。

学生月上网时间分布-TestData

学生月上网时间分布-TestData

学生月上网时间分布-TestData

学生月上网时间分布-TestData

=========

  1. import numpy as np
  2. import sklearn.cluster as skc
  3. from sklearn import metrics
  4. import matplotlib.pyplot as plt
  5. mac2id=dict()
  6. onlinetimes=[]
  7. f=open('TestData.txt',encoding='utf-8')
  8. for line in f:
  9. mac=line.split(',')[2]
  10. onlinetime=int(line.split(',')[6])
  11. starttime=int(line.split(',')[4].split(' ')[1].split(':')[0])
  12. if mac not in mac2id:
  13. mac2id[mac]=len(onlinetimes)
  14. onlinetimes.append((starttime,onlinetime))
  15. else:
  16. onlinetimes[mac2id[mac]]=[(starttime,onlinetime)]
  17. real_X=np.array(onlinetimes).reshape((-1,2))
  18. X=real_X[:,0:1]
  19. db=skc.DBSCAN(eps=0.01,min_samples=20).fit(X)
  20. labels = db.labels_
  21. print('Labels:')
  22. print(labels)
  23. raito=len(labels[labels[:] == -1]) / len(labels)
  24. print('Noise raito:',format(raito, '.2%'))
  25. n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
  26. print('Estimated number of clusters: %d' % n_clusters_)
  27. print("Silhouette Coefficient: %0.3f"% metrics.silhouette_score(X, labels))
  28. for i in range(n_clusters_):
  29. print('Cluster ',i,':')
  30. print(list(X[labels == i].flatten()))
  31. plt.hist(X,24)