来源:https://www.icourse163.org/course/BIT-1001872001
K-means应用
使用算法: K-means聚类算法
完整代码
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))])
return retData,retCityName
if __name__ == '__main__':
data,cityName = loadData('31省市居民家庭消费水平-city.txt')
km = KMeans(n_clusters=4)
label = km.fit_predict(data)
expenses = np.sum(km.cluster_centers_,axis=1)
#print(expenses)
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])
[4893.9475 3827.86588235 7754.65666667 5699.12 ]
Expenses:4893.95
[‘天津’, ‘江苏’, ‘湖南’, ‘广西’, ‘海南’, ‘重庆’, ‘四川’, ‘云南’]
Expenses:3827.87
[‘河北’, ‘山西’, ‘内蒙古’, ‘辽宁’, ‘吉林’, ‘黑龙江’, ‘安徽’, ‘江西’, ‘山东’, ‘河南’, ‘湖北’, ‘贵州’, ‘陕西’, ‘甘肃’, ‘青海’, ‘宁夏’, ‘新疆’]
Expenses:7754.66
[‘北京’, ‘上海’, ‘广东’]
Expenses:5699.12
[‘浙江’, ‘福建’, ‘西藏’]