机器学习小入门---简单运用K-means算法

机器学习小入门—简单运用K-means算法

机器学习小入门—简单运用K-means算法

备注:本人机器学习小白,网上跟着老师学习,自己动手跟着敲了一遍。写这个主要是为了督促自己坚持学完,如有不当还请斧正,感激不尽。

好了废话不多说,直接上代码,代码里我做了很多注释,便于理解,可以自己动手写一下

Python代码

代码如下(示例):

'''
date:2020-09-25
目的:简单复现K-means聚类算法
个人理解:应该是按照簇的个数将相近似的对象分配在一起

'''
# 导入sklearn相关包
import numpy as np
from sklearn.cluster import KMeans
      
# 定义加载数据的方法
def loadData(filePath):
    fr = open(filePath,'r+', encoding='UTF-8') 
    # r+:读写打开一个文本文件
    lines = fr.readlines()    
    # read() 每次读取整个文件,它通常将用于将文件内容放到一个字符串变量中
    # readlines()一次读取整个文件(类似于 .read())
    # readline()每次只读取一行
    Data = []    # 用来存储城市的各项消费信息
    CityName = [] # 用来存储城市的名称
    for line in lines:
        items = line.strip().split(",")
        CityName.append(items[0])
        Data.append([float(items[i]) for i in range(1,len(items))])
    return Data,CityName
 
# 加载数据, 创建K-means算法实例,并进行训练,获得标签   
if __name__ == '__main__':
    data,cityName = loadData('city.txt')  
    # 利用loadData方法读取数据
    km = KMeans(n_clusters = 6)  # 创建实例,n_clusters:用于指定聚类中心的个数 ,簇的个数
    label = km.fit_predict(data) 
    # label:聚类后个数据所属的标签,调用Kmeans方法fit_predict()进行计算
    # fit_predict()计算簇中心以及为分配序号

    expenses = np.sum(km.cluster_centers_,axis=1) # axis:按行求和
    #print(expenses)
    CityCluster = [[],[],[],[],[],[]]  # 这里要根据相应的簇个数设置[]的个数
    for i in range(len(cityName)):
        CityCluster[label[i]].append(cityName[i])
        # 将城市按label标签分成设定的簇
    for i in range(len(CityCluster)):
        print("Expenses:%.2f" % expenses[i]) # 将每个簇的城市输出
        print(CityCluster[i]) # 将每个簇的平均消费输出

测试数据

百度网盘链接
提取码:988m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值