引言: 在机器学习领域中,聚类算法是一种常用的无监督学习方法,它可以帮助我们探索数据的内在结构和发现隐藏的模式。本文将介绍如何使用KMeans聚类算法对鸢尾花数据集进行聚类分析,通过可视化结果展示不同花朵之间的特征差异。
实现过程:
加载数据:使用sklearn
库中的datasets
模块加载鸢尾花数据集,获取花萼和花瓣的相关特征数据。
构建KMeans聚类器:利用sklearn
库中的KMeans
模块创建聚类器对象,并设定聚类簇的数量为3。
训练模型:使用聚类器对象对特征数据进行聚类训练,通过调用fit()
方法实现。
获取聚类标签:通过聚类器对象的labels_
属性,获取每个样本所属的聚类标签。
可视化数据分布:利用matplotlib
库绘制散点图,以花萼长度和宽度为横纵坐标,展示原始数据的分布情况。
可视化聚类结果:根据聚类标签将数据点分为不同类别,分别用不同的颜色和标记展示,以直观显示聚类结果。
重复步骤5和6:使用花瓣长度和宽度为横纵坐标,重复步骤5和6,展示另一种特征下的聚类结果。
实现思路: KMeans聚类算法的基本思路是将数据集划分为K个簇,使得同一簇内的数据点之间的距离较近,而不同簇之间的距离较远。具体实现过程如下:
加载鸢尾花数据集,获取特征数据。
构建KMeans聚类器对象,设置簇的数量。
使用聚类器对象对数据进行训练,得到聚类模型。
获取每个数据点所属的聚类标签。
绘制原始数据的分布图,观察花萼特征和花瓣特征的分布情况。
根据聚类标签将数据点分组,并使用不同的颜色和标记展示各个簇的数据。
实现代码:
# 导入所需库
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 加载数据
iris = datasets.load_iris()
X = iris.data[:, :4]
# 构建KMeans聚类器
estimator = KMeans(n_clusters=3)
estimator.fit(X) # 开始聚类训练
label_pred = estimator.labels_ # 获取聚类标签
# 绘制数据分布图(以花萼长度和宽度为展示依据)
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see')
plt.xlabel('calyx length')
plt.ylabel('calyx width')
plt.legend(loc=2)
plt.show()
# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')
plt.xlabel('calyx length')
plt.ylabel('calyx width')
plt.legend(loc=2)
plt.show()
# 绘制数据分布图(以花瓣长度和宽度为展示依据)
plt.scatter(X[:, 2], X[:, 3], c="red", marker='o', label='see')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.legend(loc=2)
plt.show()
# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 2], x0[:, 3], c="red", marker='o', label='label0')
plt.scatter(x1[:, 2], x1[:, 3], c="green", marker='*', label='label1')
plt.scatter(x2[:, 2], x2[:, 3], c="blue", marker='+', label='label2')
plt.xlabel('petal length')
plt.ylabel('petal width')
plt.legend(loc=2)
plt.show()
结论: 通过KMeans聚类算法对鸢尾花数据集进行分析,我们能够发现不同花朵之间的特征差异,并将其可视化呈现。这种聚类分析方法有助于我们了解数据的内在结构,从而为进一步的数据分析和预测建模提供基础。
以上就是使用KMeans聚类算法对鸢尾花数据集进行分析的实现过程、实现思路和实现代码。