今天我们来进行一个python机器学习项目的实战,我们后面都会使用这样的模式,先实战,后进行详细的讲解,话不多说,开工。原创不易,麻烦大家给个关注。
项目需求
通过机器学习算法来对1999年各省份的消费水平进行分类,主要参数为食品、交通、医疗、住房、娱乐、杂项等八个变量,用以了解各省的经济实力。
基本思路
这个需求是一个很典型的聚类算法应用,我们使用K-means算法来实现这个项目,技术路线python sklearn。
KMeans算法
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 ['安徽', '湖南', '湖北', '广西', '海南', '四川']
,