今天我们来进行一个python机器学习项目的实战,我们后面都会使用这样的模式,先实战,后进行详细的讲解,话不多说,开工。原创不易,麻烦大家给个关注。

项目需求

简述k-means算法的聚类过程(跟我一起入门机器学习----实战K-Means聚类算法)(1)

通过机器学习算法来对1999年各省份的消费水平进行分类,主要参数为食品、交通、医疗、住房、娱乐、杂项等八个变量,用以了解各省的经济实力。

基本思路

简述k-means算法的聚类过程(跟我一起入门机器学习----实战K-Means聚类算法)(2)

这个需求是一个很典型的聚类算法应用,我们使用K-means算法来实现这个项目,技术路线python sklearn。

KMeans算法

简述k-means算法的聚类过程(跟我一起入门机器学习----实战K-Means聚类算法)(3)

KMeans算法输入参数K即我们想要把n个对象分为K类,我们称之为簇,过程如下

1、随机选择K个点作为聚类中心。

2、分别计算剩下的点与K个点的距离,选择距离最小的中心点归为一簇。

3、计算每个簇中所有点的均值作为新的簇中心。

4、循环计算,直到簇中心不再有大的变化。

实现过程

1、导入numpy

import numpy as np

2、导入sklearn库的KMeans包,这个库是用于机器学习的常用库,下期我们重点讲解。

from sklearn.cluster import KMeans

3、加载训练数据,这里我们单独写一个函数来加载数据

def loadData(filePath):

fr = open(filePath,'r ')#打开文件

lines = fr.readlines()#读取文件

retData=[]

retCityName = []

for line in lines:

print(line)

items = line.strip().split(",")#分隔符

retCityName.append(items[0])

retData.append([float(items[i]) for i in range(1,len(items))])

for i in range(1,len(items)):

return retData,retCityName

4、使用KMeans算法,训练数据,得到标签

if __name__ == '__main__': data,cityName = loadData('city.txt') #train.append(data)#data = [[i] for i in data] km = KMeans(n_clusters = 4) label = km.fit_predict(data) expenses = np.sum(km.cluster_centers_,axis=1) 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])

5、最后的输出结果我们看下

Expenses:3788.76 ['河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '江西', '山东', '河南', '贵州', '陕西', '甘肃', '青海', '宁夏', '新疆'] Expenses:7754.66 ['北京', '上海', '广东'] Expenses:5477.90 ['天津', '江苏', '浙江', '福建', '重庆', '云南', '西藏'] Expenses:4357.67 ['安徽', '湖南', '湖北', '广西', '海南', '四川']

,