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算法实例 (图像分割)

2019-07-25机器学习无监督学习之聚类 K-Means算法实例 (1999年中国居民消费城市分类)

无监督学习之聚类1——Kmeans

无监督学习之聚类2——DBSCAN

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

《Python机器学习及实践》----无监督学习之数据聚类