聚类算法实例分析

本文深入分析了聚类算法,包括KMeans应用于1999年中国31省消费水平的聚类,以及DBSCAN对学生月上网时间分布的分类。详细介绍了两种算法的原理,并提供了源代码示例。通过对数据的处理,展示了聚类结果和对数变换后的数据分布。
摘要由CSDN通过智能技术生成

聚类算法实例分析

KMeans聚类 —— 1999年中国31省消费水平

  • KMeans原理自述
    :①随机挑选K个初始簇中心,并计算每一个原始数据与初始簇中心的距离(默认欧氏距离),分配给距离最近的簇;
    :②此时计算每个簇的簇中心是否与初始簇中心相同,如若不同,将当前的簇中心替换掉初始簇中心,并重复步骤①;如若相同,则聚类结束。

源代码

原部分数据

import numpy as np
from sklearn.cluster import KMeans
 
//定义一个提取数据的函数 
def loadData(filePath):
    fr = open(filePath,'r+')
    //此文件编码格式为:‘GB2312’,默认以‘gbk’方式去解码,所以不用再添加编码格式
    lines = fr.readlines()
    //readlines与read都读取全部文件,占内存大;readlines每次只读取一行,字符串对象,占用内存小,适合读取大文件
    retData = []
    retCityName = []
    //readlines返回对象为列表;read返回字符串
    for line in lines:
        items = line.strip().split(",")
        //strip移除字符串指定字符,默认为空格与换行符;并按‘,’隔开返回一个列表
        retCityName.append(items[0])
        retData.append([float(items[i]) for i in range(1,len(items))])
    return retData,retCityName
 
     
if __name__ == '__main__':
    data,cityName = loadData('city.txt')
    //指定聚类中心的个数为4个
    km = KMeans(n_clusters=4)
    //计算簇中心以及为簇分配相应簇中心的序号
    label = km.fit_predict(data)
    //‘km.cluster_centers_’表示聚类中心点的坐标组成的数组;计算各城市消费指标的和
    expenses = np.sum(km.cluster_centers_,axis=1)
    //将城市 按label 分成 设定的簇
    CityCluster = [[],[],[],[]]
    //将每个簇的城市输出
    for i in range(len(cityName)):
        CityCluster[label[i]]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值