# K-means 聚类算法# 案例:通过聚类,了解1999年各个省份的消费水平在国内的情况。
# 技术路线:sklearn.cluster.Kmeans

学习参考来源:MOOC-Python机器学习应用-CH1聚类-KMeans算法。
附课程链接 https://www.icourse163.org/learn/BIT-1001872001?tid=1001965001#/learn/content?type=detail&id=1002854139&cid=1003246089

# 1、建立工程,导入sklearn相关包
import numpy as np
from sklearn.cluster import KMeans
#看看原始数据长啥样先
dataset = np.loadtxt(r"D:/2018_BigData/Python/Python_Book/3MOOC_MachineLearningInPython/Cluster/31city.txt",str,delimiter=",")
dataset
array([['北京', '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']], dtype='<U7')
# 定义loadData函数
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))])for i in range(1,len(items)):return retData,retCityName   #返回值:返回城市名称,以及该城市的各项消费信息
# 2、加载数据(loadData函数),创建K-means算法实例,并进行训练,获得标签:
if __name__ == '__main__':data,cityName = loadData(r"D:/2018_BigData/Python/Python_Book/3MOOC_MachineLearningInPython/Cluster/31city.txt")km = KMeans(n_clusters=3)label = km.fit_predict(data)      #调用Kmeans()fit_predict()方法进行计算expenses = np.sum(km.cluster_centers_,axis=1)#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])
Expenses:3827.87
['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '安徽', '江西', '山东', '河南', '湖北', '贵州', '陕西', '甘肃', '青海', '宁夏', '新疆']
Expenses:7754.66
['北京', '上海', '广东']
Expenses:5113.54
['天津', '江苏', '浙江', '福建', '湖南', '广西', '海南', '重庆', '四川', '云南', '西藏']
# 3、输出标签,查看结果# 将城市按照消费水平n_clusters类,消费水平相近的城市聚集在一类中
# expense:聚类中心点的数值加和,也就是平均消费水平
# 聚成2类:km=Kmeans(n_clusters=2)
if __name__ == '__main__':data,cityName = loadData(r"D:/2018_BigData/Python/Python_Book/3MOOC_MachineLearningInPython/Cluster/31city.txt")km = KMeans(n_clusters=2)label = km.fit_predict(data)      #调用Kmeans()fit_predict()方法进行计算expenses = np.sum(km.cluster_centers_,axis=1)#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])
Expenses:4040.42
['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江苏', '安徽', '江西', '山东', '河南', '湖南', '湖北', '广西', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '宁夏', '新疆']
Expenses:6457.13
['北京', '天津', '上海', '浙江', '福建', '广东', '重庆', '西藏']
# 聚成4类:km=Kmeans(n_clusters=4)
if __name__ == '__main__':data,cityName = loadData(r"D:/2018_BigData/Python/Python_Book/3MOOC_MachineLearningInPython/Cluster/31city.txt")km = KMeans(n_clusters=4)label = km.fit_predict(data)      #调用Kmeans()fit_predict()方法进行计算expenses = np.sum(km.cluster_centers_,axis=1)#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])
Expenses:5678.62
['天津', '浙江', '福建', '重庆', '西藏']
Expenses:3788.76
['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江西', '山东', '河南', '贵州', '陕西', '甘肃', '青海', '宁夏', '新疆']
Expenses:7754.66
['北京', '上海', '广东']
Expenses:4512.27
['江苏', '安徽', '湖南', '湖北', '广西', '海南', '四川', '云南']
# 从结果可以看出消费水平相近的省市聚集在了一类,例如消费最高的“北京”“上海”“广东”,聚集在了消费最高的类别。
# 聚4类时,结果可以比较明显地看出消费层级。

MOOC_MachineLearning_PracticeW1_Cluster_Kmeans聚类算法相关推荐

  1. 最小化局部边际的合并聚类算法(中篇)

    作者:钱烽 三.合并聚类算法 基于定义2所提出的相似度定义,我们在图2中给出最小化局部边际的合并聚类算法详细执行过程.首先,针对数据集中可能存在的噪声数据,我们对所有样本点进行孤立点检测.然后,作为A ...

  2. java iris_利用K-Means聚类算法实现对iris.data.ulab

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 利用K-Means聚类算法实现对iris.data.ulabel数据的聚类,这是在网上找到如果要换成我的iris.date iris.date.ulabl ...

  3. Open3D DbScanClustering聚类算法

    DBSCAN聚类算法,是基于密度的聚类算法.该算法需要两个参数. labels = np.array(pcd.cluster_dbscan(eps=0.02, min_points=10, print ...

  4. 机器学习中的聚类算法(1):k-means算法

    一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw 引言: Q:什么是聚类算法? 现在我们在做的深度学习当中,比如图像的识别 ...

  5. 基于梯度方向、极化变换和聚类算法的图像主特征直线检测

    基于梯度方向.极化变换和聚类算法的图像主特征直线检测 基于机器学习和图像处理的直线检测 代码主要思路: 1)借助类LSD直线检测,提取图像各个方向梯度:2)对像素中的各个梯度方向做极化变换:3)对计划 ...

  6. 【点云论文速读】点云分层聚类算法

    点云PCL免费知识星球,点云论文速读. 标题:PAIRWISE LINKAGE FOR POINT CLOUD SEGMENTATION 作者:Lu, Xiaohu and Yao, Jian and ...

  7. K-Means聚类算法原理

    来自:https://www.cnblogs.com/pinard/p/6164214.html K-Means算法是无监督聚类算法,它有很多变体.包括初始化优化K-Means++,距离计算优化elk ...

  8. 关于机器学习中山峰聚类算法的说明

    前言 在之前关于聚类算法的文章中,笔者主要涉及的内容均是和参数求解相关的,如C均值(包括模糊C均值).混合高斯模型等,而对于一些无参数密度估计的算法尚未讨论,而且一般基于参数密度估计的算法均是建立在假 ...

  9. k均值聚类算法考试例题_一文读懂K-means聚类算法

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

最新文章

  1. 项目经理怎么运用思维导图
  2. C/C++头文件一览
  3. 【视频】vue组件之props属性
  4. QT的QVarLengthArray类的使用
  5. .net 下语音合成
  6. sl animation sample
  7. Linux FTP服务配置
  8. Integer与int的种种比较
  9. LintCode 51: Previous Permutation
  10. UE4编辑器下Tick的实现
  11. 一些常见的Common类
  12. 论hr面试问题:离职原因
  13. Kubeadm init报错解决
  14. MATLAB实现利用三个不共线的点绘制圆(包括圆心和半径的求解)
  15. 设置软件的默认打开方式
  16. linux 时区 0900是哪,解析表PST/CEST/UTC/ETC/等时区的日期时间
  17. mysql索引长度超过767bytes问题解决。Specified key was too long; max key length is 767 bytes
  18. 什么是Oracle数据库?
  19. upqc matlab,统一电能质量调节器(UPQC)的分析及其控制策略的研究
  20. 解析JS如何运用断点进行调试

热门文章

  1. 计算机一级考试ps知识点,计算机一级考试PS备考复习题及答案2017
  2. 微型计算机系统原理内存条论文,微型计算机系统原理及应用结课论文.doc
  3. 应用性能监控-- SkyWalking
  4. win7更新_巨硬的win7更新要收钱了
  5. 钣金件高速生产线方案,助力制造企业实现高质量自动化智能化生产
  6. uniapp实现自适应手机状态栏高度的顶部导航栏
  7. Gradle 构建速度优化
  8. python360安全浏览器_python3.7--pycharm selenium自启360浏览器/360极速浏览器方法
  9. Win32学习笔记(五)消息
  10. ArcGIS_基于DEM的地形起伏度计算