k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化

发布时间:2024-01-22 08:30

注意:单击此处https://urlify.cn/A3EJ3a下载完整的示例代码,或通过Binder在浏览器中运行此示例

对颐和园(中国)的图像进行逐像素矢量量化(Vector Quantization)(VQ),将显示图像所需要的颜色数量从96、615种独特颜色减少到64种,同时保留整体图片的清晰度。 在此示例中,像素在三维空间中表示,K均值用于查找64个颜色的聚类。在图像处理文献中,从K均值(聚类中心)获得的codebook称为调色板(color palette)。使用一个字节,最多可以处理256种颜色,而RGB编码每个像素需要3个字节。例如,GIF文件格式使用了这样的调色板。 为了进行比较,还显示了使用随机codebook(随机拾取的颜色)的量化图像。

\"k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化_第1张图片\"\"k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化_第2张图片\"\"k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化_第3张图片\"

输出:
Fitting model on a small sub-sample of the datadone in 0.356s.Predicting color indices on the full image (k-means)done in 0.149s.Predicting color indices on the full image (random)done in 0.152s.
# 作者: Robert Layton #          Olivier Grisel #          Mathieu Blondel ## 许可证: BSD 3 clauseprint(__doc__)import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansfrom sklearn.metrics import pairwise_distances_argminfrom sklearn.datasets import load_sample_imagefrom sklearn.utils import shufflefrom time import timen_colors = 64# 加载颐和园照片china = load_sample_image(\"china.jpg\")# 转换为浮点数,而不是默认的8位整数编码。# 除以255很重要,这使得plt.imshow的显示在浮点数据上效果很好# (需要在[0-1]范围内)china = np.array(china, dtype=np.float64) / 255# 加载图片(Image)并将其转换为二维numpy数组。w, h, d = original_shape = tuple(china.shape)assert d == 3image_array = np.reshape(china, (w * h, d))print(\"Fitting model on a small sub-sample of the data\")t0 = time()image_array_sample = shuffle(image_array, random_state=0)[:1000]kmeans = KMeans(n_clusters=n_colors, random_state=0).fit(image_array_sample)print(\"done in %0.3fs.\" % (time() - t0))# 获取所有点的标签print(\"Predicting color indices on the full image (k-means)\")t0 = time()labels = kmeans.predict(image_array)print(\"done in %0.3fs.\" % (time() - t0))codebook_random = shuffle(image_array, random_state=0)[:n_colors]print(\"Predicting color indices on the full image (random)\")t0 = time()labels_random = pairwise_distances_argmin(codebook_random,                                          image_array,                                          axis=0)print(\"done in %0.3fs.\" % (time() - t0))def recreate_image(codebook, labels, w, h):    \"\"\"从密码本和标签重新创建(压缩的)图像\"\"\"    d = codebook.shape[1]    image = np.zeros((w, h, d))    label_idx = 0    for i in range(w):        for j in range(h):            image[i][j] = codebook[labels[label_idx]]            label_idx += 1    return image# 显示所有结果以及原始图像plt.figure(1)plt.clf()plt.axis(\'off\')plt.title(\'Original image (96,615 colors)\')plt.imshow(china)plt.figure(2)plt.clf()plt.axis(\'off\')plt.title(\'Quantized image (64 colors, K-Means)\')plt.imshow(recreate_image(kmeans.cluster_centers_, labels, w, h))plt.figure(3)plt.clf()plt.axis(\'off\')plt.title(\'Quantized image (64 colors, Random)\')plt.imshow(recreate_image(codebook_random, labels_random, w, h))plt.show()
脚本的总运行时间:(0分钟1.769秒) 估计的内存使用量: 156 MB \"a2ec327f9953e63502d9d4a8b5845aa6.png\" 下载Python源代码: plot_color_quantization.py 下载Jupyter notebook源代码: plot_color_quantization.ipynb 由Sphinx-Gallery生成的画廊

文壹由“伴编辑器”提供技术支持

☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏 文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

\"k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化_第4张图片\"

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

\"k折交叉验证法python实现_使用python+sklearn实现使用K均值进行颜色量化_第5张图片\"

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号