北京,2959.19,730.79,749.41,513.34,467.87,1141.82,478.42,457.64 天津,2459.77,495.47,697.33,302.87,284.19,735.97,570.84,305.08 河北,1495.63,515.90,362.37,285.32,272.95,540.58,364.91,188.63 山西,1406.33,477.77,290.15,208.57,201.50,414.72,281.84,212.10 内蒙古,1303.97,524.29,254.83,192.17,249.81,463.09,287.87,192.96 辽宁,1730.84,553.90,246.91,279.81,239.18,445.20,330.24,163.86 吉林,1561.86,492.42,200.49,218.36,220.69,459.62,360.48,147.76 黑龙江,1410.11,510.71,211.88,277.11,224.65,376.82,317.61,152.85 上海,3712.31,550.74,893.37,346.93,527.00,1034.98,720.33,462.03 江苏,2207.58,449.37,572.40,211.92,302.09,585.23,429.77,252.54 浙江,2629.16,557.32,689.73,435.69,514.66,795.87,575.76,323.36 安徽,1844.78,430.29,271.28,126.33,250.56,513.18,314.00,151.39 福建,2709.46,428.11,334.12,160.77,405.14,461.67,535.13,232.29 江西,1563.78,303.65,233.81,107.90,209.70,393.99,509.39,160.12 山东,1675.75,613.32,550.71,219.79,272.59,599.43,371.62,211.84 河南,1427.65,431.79,288.55,208.14,217.00,337.76,421.31,165.32 湖南,1942.23,512.27,401.39,206.06,321.29,697.22,492.60,226.45 湖北,1783.43,511.88,282.84,201.01,237.60,617.74,523.52,182.52 广东,3055.17,353.23,564.56,356.27,811.88,873.06,1082.82,420.81 广西,2033.87,300.82,338.65,157.78,329.06,621.74,587.02,218.27 海南,2057.86,186.44,202.72,171.79,329.65,477.17,312.93,279.19 重庆,2303.29,589.99,516.21,236.55,403.92,730.05,438.41,225.80 四川,1974.28,507.76,344.79,203.21,240.24,575.10,430.36,223.46 贵州,1673.82,437.75,461.61,153.32,254.66,445.59,346.11,191.48 云南,2194.25,537.01,369.07,249.54,290.84,561.91,407.70,330.95 西藏,2646.61,839.70,204.44,209.11,379.30,371.04,269.59,389.33 陕西,1472.95,390.89,447.95,259.51,230.61,490.90,469.10,191.34 甘肃,1525.57,472.98,328.90,219.86,206.65,449.69,249.66,228.19 青海,1654.69,437.77,258.78,303.00,244.93,479.53,288.56,236.51 宁夏,1375.46,480.89,273.84,317.32,251.08,424.75,228.73,195.93 新疆,1608.82,536.05,432.46,235.82,250.28,541.30,344.85,214.40 1 import numpy as np 2 from sklearn.cluster import KMeans 3 4 def loadData(filePath): 5 fr = open(filePath,'r+') #打开文件并增加读写 6 lines = fr.readlines() #每次读取整个文件保存在一个list中,list中的每个元素为文件的每一行数据(字符串类型) 7 retCityName=[] #定义列表储存 城市的名字 赋给cityName 8 retData=[] #定义列表储存 城市的各项消费信息 赋给data 9 for line in lines: 10 items = line.strip().split(",") # 把每一行返回成一个列表 11 retCityName.append(items[0]) # 把每一行的第一个元素(城市的名字)填充到retCityName列表中 12 retData.append([float(items[i]) for i in range(1,len(items))]) 13 return retData,retCityName 14 15 if __name__=='__main__': 16 data,cityName=loadData('city.txt') 17 print(cityName) 18 km=KMeans(n_clusters=4)#聚类中心为4;可修改 19 label=km.fit_predict(data)#label对应每行数据对应分配到的序列,相同的序号归为一类 20 print(label) 21 print('km.cluster_centers_ ',km.cluster_centers_) 22 # 打印 归为同一个簇的城市 每一项花费的平均值,共有4*8列,比如3242.22333333=(2959.19+3712.31+3712.31)/3,其他的类似 23 24 expenses=np.sum(km.cluster_centers_,axis=1) # 求和 对每一行求和 1*4 25 # print('expenses ',expenses,' ') 26 CityCluster=[[],[],[],[]] # 定义四个簇的 空列表 27 for i in range(len(cityName)): # 31个城市 28 CityCluster[label[i]].append(cityName[i])#把每个 城市根据 标签 写进 对应的簇里面 29 30 for i in range(len(CityCluster)): #打印输出每一个簇 31 print("expenses:%.2f" % expenses[i]) #平均花费格式化输出 32 print(CityCluster[i]) #每个簇的城市名称