4.K均值算法--应用

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

读取一张图片

import matplotlib.pyplot as pillow        #导入所需要的包
mortyimage=pillow.imread("./morty.png")    #导入自备的图片Morty!!!!!
pillow.imshow(mortyimage)                 #显示图片

 

 

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

print("原图大小:",mortyimage.size)
print("原图占用内存",sys.getsizeof(mortyimage))
print("Morty数据结构",mortyimage)


 

 

 

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

n_colors =64                            #将颜色聚成64类
K_model = KMeans(n_colors)

 

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

 

labels = K_model.fit_predict(X)
colors = K_model.cluster_centers_
print(labels.shape,colors.shape)

 

 

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

 

 

 

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

mortyimg=mortyimage[::3,::3]                   #每三个像素取一个像素
print("原图大小:",mortyimage.size)
print("压缩后图片大小:",mortyimg.size)
print("原图占用内存",sys.getsizeof(mortyimage))
print("压缩后图片占用内存",sys.getsizeof(mortyimg))

 

 

 

 

 

2. 观察学习与生活中可以用K均值解决的问题。

从数据-模型训练-测试-预测完整地完成一个应用案例。

这个案例会作为课程成果之一,单独进行评分。

事先网上爬取数据,进行油耗排量的K均值算法

 

 实验代码如下:

 

import numpy as np
from sklearn.cluster import KMeans
import pandas as pd
data = pd.read_csv('./201706120033 段泽平.csv')
x= data.iloc[:,[3,4]].astype('int')
x= np.array(x)
km_model=KMeans(n_clusters=3)    #将油耗分为高中低三类
km_model.fit(x) #训练模型
a_Kmeans=km_model.predict(x) #预测模型

heavy = np.array(data[a_Kmeans==0]['百公里油耗/L'])
economic = np.array(data[a_Kmeans==1]['百公里油耗/L'])
normal = np.array(data[a_Kmeans==2]['百公里油耗/L'])

 

 

经济型:

 

正常类型:

 

 费油型

posted on 2020-04-19 17:02  dyunc3  阅读(146)  评论(0编辑  收藏  举报

导航