4.K均值算法--应用
2021-02-13 06:17
标签:测试 更新 指定 应用 strip() 消费 颜色 sum encoding 1. 应用K-means算法进行图片压缩 读取一张图片 观察图片文件大小,占内存大小,图片数据结构,线性化 用kmeans对图片像素颜色进行聚类 获取每个像素的颜色类别,每个类别的颜色 压缩图片生成:以聚类中收替代原像素颜色,还原为二维 观察压缩图片的文件大小,占内存大小 from sklearn.datasets import load_sample_image import matplotlib.pyplot as plt import numpy as np import matplotlib.image as img #读取原始图片 china = load_sample_image("china.jpg") plt.imshow(china) plt.show() print(china.shape)#观察图片存放数据特点 image=china[::3,::3] #降低分辨率 plt.imshow(image) plt.show() #改变数组 x=image.reshape(-1,3) n_colors=64 #(256,256,256) model=KMeans(n_colors) #64类聚类中心 labels=model.fit_predict(x) #每个点的颜色分类,0-63 colors=model.cluster_centers_ #64类聚类中心值 new_image=colors[labels] #进行颜色填充 new_image=new_image.reshape(image.shape) plt.imshow(new_image.astype(np.uint8)) plt.show() # 将原始图片与新图片保存成文件,观察文件的大小 # img.imsave()函数将图片保存到指定路径 img.imsave(‘D://image//china.jpg‘,china) img.imsave(‘D://image//new_china.jpg‘,new_image) 2. 观察学习与生活中可以用K均值解决的问题。 从数据-模型训练-测试-预测完整地完成一个应用案例。 这个案例会作为课程成果之一,单独进行评分。 通过聚类,了解2017年-2010年31个省份的居民消费水平在全国的情况。 # 导入numpy包 import numpy as np # 从sklearn库的聚类模块中导入KMeans包 from sklearn.cluster import KMeans # 定义加载数据函数 # 函数名为loadData,函数参数为文件路径 def loadData(filePath): # 以r+的方式打开 +表示打开磁盘文件更新(读和写) fr = open(filePath, ‘r+‘,encoding=‘UTF-8‘) # 以readlines方式读取文件 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(‘C:/Users/林佳铭/Desktop/cost.txt‘) # 定义4个簇 km = KMeans(n_clusters=4) # 计算簇中心以及为簇分配序号 label = km.fit_predict(data) # 计算消费水平 expenses = np.sum(km.cluster_centers_, axis=1) # print(expenses) # 定义二维列表,按类盛放各省名称 CityCluster = [[], [], [], []] # 将各省按照label分成设定的簇 for i in range(len(cityName)): CityCluster[label[i]].append(cityName[i]) # 将各省的名称输出,将各省的居民消费水平输出(10年-17年的总和) for i in range(len(CityCluster)): print("Expenses:%.2f" % expenses[i]+‘元‘) print(CityCluster[i]) 4.K均值算法--应用 标签:测试 更新 指定 应用 strip() 消费 颜色 sum encoding 原文地址:https://www.cnblogs.com/ljm41/p/12727725.html
上一篇:K均值算法——应用