<第一周> city中国城市聚类 testdata学生上网聚类 例子
中国城市聚类###
# -*- coding: utf-8 -*-
kmeans算法
"""
Created on Thu May 18 22:55:45 2017
@author: sfzyk
"""
import numpy as np
#import sklearn as skl
from sklearn.cluster import KMeans
import os
os.chdir(r"D:\mechine_learning\mooc_data")
def loaddata(file):
fr=open(file)
lines=fr.readlines()#按照行分割 \n为标志(存在
city_data=[]
city_name=[]
for line in lines:
d=line.split(",")
city_name.append(d[0])
city_data.append([float(d[i]) for i in range(1,len(d))])
return city_name,city_data
city_name,city_data=loaddata("31省市居民家庭消费水平-city.txt")
km=KMeans(n_clusters=10)
label=km.fit_predict(city_data)
expenses=np.sum(km.cluster_centers_,axis=1)
city_cluster=[]
for i in range(km.n_clusters):
city_cluster.append([])
city_cluster[i].append(expenses[i])
for i in range(len(city_name)):
city_cluster[label[i]].append(city_name[i])
# city_cluster,key=lambda x : x[0]
city_cluster.sort(key=lambda x:x[0])
for i in range(len(city_cluster)):
print(city_cluster[i])
学生上网数据聚类###
bdscan算法
# -*- coding: utf-8 -*-
"""
Created on Mon May 22 16:24:53 2017
@author: sfzyk
"""
import numpy as np
import sklearn as skl
from sklearn import metrics
import matplotlib.pyplot as plt
mac2id=dict()
onlinetimes=[]
f=open("学生月上网时间分布-TestData.txt",encoding='utf-8')
#这里的encoding 是有必要的 不知道在开始指定coding是什么意思
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).reshape((-1,2))
X=real_X[:,0:1]
dbscan=skl.cluster.DBSCAN(eps=0.03,min_samples=20).fit(X)
labels=dbscan.labels_
ratio=len(labels[labels[:]==-1])/len(labels)
print("noise ratio %f"%ratio)
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("Clusters ",i,":")
print(list(X[labels==i].flatten()))
#flatten nX1 - 1Xn
plt.hist(X,24)
这里有一个Silhouette coefficient是一个轮廓系数,用于评价聚类效果
<第一周> city中国城市聚类 testdata学生上网聚类 例子的更多相关文章
- 第一周<单元一聚类>
K-means 聚类算法 初始随机选择 而后不断更新 kmeans 应用 省份归类 调用kmeans方法所需要的参数 n_clusters 指定的聚类中心 init 初始聚类中心的初始化方法 默认k- ...
- 第一周 总结笔记 / 斯坦福-Machine Learning-Andrew Ng
课程主页:https://www.coursera.org/learn/machine-learning/home/welcome 收集再多的资料也没用,关键是要自己理解总结,做笔记就是一个归纳总结的 ...
- 20135328信息安全系统设计基础第一周学习总结(Linux应用)
学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/ ...
- Python学习之旅--第一周--初识Python
一:Python是一种什么样的语言? 1.语言的分类: a.编译型语言和解释性语言: 通常所说的计算机语言分为编译型和解释型语言.编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机 ...
- 王燕 201771010126《面向对象程序设计(java)》第一周学习总结
王燕 201771010126<面向对象程序设计(java)>第一周学习总结 王燕 201771010126<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部 ...
- Java第一周作业
Java第一周作业 本周作业: 参考<<教材学习指导(http://www.cnblogs.com/rocedu/p/7911138.html)) 学习第一章视频 参考<<使用 ...
- 《Java程序设计》 第一周学习总结
20175313 <Java程序设计>第一周学习总结 教材学习内容总结 了解Java的四个特点 学习JDK的安装以及系统环境变量的设置 掌握Java源文件命名.编译.运行 熟悉git的常用 ...
- 马凯军201771010116《面向对象程序设计(java)》第一周学习总结
马凯军201771010116<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.co ...
- 周强201771010141《面向对象程序设计(java)》第一周学习总结
周强201771010141<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com ...
随机推荐
- IDEA取消形参名显示
idea默认情况下如显示形参名,看起来有点不习惯 现在设置去掉 (1)点击工具栏上的快捷按钮(快捷键:alt + ctrl + s) 或者"File" -> "Se ...
- python字典的基本操作,以及可变数据类型和不可变数据类型的区分
字典:采用键值对存储数据的数据类型,字典的键必须是不可变的数据类型 补充: 不可变(可哈希)数据类型:str,bool,int,tuple 可变(不可哈希)数据类型:list, dict, set ...
- get请求中文乱码
get请求时要将url进行encodeURI http://www.ruanyifeng.com/blog/2010/02/url_encoding.html http://www.ruanyifen ...
- Java程序员面试题收集(2)
1 String = 与 new 的不同 使用“=”赋值不一定每次都创建一个新的字符串,而是从“字符串实例池”中查找字符串.使用“new”进行赋值,则每次都创建一个新的字符串. 2 String与S ...
- VS2015使用Nuget安装OpenCV3.X以及Python3安装OpenCV3.X
VS2015已经自带Nuget安装工具了,所以,新建一个项目,点击管理Nuget包 搜索OpenCV3 注意,目前只有这个版本支持VS2015,也就是平台工具集可以为vs140,其他的都会报错,报错我 ...
- Django之ORM多表操作
1.创建一对多: 1.外键建在多的一方(如:一个出版社可出版多本书,所以建在书的表) 2.创建表: 1.创建外键 2.关联的表名 2.一对多数据的操作 2.1数据的添加: 第一种方法: 第二种方法: ...
- LA3516 Exploring Pyramids
Exploring Pyramids 题目大意:给定一个欧拉序列(即每经过一个点,把这个点加入序列),问有多少种对应的多叉树 序列与树构造对应问题,考虑区间DP dp[i][j]表示序列i...j对应 ...
- 跟我一起写一个chrome扩展程序
在我没有看这本书之前,我都想象不到,原来chrome扩展程序可以这样写,真的非常有意思. 就是用最简单最基础的代码,然后就实现了一些非常有意思的玩意儿. 先看效果图 实际运用要和现实联系在一起,经历和 ...
- 【笔记】LR集合点
集合点的引入是为了模拟并发场景: 1.模拟多用户相同操作的并发. 2.模拟多用户不同操作的并发.(把集合点的名字改成一个就可以了) 在脚本中插入集合点 集合点只需要在脚本中插入rendezvous即可 ...
- CSS Reset(CSS重置)
CSS Reset是指重设浏览器的样式.在各种浏览器中,都会对CSS的选择器默认一些数值,譬如当h1没有被设置数值时,显示一定大小. 但并不是所有的浏览器都使用一样的数值,所以有了CSS Reset, ...