第九次作业——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篇文章 ...
 
随机推荐
- 数据结构与算法(C#)入门 --- 序
			
注:本系列文章适合新手入门.博主也是摸着石头过河,难免有错误之处.还请谅解~ ~~~ 数据结构是什么? 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 ...
 - 垂直对齐:vertical-align:super属性
			
<p style=”vertical-align:super;”>垂直对齐<span>上标</span></p> <p>元素默认为块级元素, ...
 - Http 状态码:
			
消息 100 Continue 101 Switching Protocols 102 Processing 成功 200 OK 201 Created 202 Accepted 203 Non-Au ...
 - js及jsp区别
 - java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
			
Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Except ...
 - js计算地球(地图)上两点的直线距离
			
//计算两点位置距离 getDistance: function (lat1, lng1, lat2, lng2) { lat1 = lat1 || 0; lng1 = lng1 || 0; lat2 ...
 - 使用querybuilder做忽略大小写查询的例子
			
自定义Predicate: import com.day.cq.search.Predicate; import com.day.cq.search.eval.AbstractPredicateEva ...
 - 【转】Appium如何定位安卓APP元素
			
转载原文:https://www.jianshu.com/p/efe9dcf8bbaf 一.定位工具 在安装appium环境的时候我们已经安装了SDK,里面就自带有元素定位的工具,位置在.../sdk ...
 - rocketMQ No route info of this topic 错误
			
最近在使用rocketmq 发送消息,出现了No route info of this topic 异常,但奇怪的是我的其它的服务都可以成功发送,唯有crs服务不能成功发送,在网上搜索的解决方式基本上 ...
 - edu9E. Thief in a Shop
			
题意:n个物品每个价值a[i],要求选k个,可以重复,问能取到哪几个价值 题解:fft裸题.但是直接一次fft,然后快速幂会boom.这样是严格的\(2^{20}*log2(2^{20})*log(w ...