4.K均值算法--应用
Posted fzybk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.K均值算法--应用相关的知识,希望对你有一定的参考价值。
1. 应用K-means算法进行图片压缩
一开始我是看直播回放把老师的代码放进去尝试运行,然后发现出现了一些问题,在百度后得到解决。
关于PIL的缺失的解决办法
https://blog.csdn.net/jacabe/article/details/80040338
然后在进行自己的图片压缩时,想给图片加标题,发现中文无法显示
关于标题中文显示乱码的问题
https://blog.csdn.net/weixin_45092662/article/details/102477032
以下为源代码:
import matplotlib.pyplot as plt import matplotlib.image as ig import numpy as np import sys from sklearn.cluster import KMeans # 读取一张图片 pd = ig.imread(‘C:/Users/86186/Desktop/大三下/机器学习/pd.jpg‘) # 观察图片文件大小,占内存大小,图片数据结构,线性化 print("原图片的文件大小", pd.size) print("原图片的内存大小", sys.getsizeof(pd)) # 用kmeans对图片像素颜色进行聚类 # 获取每个像素的颜色类别,每个类别的颜色 # 压缩图片生成:以聚类中收替代原像素颜色,还原为二维 X = pd.reshape(-1, 3) # 把二维的变成线性的 n_colors = 64 # 将图片分成64种颜色 model = KMeans(n_colors) # 构建模型 labels = model.fit_predict(X) colors = model.cluster_centers_ # 聚类中心 # 观察压缩图片的文件大小,占内存大小 # 解决中文显示问题 plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘] plt.rcParams[‘axes.unicode_minus‘] = False new_image = colors[labels].reshape(pd.shape) plt.imshow(pd) plt.title("原图片") plt.show() plt.title("最终压缩后的图片") plt.imshow(new_image.astype(np.uint8)[::3, ::3]) plt.show() print("最终压缩的图片的文件大小", new_image.size) print("最终压缩的图片的内存大小", sys.getsizeof(new_image))
结果如下:
2. 观察学习与生活中可以用K均值解决的问题。
以上是关于4.K均值算法--应用的主要内容,如果未能解决你的问题,请参考以下文章