4.K均值算法--应用

1. 应用K-means算法进行图片压缩

读取一张图片

观察图片文件大小,占内存大小,图片数据结构,线性化

用kmeans对图片像素颜色进行聚类

获取每个像素的颜色类别,每个类别的颜色

压缩图片生成:以聚类中收替代原像素颜色,还原为二维

观察压缩图片的文件大小,占内存大小

   1.1从路径中读入原图:

 

扫描二维码关注公众号,回复: 10857223 查看本文章

   1.2实验结果

  1.3实验代码:

 1 from sklearn.cluster import KMeans
 2 import matplotlib.pyplot as plt
 3 from PIL import Image
 4 import matplotlib.image as mpimg
 5 #读取图片
 6 p=mpimg.imread('D:\\GS\\Robit_stu\\s.jpg')
 7 #查看图片的数据,数组
 8 #print("查看图片的数据,数组",p)
 9 print("查看图片大小",p.size)
10 
11 # 对色素进行分类255*255*255分成64类
12 n_colors = 64 
13 # 模型,对图片像素颜色进行聚类
14 model =KMeans(n_colors)
15 # 训练X喂食,数据线性化,即一维数组像素的类别
16 labels = model.fit_predict(X)
17 # 二维(64,3)聚类中心,用于颜色分类,作为每个颜色的分类
18 colors = model.cluster_centers_
19 
20 import numpy as np
21 #获取每个像素的颜色类别,每个类别的颜色,还原图的p.shape维度
22 nev_image = colors[labels].reshape(p.shape)
23 plt.imshow(p);
24 plt.show()
25 # 把颜色值转回8位正整数
26 plt.imshow(nev_image.astype(np.uint8))
27 plt.show()
28 #压缩图,每隔三个点提取一个像素,达到压缩
29 plt.imshow(nev_image.astype(np.uint8)[::3,::3])
30 plt.show()

2. 观察学习与生活中可以用K均值解决的问题。

从数据-模型训练-测试-预测完整地完成一个应用案例。

这个案例会作为课程成果之一,单独进行评分。

猜你喜欢

转载自www.cnblogs.com/ys-hl-lo/p/12714024.html