Hei!

你是不是很威

第四次作业

1. 应用K-means算法进行图片压缩

读取一张图片

观察图片文件大小,占内存大小,图片数据结构,线性化

用kmeans对图片像素颜色进行聚类

获取每个像素的颜色类别,每个类别的颜色

压缩图片生成:以聚类中收替代原像素颜色,还原为二维

观察压缩图片的文件大小,占内存大小

import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
import numpy as np
import sys

Myjpg = plt.imread("hzw.jpg") #读取图片
image = Myjpg[::3, ::3] #先进行每三个像素取一个进性压缩
X = image.reshape(-1, 3)

n_colors = 32 #分成32类
est = KMeans(n_colors) #构建模型
lables = est.fit_predict(X) #训练
colors = est.cluster_centers_ #得到聚类中心
new_image = colors[lables].reshape(image.shape) #得到新图片

plt.imshow(new_image.astype(np.uint8))
plt.show()
plt.imshow(image)
plt.show()
print("压缩前图片大小:", image.size)
print("压缩前图片占用内存大小::", sys.getsizeof(image))

print("压缩后图片大小:", new_image.size)
print("压缩后图片占用内存大小::", sys.getsizeof(new_image))

 原图:

 

 压缩后:

 

 

 

 

2. 观察学习与生活中可以用K均值解决的问题。从数据-模型训练-测试-预测完整地完成一个应用案例。这个案例会作为课程成果之一,单独进行评分。

 

 将爬取到车俩的数据进性聚类,使用总价列将分成3类。


import pandas as pd

data2 = pd.read_csv('./201706120031谢海源(已处理).csv',index_col= 0)

y_data = data2.iloc[:,3] #取总价列
y_data = np.array(y_data)


new_data = y_data.reshape(-1,1)
est1 = KMeans(n_clusters = 3)
lable1 = est1.fit_predict(new_data)
jiage = est1.cluster_centers_

 

 结果可以看出,6.5类的是较低价格,16.57的是普通,28.4是较高价格

posted @ 2020-04-19 21:08  INacl  阅读(181)  评论(0编辑  收藏  举报