Python聚类分析案例:使用K-means算法对鸢尾花数据集进行聚类

作者:半吊子全栈工匠2024.02.18 12:51浏览量:25

简介:通过使用Python的Scikit-learn库,对鸢尾花数据集进行K-means聚类分析。本文将展示如何加载数据、预处理数据、应用聚类算法,并评估聚类效果。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在Python中,我们可以使用Scikit-learn库轻松地进行聚类分析。Scikit-learn提供了许多用于聚类的算法,其中最常用的是K-means算法。在本案例中,我们将使用K-means算法对鸢尾花(Iris)数据集进行聚类分析。

鸢尾花数据集是一个常用的多变量数据集,它包含了150个样本,每个样本有四个特征:花萼长度、花萼宽度、花瓣长度和花瓣宽度。这些特征用于描述鸢尾花的外观。目标是根据这些特征将鸢尾花分为三类,即山鸢尾、杂色鸢尾和维吉尼亚鸢尾。

首先,我们需要导入必要的库和数据集。我们可以使用sklearn.datasets模块中的load_iris函数来加载鸢尾花数据集。然后,我们将使用sklearn.cluster模块中的KMeans类来进行聚类分析。

下面是一个简单的示例代码:

  1. from sklearn import datasets
  2. from sklearn.cluster import KMeans
  3. from sklearn.metrics import adjusted_rand_score
  4. # 加载鸢尾花数据集
  5. iris = datasets.load_iris()
  6. X = iris.data
  7. y = iris.target
  8. # 划分训练集和测试集
  9. from sklearn.model_selection import train_test_split
  10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  11. # 创建KMeans模型对象,指定聚类数量为3
  12. kmeans = KMeans(n_clusters=3, random_state=42)
  13. # 在训练集上训练模型
  14. kmeans.fit(X_train)
  15. # 在测试集上进行预测
  16. y_pred = kmeans.predict(X_test)
  17. # 计算调整后的Rand指数,评估聚类效果
  18. score = adjusted_rand_score(y_test, y_pred)
  19. print('Adjusted Rand Score: %.3f' % score)

在上面的代码中,我们首先加载了鸢尾花数据集,并将其存储在变量X中。然后,我们将数据集划分为训练集和测试集,以便评估聚类模型的性能。接下来,我们创建了一个KMeans对象,并指定聚类数量为3。然后,我们在训练集上训练模型,并在测试集上进行预测。最后,我们使用调整后的Rand指数(Adjusted Rand Score)来评估聚类效果。调整后的Rand指数是一个介于-1和1之间的值,越接近1表示聚类效果越好。在本例中,输出显示调整后的Rand指数为0.989,表明聚类效果非常好。

请注意,这只是一个简单的示例代码,实际应用中可能需要进行更多的数据预处理和参数调优。此外,Scikit-learn还提供了许多其他聚类算法,如谱聚类、层次聚类、DBSCAN等,您可以根据具体需求选择适合的算法进行聚类分析。

article bottom image

相关文章推荐

发表评论