1.应用K-means算法进行图片压缩
读取一张图片
观察图片文件大小,占内存大小,图片数据结构,线性化
用kmeans对图片像素颜色进行聚类
获取每个像素的颜色类别,每个类别的颜色
压缩图片生成:以聚类中收替代原像素颜色,还原为二维
观察压缩图片的文件大小,占内存大小
#导入所需要用到的包 from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np import matplotlib.image as img import sys #载入原图 china = load_sample_image(‘china.jpg‘) #展示图片 plt.imshow(china) plt.show() #降低原图的分辨率 china0 = china[::3,::3] #展示降低分辨率后的图片 plt.imshow(china0) plt.show() #设置图片数组的形状 x = china0.reshape(-1,3) #设置压缩图片的参数 n_colors=64 model=KMeans(n_colors) labels=model.fit_predict(x) colors=model.cluster_centers_ #用聚类中心的颜色代替原来的颜色值 new_china = colors[labels].reshape(china0.shape) new_china = new_china.astype(np.uint8) #展示新图的结果 plt.imshow(new_china) plt.show() #分别显示获得原图新图所占内存大小 print("原图所占内存大小为:", sys.getsizeof(china)) print("新图所占内存大小为:", sys.getsizeof(new_china)) #分别保存原图新图到根目录 img.imsave(‘./china.jpg‘, china) img.imsave(‘./new_china.jpg‘, new_china) #提示成功 print(‘保存成功!‘)
2. 观察学习与生活中可以用K均值解决的问题。
从数据-模型训练-测试-预测完整地完成一个应用案例。
这个案例会作为课程成果之一,单独进行评分。
#(1)加载数据 from sklearn.datasets import load_iris from sklearn.cluster import KMeans data = load_iris() #(2)构建模型 model = KMeans(n_clusters=3).fit(data[‘data‘]) model.labels_ model.cluster_centers_ #(3)查看聚类效果 import matplotlib.pyplot as plt for i in range(3): plt.scatter(data[‘data‘][model.labels_ == i, 0], data[‘data‘][model.labels_ == i, 1]) plt.show() #(4)使用轮廓系数指标评估聚类模型 from sklearn.metrics import silhouette_score silhouette_score(data[‘data‘], model.labels_) for k in range(2, 9): model = KMeans(n_clusters=k).fit(data[‘data‘]) print(k, silhouette_score(data[‘data‘], model.labels_))
根据循环的次数,预估的结果不同
原文:https://www.cnblogs.com/hoioh/p/12732381.html