• 无监督学习之聚类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:datacity.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
    ['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江西', '山东', '河南', '贵州', '陕西', '甘肃', '青海', '宁夏', '新疆']

  • 相关阅读:
    Maven安装与配置
    win10更新后程序路径盘符变成*星号解决方法
    谈谈 CSS 关键字 initial、inherit 和 unset
    用 async/await 来处理异步
    Vuex
    HTML5新特性之文件和二进制数据的操作 Blob对象
    vue中class和内联style绑定
    Petya and Staircases CF212div.2B
    CF#212 Two Semiknights Meet
    HDU1423最长上升公共子序列
  • 原文地址:https://www.cnblogs.com/millerfu/p/7783611.html
Copyright © 2020-2023  润新知