在数据集上通过聚类实现特征降维

分享一个通过聚类算法对数据特征进行聚类从而实现降维的代码

python 复制代码
import numpy as np
from sklearn import datasets, cluster
digits = datasets.load_digits()
images = digits.images
X = np.reshape(images, (len(images), -1))
agglo = cluster.FeatureAgglomeration(n_clusters=32)
agglo.fit(X)
FeatureAgglomeration(n_clusters=32)
X_reduced = agglo.transform(X)
X_reduced.shape

以下是代码讲解:

1.导入numpy库和机器学习库的数据集、聚类算法模块

python 复制代码
import numpy as np
from sklearn import datasets, cluster

2.加载手写数字数据集

python 复制代码
digits = datasets.load_digits()

这行代码从 sklearn.datasets 模块中加载了手写数字数据集,该数据集包含8x8像素的灰度图像和对应的标签(0到9)。

3.获取图像数据

python 复制代码
images = digits.images

digits.images 是一个形状为 (1797, 8, 8) 的数组,其中 1797 是样本数量,每个样本是一个 8x8 的灰度图像。

4.将图像数据重塑为二维数组

python 复制代码
X = np.reshape(images, (len(images), -1))

这行代码将每个 8x8 的图像展平成一个长度为64的一维向量,因此 X 的形状变为 (1797, 64)。

5.创建并拟合 FeatureAgglomeration 对象

python 复制代码
agglo = cluster.FeatureAgglomeration(n_clusters=32)
agglo.fit(X)

这里创建了一个 FeatureAgglomeration 对象,指定要生成的特征数为32。然后使用 fit 方法在数据 X 上训练这个模型。

6.转换数据以减少特征维度

python 复制代码
X_reduced = agglo.transform(X)

这行代码使用训练好的 FeatureAgglomeration 模型将原始数据 X 转换为一个具有32个特征的新数据集 X_reduced。

7.查看转换后的数据形状

python 复制代码
X_reduced.shape

这行代码输出 X_reduced 的形状。由于我们指定了 n_clusters=32,所以 X_reduced 的形状应该是 (1797, 32),即有1797个样本,每个样本有32个特征。

由此将手写数字图像数据从64维降到32维,通过特征聚合的方法实现降维。

可以在自己的数据集上试试~!

相关推荐
Gyoku Mint6 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
人大博士的交易之路7 小时前
今日行情明日机会——20250606
大数据·数学建模·数据挖掘·数据分析·涨停回马枪
猛犸MAMMOTH7 小时前
Python打卡第46天
开发语言·python·机器学习
产品何同学8 小时前
数据分析后台设计指南:实战案例解析与5大设计要点总结
数据挖掘·数据分析·产品经理·墨刀·原型设计·后台管理系统·数据分析后台
小wanga8 小时前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝
deephub10 小时前
提升模型泛化能力:PyTorch的L1、L2、ElasticNet正则化技术深度解析与代码实现
人工智能·pytorch·python·深度学习·机器学习·正则化
小于不是小鱼呀10 小时前
手撕 K-Means
人工智能·算法·机器学习
m0_7401546710 小时前
K-Means颜色变卦和渐变色
算法·机器学习·kmeans
lilye6610 小时前
精益数据分析(95/126):Socialight的定价转型启示——B2B商业模式的价格策略与利润优化
人工智能·数据挖掘·数据分析
fydw_71511 小时前
Celery 核心概念详解及示例
人工智能·机器学习