机器学习sklearn----KMeans实例(图片数据矢量量化的应用)

本文介绍了机器学习中的矢量量化,它作为一种数据压缩和降维方法,特别是在图像处理中。文章重点讨论了KMeans聚类法和随机质心法在矢量量化中的应用。通过实例展示了KMeans如何有效地保留图像信息,而随机质心法可能导致信息损失。两种方法的比较突显了KMeans的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

矢量量化理解

矢量量化可以理解为数据的压缩,可以看作是一种降维的过程,只是和我们之前知道的降维算法的理论完全不一样。
举例来说,我们有一张600 x 600 个像素点的图片,每个像素点有一个颜色,那么这个图片上存在的信息就有360000个。图片上有很多的像素点之间的颜色差异微乎其微,那么我们就可以将这些像素点看作是同一个像素点(相当于KMeans的质心),将这些像素点的颜色替换为同一个颜色。图片的矢量量化就是将每个像素点的颜色用其所处的质心的颜色来代替。(个人理解,可能不是很正确)
图片的矢量量化有两种方式:

  • KMeans聚类法:通过KMeans计算出质心,对信息的损失很少
  • 随机质心法:通过随机算法选择质心,带来的后果可能会损失较多的信息

本次代码使用到的相关库

import numpy as np
import pandas as pd
from sklearn.datasets import load_sample_image # 加载图片数据
from sklearn.utils import shuffle # 将数据随机打乱
from sklearn.metrics import pairwise_distances_argmin # 计算数据点之间的距离
from sklearn.cluster import KMeans

import matplotlib.pyplot as plt

import warnings

%matplotlib inline
warnings.filterwarnings("ignore") # 忽略警告

KMeans聚类法

导入数据

源图像总共有273280个像素点,每个点对应一个RGB颜色值。

# 导入颐和园的图片
china = load_sample_image("china.jpg")
china.shape # (427, 640, 3)

# 展示原图
plt.figure(figsize=(10,10))
plt.imshow(china)

在这里插入图片描述

查看原始数据。将相同的颜色去重后还是有9w+不同的颜色

# 查看原始数据的信息
width, height, dim = china.shape # 记录花的维度信息

# 将三维信息变为二维,每一列行三个数据,对应RGB的颜色
data_df = pd.DataFrame(data=china.reshape
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值