第九次作业——K-means算法应用:图片压缩
一.读取一张示例图片或自己准备的图片,观察图片存放数据特点。
根据图片的分辨率,可适当降低分辨率。
再用k均值聚类算法,将图片中所有的颜色值做聚类。
然后用聚类中心的颜色代替原来的颜色值。
形成新的图片。
观察原始图片与新图片所占用内存的大小。
将原始图片与新图片保存成文件,观察文件的大小。
#读取一张示例图片或自己准备的图片,观察图片存放数据特点
from sklearn.datasets import load_sample_image
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np #读取图片
china = load_sample_image("china.jpg")
plt.imshow(china)
plt.show()
print(china.shape)#观察图片存放数据特点
china #根据图片的分辨率,可适当降低分辨率
image = china[::3, ::3]
X = image .reshape(-1,3)
plt.imshow(image)
plt.show()
print(image.shape,X.shape) #再用k均值聚类算法,将图片中所有的颜色值做聚类。
n_colors =64 #(256,256,256)
model = KMeans(n_colors) #每个点的颜色分类,0-63
labels = model.fit_predict(X) #64个聚类中心,颜色值
colors = model.cluster_centers_ #用聚类中心的颜色代替原来的颜色值
new_image=colors[labels] #形成新的照片
new_image=new_image.reshape(image.shape)
plt.imshow(new_image.astype(np.uint8))
plt.show() #观察原始图片与新图片所占用内存的大小,将原始图片与新图片保存成文件,观察文件的大小。
import matplotlib.image as img
img.imsave('F:\\china.jpg',china)
img.imsave('F:\\china_zip.jpg',image)
运行结果





二.理解贝叶斯定理:
- M桶:7红3黄
- N桶:1红9黄
- 现在:拿出了一个红球
- 试问:这个红球是M、N桶拿出来的概率分别是多少?

第九次作业——K-means算法应用:图片压缩的更多相关文章
- 使用K均值算法进行图片压缩
K均值算法 上一期介绍了机器学习中的监督式学习,并用了离散回归与神经网络模型算法来解决手写数字的识别问题.今天我们介绍一种机器学习中的非监督式学习算法--K均值算法. 所谓非监督式学习,是一种 ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- K-Means算法:图片压缩
#读取实例图片# from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import ma ...
- 4.K均值算法应用
一.课堂练习 from sklearn.cluster import KMeans import matplotlib.pyplot as plt import numpy as np from sk ...
- 4.K均值算法--应用
1. 应用K-means算法进行图片压缩 读取一张图片 观察图片文件大小,占内存大小,图片数据结构,线性化 用kmeans对图片像素颜色进行聚类 获取每个像素的颜色类别,每个类别的颜色 压缩图片生成: ...
- K-means算法
K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢? ...
- 2017-2018-1 20179205《Linux内核原理与设计》第九周作业
<Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 机器学习实战笔记--k近邻算法
#encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...
- 从K近邻算法谈到KD树、SIFT+BBF算法
转自 http://blog.csdn.net/v_july_v/article/details/8203674 ,感谢july的辛勤劳动 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章 ...
随机推荐
- Deep Learning--week1~week3
week1 一张图片,设像素为64*64, 颜色通道为红蓝绿三通道,则对应3个64*64实数矩阵 为了用向量表示这些矩阵,将这些矩阵的像素值展开为一个向量x作为算法的输入 从红色到绿色再到蓝色,依次按 ...
- SSH无法连接到服务器
SSH服务器会无法连接,有时候并不是密码的问题,可能由于你上次改了密码(就算改成跟上次一样也是一个效果)导致家目录下的known_hosts(/root/.ssh/known_hosts)不一样了并且 ...
- javaScript--animate函数
一.思路 1.获取目标值 2.再获取初始值 3.得到总距离 4.定义定时器的执行间隔 5.获取时间 6.得到总次数 7.总距离/总次数 = 步长 8.使用setInterval不停地改变dom元素的每 ...
- sparkSQL脚本更改问题
相应的pom依赖文件 <dependencies> <!-- <dependency> <groupId>org.apache.storm</group ...
- NetSec2019 20165327 Exp4 恶意代码分析
NetSec2019 20165327 Exp4 恶意代码分析 一.实践目标 1.监控你自己系统的运行状态,看有没有可疑的程序在运行. 2.分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分 ...
- vue作用域插槽的应用
问题场景: 存在一个列表,然后当鼠标放入列表中的名称上的时候,自动弹出简介,类似这种效果, 我们当然可以使用positon relative和absolute搭配达到这样的效果,但是现在有一个奇葩的问 ...
- 在chrome上隐藏video的option按钮
隐藏方法: video::-webkit-media-controls{ overflow:hidden !important;}video::-webkit-media-controls-enclo ...
- Python 考试练习
1.算法复杂度分为:时间复杂度和空间复杂度 一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量. 时间复杂度:是指执行算法所需要的计算工作量,也即算法的执行时间 (注意:是算法的执 ...
- PHP安装swoole扩展
环境:gccyum install gcc 第一步:下载swoole包wget http://pecl.php.net/package/swoole第二步:解压,并进入执行:/usr/local/ph ...
- 为什么Java的main方法必须是public static void?
一. void 如下,像C, C++一样,将返回值类型改为int,再返回一个0,虽然编译通过,但是运行时会报错. 找到一种可理解的解释:方法的副作用和返回值类型.(http://www.cnblogs ...