通过KMeans聚类算法对鸢尾花数据集进行分析

引言: 在机器学习领域中,聚类算法是一种常用的无监督学习方法,它可以帮助我们探索数据的内在结构和发现隐藏的模式。本文将介绍如何使用KMeans聚类算法对鸢尾花数据集进行聚类分析,通过可视化结果展示不同花朵之间的特征差异。

实现过程:

  1. 加载数据:使用sklearn库中的datasets模块加载鸢尾花数据集,获取花萼和花瓣的相关特征数据。

  2. 构建KMeans聚类器:利用sklearn库中的KMeans模块创建聚类器对象,并设定聚类簇的数量为3。

  3. 训练模型:使用聚类器对象对特征数据进行聚类训练,通过调用fit()方法实现。

  4. 获取聚类标签:通过聚类器对象的labels_属性,获取每个样本所属的聚类标签。

  5. 可视化数据分布:利用matplotlib库绘制散点图,以花萼长度和宽度为横纵坐标,展示原始数据的分布情况。

  6. 可视化聚类结果:根据聚类标签将数据点分为不同类别,分别用不同的颜色和标记展示,以直观显示聚类结果。

  7. 重复步骤5和6:使用花瓣长度和宽度为横纵坐标,重复步骤5和6,展示另一种特征下的聚类结果。

实现思路: KMeans聚类算法的基本思路是将数据集划分为K个簇,使得同一簇内的数据点之间的距离较近,而不同簇之间的距离较远。具体实现过程如下:

  1. 加载鸢尾花数据集,获取特征数据。

  2. 构建KMeans聚类器对象,设置簇的数量。

  3. 使用聚类器对象对数据进行训练,得到聚类模型。

  4. 获取每个数据点所属的聚类标签。

  5. 绘制原始数据的分布图,观察花萼特征和花瓣特征的分布情况。

  6. 根据聚类标签将数据点分组,并使用不同的颜色和标记展示各个簇的数据。

实现代码:

# 导入所需库
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聚类算法对鸢尾花数据集进行分析的实现过程、实现思路和实现代码。

你可能感兴趣的:(聚类,算法,kmeans)