聚类算法用于降维,KMeans的矢量量化应用
重要属性:
重要接口:
案例
矢量量化的降维是在同等样本量上压缩信息的大小,即不改变特征的数目也不改变样本的数目,只改变在这些特征下的样本上的信息量。
用K-Means聚类中获得的质心来替代原有的数据,可以把数据上的信息量压缩到非常小,但又不损失太多信息。我们接下来就通过一张图图片的矢量量化来看一看K-Means如何实现压缩数据大小,却不损失太多信息量。
1、导入需要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import pairwise_distances_argmin
#对两个序列中的点进行距离匹配的函数
from sklearn.datasets import load_sample_image
#导入图片数据所用的类
from sklearn.utils import shuffle #洗牌
2、导入数据,探索数据
导入数据:
# 实例化,导入颐和园的图片
china = load_sample_image("china.jpg")
china
查看数据:
#查看数据类型
china.dtype
china.shape
#长度 x 宽度 x 像素 > 三个数决定的颜色
china[0][0]
#包含多少种不同的颜色?
newimage = china.reshape((427 * 640,3))
newimage.shape
数据去重:
import pandas as pd
pd.DataFrame(newimage).drop_duplicates().shape
#我们现在有9W多种颜色
图像可视化:
# 图像可视化
plt.figure(figsize=(15,15))
plt.imshow(china) #导入3维数组形成的图片