Python机器学习--聚类
K-means聚类算法



测试:
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 31 10:59:20 2017 @author: Administrator
""" '''
现有1999年全国31个省份城镇居民家庭平均每人全年消费性支出的八个主
要变量数据,这八个变量分别是:食品、 衣着、 家庭设备用品及服务、 医疗
保健、 交通和通讯、 娱乐教育文化服务、 居住以及杂项商品和服务。 利用已
有数据,对31个省份进行聚类。
''' import numpy as np
from sklearn.cluster import KMeans def loadData(filePath):
fr = open(filePath,'r+')
lines = fr.readlines()
retData = []
retCityName = []
for line in lines:
items = line.strip().split(",")
retCityName.append(items[0])
retData.append([float(items[i]) for i in range(1,len(items))])
return retData,retCityName if __name__ == '__main__': fpath='F:\RANJIEWEN\MachineLearning\Python机器学习实战_mooc\data\聚类\\'
data,cityName = loadData(fpath+'city.txt')
km = KMeans(n_clusters=4)
label = km.fit_predict(data)
expenses = np.sum(km.cluster_centers_,axis=1)
#print(expenses)
CityCluster = [[],[],[],[]]
for i in range(len(cityName)):
CityCluster[label[i]].append(cityName[i])
for i in range(len(CityCluster)):
print("Expenses:%.2f" % expenses[i])
print(CityCluster[i])
DBSCAN密度聚类





测试
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 31 11:14:37 2017 @author: Administrator
""" '''
现有大学校园网的日志数据,290条大学生的校园网使用情况数据,数据包
括用户ID,设备的MAC地址,IP地址,开始上网时间,停止上网时间,上
网时长,校园网套餐等。 利用已有数据,分析学生上网的模式。
实验目的:
通过DBSCAN聚类,分析学生上网时间和上网时长的模式。 ''' import numpy as np
import sklearn.cluster as skc
from sklearn import metrics
import matplotlib.pyplot as plt mac2id=dict()
onlinetimes=[] fpath='F:\RANJIEWEN\MachineLearning\Python机器学习实战_mooc\data\聚类\\'
f=open(fpath+'TestData.txt',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).reshape((-1,2)) X=real_X[:,0:1] ## 聚类数据变换技巧
# X=np.log(1+real_X[:,1:]) db=skc.DBSCAN(eps=0.01,min_samples=20).fit(X)
labels = db.labels_ print('Labels:')
print(labels)
raito=len(labels[labels[:] == -1]) / len(labels)
print('Noise raito:',format(raito, '.2%')) 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('Cluster ',i,':')
print(list(X[labels == i].flatten())) plt.hist(X,24)
基于聚类的图像分割



测试
# -*- coding: utf-8 -*-
"""
Created on Thu Aug 31 15:03:11 2017 @author: Administrator
""" '''
目标:利用K-means聚类算法对图像像素点颜色进行聚类实现简单的图像分割
输出:同一聚类中的点使用相同颜色标记,不同聚类颜色不同
''' import numpy as np
import PIL.Image as image
from sklearn.cluster import KMeans def loadData(filePath):
f = open(filePath,'rb')
data = []
img = image.open(f)
m,n = img.size
for i in range(m):
for j in range(n):
x,y,z = img.getpixel((i,j))
data.append([x/256.0,y/256.0,z/256.0])
f.close()
return np.mat(data),m,n imPath='F:\RANJIEWEN\MachineLearning\Python机器学习实战_mooc\data\基于聚类的整图分割\\'
imgData,row,col = loadData(imPath+'bull.jpg')
label = KMeans(n_clusters=4).fit_predict(imgData) label = label.reshape([row,col])
pic_new = image.new("L", (row, col))
for i in range(row):
for j in range(col):
pic_new.putpixel((i,j), int(256/(label[i][j]+1)))
pic_new.save("result-bull-4.jpg", "JPEG")
Python机器学习--聚类的更多相关文章
- 吴裕雄 python 机器学习——聚类
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets.samples_generator import ma ...
- 常用python机器学习库总结
开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...
- [Python] 机器学习库资料汇总
声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...
- 2016年GitHub排名前20的Python机器学习开源项目(转)
当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...
- [resource]Python机器学习库
reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...
- 你不得不看的Python机器学习工具
IEEE Spectrum排行榜第一,Skill UP排名第一的开发工具,Stack Overflow年度调查中程序员最感兴趣的选择,Stack Overflow 6月份访问量最多的编程语言..... ...
- python机器学习工具包
1. scikit-learn: Machine Learning in Python scikit-learn是一个基于NumPy, SciPy, Matplotlib的开源机器学习工具包,主要涵盖 ...
- Python机器学习笔记:常用评估指标的用法
在机器学习中,性能指标(Metrics)是衡量一个模型好坏的关键,通过衡量模型输出y_predict和y_true之间的某种“距离”得出的. 对学习器的泛化性能进行评估,不仅需要有效可行的试验估计方法 ...
- 只需十四步:从零开始掌握 Python 机器学习(附资源)
分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...
随机推荐
- Mycat主从分离
1. mycat原理 主从的读写是不同的,主能写能读,再从上写是无法同步到主的,因此需要中间件将主从的读写进行分离,使得主从各司其职,相当于负载均衡的作用.中间件可以是proxy或者mycat.客户端 ...
- Javaweb开发之路
本文作者:DavidLin 欢迎转载,但请保留文章原始出处→_→ 本文地址:http://www.cnblogs.com/univeryinli/p/programming-skill-yinli.h ...
- NFS基础优化
一.环境 环境接上篇 https://www.cnblogs.com/suffergtf/p/9486250.html 二.参数详解 1.nfsserver端配置参数详解 [root@nfsserve ...
- 常用c++函数
strrev(str) (str为字符串)倒序输出字符串 floor(x),有时候也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整 ...
- 在oracle中怎么通过字段名查询其所在的表
ora = //连接描述符名:ora (description = //描述 (address = //网络地址之一 (protocol = tcp) //网络协议(tcp表示TCP/IP协议) (h ...
- 模板<最小生成树>
转载 最小生成树浅谈 这里介绍最小生成树的两种方法:Prim和Kruskal. 两者区别:Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣.Prim是以更新过的节点的连边找最小值,K ...
- Web开发细节搜集
App_Data 百度百科: App_Data文件夹应该包含应用程序的本地数据存储.它通常以文件(诸如Microsoft Access或Microsoft SQL Server Express数据库 ...
- HDU-4612 Warm up,tarjan求桥缩点再求树的直径!注意重边
Warm up 虽然网上题解这么多,感觉写下来并不是跟别人竞争访问量的,而是证明自己从前努力过,以后回头复习参考! 题意:n个点由m条无向边连接,求加一条边后桥的最少数量. 思路:如标题,tarjan ...
- HDU-4738 Caocao's Bridges,注意重边不是桥!
Caocao's Bridges 题意:曹操赤壁之战后卷土重来,他在n个小岛之间建立了m座桥.现在周瑜只有一颗炮弹,他只能炸毁一座桥使得这些岛屿不再连通.每座桥上都可能会有士兵把手,如果想安放***那 ...
- BZOJ 1027 [JSOI2007]合金 ——计算几何
我们可以把每一种金属拆成一个二维向量,显然第三维可以计算出来,是无关的. 我们只需要考虑前两维的情况,显然可以构成点集所形成的凸包内. 然后我们枚举两两的情况,然后可以发现如果所有的点都在一侧是可以选 ...