0010.有监督学习之K-均值聚类
Posted lxinghua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了0010.有监督学习之K-均值聚类相关的知识,希望对你有一定的参考价值。
一、聚类分析概述
1. 簇的定义
2. 常用的聚类算法
二、K-均值聚类算法
1. K-均值算法的python实现
1.1 导入数据集
1.2 构建距离计算函数
1.3 编写自动生成随机质心的函数
1.4 编写K-Means聚类函数
2. 算法验证
3. 误差平方和SSE计算
三、模型收敛稳定性探讨
四、二分K-均值算法
1. 二分K均值的python实现
1.1 数据准备
1.2 构建辅助函数
1.3 构建二分K均值函数
五、聚类模型的评价指标
1. 误差平方和SSE
2. 轮廓系数
2.1 凝聚度和分离度
2.2 凝聚度和分离度的基本性质
2.3 轮廓系数
3. 轮廓系数的python实现
【附录1】聚类类模型中距离的确定
【附录2】归一化方法
无监督学习之聚类1——Kmeans
Kmeans算法分析31省市消费水平
#coding=utf-8 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))]) #将数据中的其他data转化为float后加到retData中 return retData,retCityName if __name__ == ‘__main__‘: data,cityName = loadData(‘F:\data\city.txt‘) km = KMeans(n_clusters=4) #分成的簇的数目 label = km.fit_predict(data)#计算簇中心及为簇分配序号 expenses = np.sum(km.cluster_centers_, axis=1) #axis按行求和 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])
运算后;
Expenses: 4512.27
[‘江苏‘, ‘安徽‘, ‘湖南‘, ‘湖北‘, ‘广西‘, ‘海南‘, ‘四川‘, ‘云南‘]
Expenses: 7754.66
[‘北京‘, ‘上海‘, ‘广东‘]
Expenses: 5678.62
[‘天津‘, ‘浙江‘, ‘福建‘, ‘重庆‘, ‘西藏‘]
Expenses: 3788.76
[‘河北‘, ‘山西‘, ‘内蒙古‘, ‘辽宁‘, ‘吉林‘, ‘黑龙江‘, ‘江西‘, ‘山东‘, ‘河南‘, ‘贵州‘, ‘陕西‘, ‘甘肃‘, ‘青海‘, ‘宁夏‘, ‘新疆‘]
以上是关于0010.有监督学习之K-均值聚类的主要内容,如果未能解决你的问题,请参考以下文章
2019-07-31机器学习无监督学习之聚类 K-Means算法实例 (图像分割)