无监督式学习-鸢尾花数据降维and聚类

一. 使用PCA(主成分分析)进行降维实现数据可视化

降维的任务是要找到一个可以保留数据本质特征的低维矩阵来表示高维数据, 通常用于辅助数据可视化的工作.

下面我们使用主成分分析(principal component analysis, PCA)方法, 这是一种快速线性降维技术. 模型返回两个主成分, 用二维数据表示鸢尾花的4维数据.

1. 首先导入数据

import seaborn as sns
sns.set()
iris = sns.load_dataset('iris')
print(iris) # 输出查看数据

2. 划分数据, 特征和标签

X_iris = iris.drop('species', axis=1)
y_iris = iris['species']

3. 选择PCA模型, 进行拟合

from sklearn.decomposition import PCA
model = PCA(n_components=2) # 设置超参数, 初始化模型
model.fit(X_iris) # 进行拟合
X_2D = model.transform(X_iris) # 将数据转化为二维

4. 图形可视化

思路是将二维数据插入到DataFrame中, 然后用seaborn的lmplot方法绘制图形.

iris['PCA1'] = X_2D[:, 0]
iris['PCA2'] = X_2D[:, 1]
sns.lmplot("PCA1", "PCA2", hue='species', data=iris, fit_reg=False)

结果展示:

可以看到PCA降维成功地将鸢尾花的种类在视觉上进行划分.
原先的数据集是4维, 难以进行可视化, 降维后在2维上实现可视化.
在这里插入图片描述


二. 使用高斯混合模型对鸢尾花数据进行聚类

1. 首先导入数据

import seaborn as sns
sns.set()
iris = sns.load_dataset('iris')
print(iris) # 输出查看数据

2. 划分数据, 特征和标签

X_iris = iris.drop('species', axis=1)
y_iris = iris['species']

3. 使用主成分分析进行降维(为了可视化为2维数据)

from sklearn.decomposition import PCA
model = PCA(n_components=2) # 设置超参数, 初始化模型
model.fit(X_iris) # 进行拟合
X_2D = model.transform(X_iris) # 将数据转化为二维
iris['PCA1'] = X_2D[:, 0]
iris['PCA2'] = X_2D[:, 1]

4. 选择高斯混合模型

from sklearn.mixture import GMM
model = GMM(n_components=3, covariance_type='full') # 设置超参数
model.fit(X_iris) # 拟合数据
y_gmm = model.predict(X_iris) # 确定簇标签

5. 数据可视化

iris['cluster'] = y_gmm
sns.lmplot('PCA1', 'PCA2', data=iris, hue='species', col='cluster', fit_reg=False)

如图, 数据根据簇的不同被成三类.
在这里插入图片描述

可以看到图一和图二的分类基本正确, 图三有少数的点是属于图二.

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸢尾花数据集是一个常用的机器学习数据集,用于分类和聚类任务。k-means聚类算法是一种基于划分的聚类方法,它可以将数据分为指定数量的簇。在给定鸢尾花数据集的情况下,我们可以使用k-means算法将鸢尾花样本分为不同的簇。具体步骤如下: 1. 首,我们需要导入相关的库,包括matplotlib和sklearn中的KMeans类。 2. 然后,加载鸢尾花数据集,并选择其中的两个特征作为数据的输入。这里我们选择了花瓣长度和花瓣宽度作为特征。 3. 接下来,我们可以使用scatter函数绘制原始数据的分布图,其中每个点表示一个鸢尾花样本。 4. 构建一个KMeans聚类器,指定要聚类的簇的数量为3。 5. 使用fit函数对数据进行聚类,并使用labels_属性获取每个样本的聚类标签。 6. 最后,根据聚类标签将数据分成不同的簇,并使用scatter函数绘制出每个簇的样本。 通过这样的步骤,我们可以使用k-means聚类算法将鸢尾花数据集分成不同的簇,并可视化聚类结果。 [3<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [利用python内置K-Means聚类算法实现鸢尾花数据聚类](https://blog.csdn.net/zijinmu69/article/details/82708130)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [K-means聚类分析(鸢尾花)](https://blog.csdn.net/qq_54452916/article/details/121297434)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值