第九次作业——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篇文章 ...
随机推荐
- SpringBoot后台接收前台的字符串数据
需求 将前台传入的字符串数据转为int类型. 操作 在pom.xml中添加引用. <dependency> <groupId>org.apache.commons</gr ...
- yii restful和一般路由共存
<?php namespace app\controllers; use Yii; use yii\rest\ActiveController; /** * */ class TestContr ...
- poi 导入Excle
一,AOP 是什么 Apache POI 提供java 程序对Microsoft Office格式文档的读写功能操作 二,所需要的jar包 三,实现代码 1, 读取Excle 返回Workbook格式 ...
- leecode第二百九十二题(Nim游戏)
class Solution { public: bool canWinNim(int n) { )==)//用与的时候,要注意优先级问题 //用n%4==0的时候,其耗时比用&短,但是空间消 ...
- 论文阅读-attention-is-all-you-need
1结构介绍 是一个seq2seq的任务模型,将输入的时间序列转化为输出的时间序列. 有encoder和decoder两个模块,分别用于编码和解码,结合时是将编码的最后一个输出 当做 解码的第一个模块的 ...
- P2685 [TJOI2012]桥
P2685 [TJOI2012]桥 思路: 先求出最短路: d1[u] : u 到 1 的最短路, d2[u] : u 到 n 的最短路 再求出一条从 1 到 n 的最短路链,然后从链上的每一个点出发 ...
- linux中的wc命令
linux中wc命令用法 Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: ...
- Spring Cloud ----> 几个组件的总结
Spring Cloud Eureka 多个服务,对应多个Eureka Client 只有一个Eureka Server ,充当注册中心的角色每个Eureka Client 有ip 地址和端口号,它们 ...
- 剑指offer-01
好久没看java, 今天把 runoob 上的java基础简单过了一遍. 来吧,怎么整这个题目呢? 首先遇到的问题是java如何输入一个数组,而且这个数组并不知道长度是多少 用Scanner类 Sca ...
- PYTHON -- 基础3
1.数据类型 1.int 类型 用于计算 1.1 bit_length() 转换为2进制的最小位置 有效的 i = 5 print(i.bit_length()) i 二进制 i.bit_length ...