博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sklearn无监督学习-聚类k-means
阅读量:3910 次
发布时间:2019-05-23

本文共 1734 字,大约阅读时间需要 5 分钟。

无监督学习

聚类

就是根据数据的”相似性”将数据分为多类的过程。评估两个不同样本之间的“相似性”,通常使用的方法就是计算两个样本之间的“距离”。使用不同的方法计算样本间的距离会关系到聚类结果的好坏。

1样本距离计算方法

欧式距离,曼哈顿距离,马氏距离,夹角余弦

2sklearn.cluster

sklearn.cluster模块提供的各聚类算法函数可以使用不同的数据形式进行输入:标准数据输入格式:[样本个数,特征个数]定义的矩阵

3K-means方法及应用

K-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。其处理过程如下:

1.随机选择k个点作为初始的聚类中心;
2.对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇
3.对于每个簇。计算所有点的均值作为新的聚类中心
4.重复2、3直到聚类中心不再发生改变
下面我们来看一个示例代码:(代码和数据在我的github给出,详见https://github.com/coder23263/k-means)

import numpy as npfrom sklearn.cluster import KMeansdef 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,retCityNameif __name__ == '__main__':    data,cityName = loadData('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])

首先我给出一下调用kmeans方法所需参数

  • n_cluster 用于指定聚类中心的个数
  • init:初始聚类中心的初始化方法max_iter 最大迭代次数
  • 一般调用时只给出n_clusters即可,init默认是k-means++,max_iter默认是300
  • data 加载的数据
  • lable:聚类后各数据所属的标签
  • axis 按行求和
  • fit_predict计算簇中心以及为簇分配序号

这段代码是对全国各个省份人均消费水平的聚类

首先,我们导入numpy和sklearn库
loadData函数是用来获取文件数据的,我就不多说了
下面的主函数就是k-means方法了
首先我们指定n_cluster即聚类中心数为4个
fit_predict计算簇中心以及为簇分配序号
expenses为对八项指标数据求和所得的人均消费水平
CityCluster = [[],[],[],[]]预备储备分类后的各个城市簇
依次打印分类后的城市数据
最后,感谢北理工老师提供的资源,这个示例是我在mooc上面看到的,北京理工大学的机器学习课程,主讲老师是礼欣和嵩天老师。我也是初学者,欢迎留言提问,一起进步。

转载地址:http://vykrn.baihongyu.com/

你可能感兴趣的文章
Blazor带我重玩前端(六)
查看>>
使用 C# 捕获进程输出
查看>>
数据库单表千万行 LIKE 搜索优化手记
查看>>
.NET Core 中生成验证码
查看>>
.NET Core 中导入导出Excel
查看>>
初识ABP vNext(8):ABP特征管理
查看>>
WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面
查看>>
【BCVP】实现基于 Redis 的消息队列
查看>>
网络安全逐渐成为程序员的必备技能
查看>>
在Docker中配置ASP.NETCore的HTTPS模式
查看>>
统信发布UOS V20 进军个人市场 生态日益完善
查看>>
【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
查看>>
Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!
查看>>
使用SWAGGER和ASP.NET CORE设置可选路由参数
查看>>
C#刷剑指Offer | 二叉搜索树的后序遍历序列
查看>>
新版 C# 高效率编程指南
查看>>
跟我一起学.NetCore之文件系统应用及核心浅析
查看>>
初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob储存
查看>>
chrome禁止三方cookie,网站登录不了怎么办
查看>>
Git 图形化操作之合并提交记录
查看>>