概括

首先说一下聚类,多用于机器学习中的无监督学习,通俗来说是将具有相似性的数据分为多类(在相似的基础上收集数据来分类)。由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异。
这里采用传统的聚类划分方法:k-means算法。
k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。

算法步骤

1.随机选取k个点作为初始聚类中心。
2.对于剩下的点,根据其余聚类中心的距离,将其归入最近的簇。
3.对每个簇,计算所有点的均值作为新的聚类中心。
4.重复2、3直至聚类中心不再发生改变。

这里举个例子来说明:

这里有5个点ABCDE,先随机将BE两个点选取为初始聚类中心。(步骤1)
剩下ACD三个点,根据BE聚类中心的距离划分进去,显而易见可以将A化为B中,C、D化为E中,此时产生两个簇分别为AB和CDE。(步骤2)
对于产生的每个簇,重新计算其聚类中心,如上图所示(步骤3)
再进行步骤2,重新根据每个点到两个聚类中心的距离将点进行划分,可以看到,此时ABC为一个簇,DE为一个簇。
进行步骤3,重新计算每个簇中点的均值。最后结束的条件是聚类中心不再发生变化,对于目前的情况满足步骤4,算法结束。

应用

现有1999年全国31个省份城镇居民家庭平均每人全年消费性支出的八个主要变量数据,这八个变量分别是:食品、衣着、家庭设备用品及服务、医疗保健、交通和通讯、娱乐教育文化服务、居住以及杂项商品和服务。利用已有数据,对31个省份进行聚类。
这里是提供的数据信息:
北京,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64
天津,2459.77,495.47,697.33,302.87,284.19,735.97,570.84,305.08
河北,1495.63,515.90,362.37,285.32,272.95,540.58,364.91,188.63
山西,1406.33,477.77,290.15,208.57,201.50,414.72,281.84,212.10
内蒙古,1303.97,524.29,254.83,192.17,249.81,463.09,287.87,192.96
辽宁,1730.84,553.90,246.91,279.81,239.18,445.20,330.24,163.86
吉林,1561.86,492.42,200.49,218.36,220.69,459.62,360.48,147.76
黑龙江,1410.11,510.71,211.88,277.11,224.65,376.82,317.61,152.85
上海,3712.31,550.74,893.37,346.93,527.00,1034.98,720.33,462.03
江苏,2207.58,449.37,572.40,211.92,302.09,585.23,429.77,252.54
浙江,2629.16,557.32,689.73,435.69,514.66,795.87,575.76,323.36
安徽,1844.78,430.29,271.28,126.33,250.56,513.18,314.00,151.39
福建,2709.46,428.11,334.12,160.77,405.14,461.67,535.13,232.29
江西,1563.78,303.65,233.81,107.90,209.70,393.99,509.39,160.12
山东,1675.75,613.32,550.71,219.79,272.59,599.43,371.62,211.84
河南,1427.65,431.79,288.55,208.14,217.00,337.76,421.31,165.32
湖南,1942.23,512.27,401.39,206.06,321.29,697.22,492.60,226.45
湖北,1783.43,511.88,282.84,201.01,237.60,617.74,523.52,182.52
广东,3055.17,353.23,564.56,356.27,811.88,873.06,1082.82,420.81
广西,2033.87,300.82,338.65,157.78,329.06,621.74,587.02,218.27
海南,2057.86,186.44,202.72,171.79,329.65,477.17,312.93,279.19
重庆,2303.29,589.99,516.21,236.55,403.92,730.05,438.41,225.80
四川,1974.28,507.76,344.79,203.21,240.24,575.10,430.36,223.46
贵州,1673.82,437.75,461.61,153.32,254.66,445.59,346.11,191.48
云南,2194.25,537.01,369.07,249.54,290.84,561.91,407.70,330.95
西藏,2646.61,839.70,204.44,209.11,379.30,371.04,269.59,389.33
陕西,1472.95,390.89,447.95,259.51,230.61,490.90,469.10,191.34
甘肃,1525.57,472.98,328.90,219.86,206.65,449.69,249.66,228.19
青海,1654.69,437.77,258.78,303.00,244.93,479.53,288.56,236.51
宁夏,1375.46,480.89,273.84,317.32,251.08,424.75,228.73,195.93
新疆,1608.82,536.05,432.46,235.82,250.28,541.30,344.85,214.40

代码部分

# 31省市居民家庭消费调查
# 1.建立工程,导入sklearn相关包
import numpy as np
from sklearn.cluster import KMeans# 2.加载数据data,创建K-Means算法实例,并进行训练,获得标签label:
# a.利用loadData方法读取数据
# b.创建实例
# c.调用Kmeans()和fit_predict()方法进行计算if __name__ == '__main__':def loadData(filePath):fr = open(filePath, 'r+')  # r+读写打开一个文本文件lines = fr.readlines()     # 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, retCityNamedata, cityName = loadData('city.txt')km = KMeans(n_clusters=4)  # n_clusters用于指定聚类中心的个数,init初始聚类中心的初始化方法,max_iter最大的迭代次数,init默认是k-means++ max_iter默认300label = km.fit_predict(data)  # 计算簇中心以及为簇分配序号expenses = np.sum(km.cluster_centers_, axis=1)  # 平均消费水平# print(expenses)CityCluster = [[], [], [], []] # 将城市按label分成设定的簇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])

结果分析

将城市按照消费水平n_clusters类,消费水平相近的城市聚集在一类中。
这里选用聚成四类km = KMeans(n_clusters=4):

机器学习——K-Means聚类算法及其应用相关推荐

  1. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  2. k means聚类算法_K-Means 聚类算法 20210108

    说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...

  3. 机器学习-k均值聚类算法-k_means原理14

    非监督学习

  4. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

  5. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  6. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

  7. 机器学习实战-61:K均值聚类算法(K-Means)

    K均值聚类算法(K-Means) 深度学习原理与实践(开源图书)-总目录,建议收藏,告别碎片阅读! 机器学习分为监督学习.无监督学习和半监督学习(强化学习).无监督学习最常应用的场景是聚类(clust ...

  8. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  9. 基于Spark的机器学习实践 (九) - 聚类算法

    0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...

  10. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

最新文章

  1. IoU、GIoU、DIoU、CIoU损失函数的那点事儿
  2. php随机数字总和固定,php 随机生成固定长度整数、各种服务器请求方法
  3. httppost数据上传 unity_Unity中国增强版发布
  4. CCNP-第四篇-OSPF高级版(一)
  5. LeetCode 861. 翻转矩阵后的得分(贪心)
  6. linux服务器p2v,使用 Linux dd 命令实现 P2V 或 V2V
  7. 华为ac控制器web配置手册_欧姆龙AC伺服系统1S系列产品型号说明及功能介绍
  8. oracle 表改表空间,Oracle批量修改用户表table的表空间
  9. 保护亿万数据安全,Spring有“声明式事务”绝招
  10. 几种损失函数比较--代价函数,损失函数,目标函数区别
  11. 由H264软编码可以看出,电脑的性能远远超过手机
  12. 使用Jep在Java中执行Python代码
  13. 2018最新游戏蛮牛Egret游戏引擎
  14. Beaver‘s triple(乘法三元组)-秘密共享的乘法计算
  15. Blender建模基础(二):建模篇
  16. HDU 5745 La Vie en rose(bitset优化dp)
  17. 镜头像差之三——慧差
  18. Debain 安装图形化界面 GNome
  19. 东莞市中考计算机考试试题,东莞市数学中考真题(共7份word版,含答案).doc
  20. 迷你上标和下标(0~9、字母、特殊字符)

热门文章

  1. java数据结构和算法——图的深度优先(DFS)遍历
  2. JavaScript中的数组方法和循环
  3. ps导出gif+html,ps怎么导出gif格式的动图
  4. 【转载】SCI投稿过程总结、投稿状态解析、拒稿后对策及接受后期相关问答
  5. 2022-2028全球与中国电动帆船市场现状及未来发展趋势
  6. 服务器 国产CPU 什么型号,国产cpu服务器
  7. 计算机二级C语言学习笔记(十八)
  8. MySQL查询(DQL)之基础查询+条件查询+排序查询
  9. 源发行版17需要目标发行版17
  10. python中经常使用的包扎材料_以下哪些是经常使用的包扎材料: