第四次作业
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是较高价格