软件——机器学习与Python,聚类,K——means
K-means是一种聚类算法:
这里运用k-means进行31个城市的分类
城市的数据保存在city.txt文件中,内容如下:
BJ,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64
TianJin,2459.77,495.47,697.33,302.87,284.19,735.97,570.84,305.08
HeBei,1495.63,515.90,362.37,285.32,272.95,540.58,364.91,188.63
ShanXi,1406.33,477.77,290.15,208.57,201.50,414.72,281.84,212.10
NMG,1303.97,524.29,254.83,192.17,249.81,463.09,287.87,192.96
LiaoNing,1730.84,553.90,246.91,279.81,239.18,445.20,330.24,163.86
JiLin,1561.86,492.42,200.49,218.36,220.69,459.62,360.48,147.76
HLJ,1410.11,510.71,211.88,277.11,224.65,376.82,317.61,152.85
ShangHai,3712.31,550.74,893.37,346.93,527.00,1034.98,720.33,462.03
JiangSu,2207.58,449.37,572.40,211.92,302.09,585.23,429.77,252.54
ZheJiang,2629.16,557.32,689.73,435.69,514.66,795.87,575.76,323.36
AnHui,1844.78,430.29,271.28,126.33,250.56,513.18,314.00,151.39
FuJian,2709.46,428.11,334.12,160.77,405.14,461.67,535.13,232.29
JiangXi,1563.78,303.65,233.81,107.90,209.70,393.99,509.39,160.12
ShanDong,1675.75,613.32,550.71,219.79,272.59,599.43,371.62,211.84
HeNan,1427.65,431.79,288.55,208.14,217.00,337.76,421.31,165.32
HuNan,1942.23,512.27,401.39,206.06,321.29,697.22,492.60,226.45
HuBei,1783.43,511.88,282.84,201.01,237.60,617.74,523.52,182.52
GuangDong,3055.17,353.23,564.56,356.27,811.88,873.06,1082.82,420.81
GuangXi,2033.87,300.82,338.65,157.78,329.06,621.74,587.02,218.27
HaiNan,2057.86,186.44,202.72,171.79,329.65,477.17,312.93,279.19
ChongQing,2303.29,589.99,516.21,236.55,403.92,730.05,438.41,225.80
SiChuang,1974.28,507.76,344.79,203.21,240.24,575.10,430.36,223.46
GuiZhou,1673.82,437.75,461.61,153.32,254.66,445.59,346.11,191.48
YunNan,2194.25,537.01,369.07,249.54,290.84,561.91,407.70,330.95
XiZang,2646.61,839.70,204.44,209.11,379.30,371.04,269.59,389.33
SHanXi,1472.95,390.89,447.95,259.51,230.61,490.90,469.10,191.34
GanSu,1525.57,472.98,328.90,219.86,206.65,449.69,249.66,228.19
QingHai,1654.69,437.77,258.78,303.00,244.93,479.53,288.56,236.51
NingXia,1375.46,480.89,273.84,317.32,251.08,424.75,228.73,195.93
XinJiang,1608.82,536.05,432.46,235.82,250.28,541.30,344.85,214.40
本来数据的头一个是中文的,但是由于中文读取需要解码,出了一些问题,索性改成了城市名字的拼音,每一行都是一个城市的数据
然后把city.txt 文件保存到路径文件夹下。这个文件夹是根据编辑软件设定的,我用的是spyder,然后建立了一个工程,就把city.txt文
件考到了工程目录下。
之后在工程中输入一下程序:
'''
created on Wed Jul 05 09:13:43 2017
author: GXTon
email :g159147t@163.com
jiaotashidi qiuzhenwushi
'''
#
import numpy as np #要用k-means算法,需要导入numpy
from sklearn.cluster import KMeans #只导入一部分,
def loadData(filePath): #创建一个读取数据的函数
fr = open(filePath,'r+') #这里是去读
lines = fr.readlines() #.read()每次读取整个文件,通常用于将文件内容放到一个字符串变量中
#.readlines()一次读取整个文件(类似于.resd())
#.readline()每次只读取一行,通常比.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__': #这里相当于主函数
data,cityName = loadData('city.txt') #利用loadData方法读取数据,加载数据
km = KMeans(n_clusters=4) #创建实例,创建k-means算法,这里把所有分成4组;
#调用k-means方法所需参数:n_clusters,用于指定聚类中心的个数
#init,初始聚类中心的初始化方法
#max_iter,最大的迭代次数
#一般调用时只用给出n_clusters即可,init默认是k-means++,max_iter默认是300
label = km.fit_predict(data) #调用Kmeans()fit_predict()方法进行计算,
#作用是计算簇中心以及为为簇分配符号,label:聚类后个数据所属的标签。
expenses = np.sum(km.cluster_centers_,axis=1) #axis按行求和
#print(expenses)
CityCluster = [[],[],[],[]]
for i in range(len(cityName)): #将城市按照label分成设定的簇
CityCluster[label[i]].append(cityName[i]) #将每个簇的城市输出
for i in range(len(CityCluster)):
print("Expenses:%.2f" % expenses[i]) #将每个簇的平均花费输出
print(CityCluster[i])
点击运行,便能出来结果。
其中n_clusters类,消费水平相近的城市聚集在一类中
expense:聚类中心点的数值加和,也就是平均消费水平


实现过程:
1、建立工程,导入sklearn相关包
import numpy as np
from sklearn.cluster import KMeans









软件——机器学习与Python,聚类,K——means的更多相关文章
- 软件——机器学习与Python,Python3的输出与输入
输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下: >>> print('hello, world') p ...
- 软件——机器学习与Python,输入输出的用法
转自:http://www.cnblogs.com/graceting/p/3875438.html 输入很简单 x = input("Please input x:") Plea ...
- 软件——机器学习与Python,if __name__ == '__main__':函数
if __name__ == '__main__': 想必很多初次接触python都会见到这样一个语句,if __name__ == "__main__": 那么这个语句到底是做什 ...
- 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法
(一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...
- 机器学习 Python实践-K近邻算法
机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...
- Python聚类算法之基本K均值实例详解
Python聚类算法之基本K均值实例详解 本文实例讲述了Python聚类算法之基本K均值运算技巧.分享给大家供大家参考,具体如下: 基本K均值 :选择 K 个初始质心,其中 K 是用户指定的参数,即所 ...
- 大数据分析与机器学习领域Python兵器谱
http://www.thebigdata.cn/JieJueFangAn/13317.html 曾经因为NLTK的缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/ ...
- 机器学习六--K-means聚类算法
机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...
- 灵玖软件NLPIRParser智能文本聚类
随着互联网的迅猛发展,信息的爆炸式增加,信息超载问题变的越来越严重,信息的更新率也越来越高,用户在信息海洋里查找信息就像大海捞针一样.搜索引擎服务应运而生,在一定程度上满足了用户查找信息的需要.然而互 ...
随机推荐
- 在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试
原文:在 Snoop 中使用 PowerShell 脚本进行更高级的 UI 调试 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.欢迎转载.使用.重新发布, ...
- codevs 1019 集合论与图论
1019 集合论与图论 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 集合论与图论对于小松来说 ...
- 解决WIN7远程登录提示无法保存凭据的问题
事由:今天到公司,想起手上还有点小东西没有改动完,就打算连上server进行小改动.结果发现昨天还能好好的远程连接server的WIN7,今天突然间不能远程登录了~ 无奈~悲催~ 我仅仅能猜是不是有什 ...
- 基于r-Kernel的LiteOS操作系统
LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统.也就是说它跑在存储空间和RAM有限的超低电压微控制器上,这也是吸引我关注它的原因(在超低电压下系统更易出错).它採用r-ker ...
- openssl之BIO系列之25---结束语
(作者:DragonKing, Mail: wzhah@263.net ,公布于:http://openssl.126.com之ope nssl专业论坛) 经过半个月左右,最终将BIO的结构和各个分支 ...
- 基于TI Davinci架构的多核/双核开发高速扫盲(以OMAP L138为例),dm8168多核开发參考以及达芬奇系列资料user guide整理
基于TI Davinci架构的双核嵌入式应用处理器OMAPL138开发入门 原文转自http://blog.csdn.net/wangpengqi/article/details/8115614 感谢 ...
- css中linear-gradient的使用
注明:此篇文章来自http://www.cnblogs.com/lhb25/archive/2013/01/30/css3-text-shadow.html.
- POJ 2391 Floyd+二分+拆点最大流
题意: 思路: 先Floyd一遍两两点之间的最短路 二分答案 建图 跑Dinic 只要不像我一样作死#define int long long 估计都没啥事-- 我T到死辣--.. 最后才改过来-- ...
- Spark MLlib协同过滤算法
算法说明 协同过滤(Collaborative Filtering,简称CF,WIKI上的定义是:简单来说是利用某个兴趣相投.拥有共同经验之群体的喜好来推荐感兴趣的资讯给使用者,个人透过合作的机制给予 ...
- 搭建 Nginx 静态网站
示例代码:/etc/nginx/nginx.conf user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid / ...