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
类来进行聚类分析。
下面是一个简单的示例代码:
from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建KMeans模型对象,指定聚类数量为3
kmeans = KMeans(n_clusters=3, random_state=42)
# 在训练集上训练模型
kmeans.fit(X_train)
# 在测试集上进行预测
y_pred = kmeans.predict(X_test)
# 计算调整后的Rand指数,评估聚类效果
score = adjusted_rand_score(y_test, y_pred)
print('Adjusted Rand Score: %.3f' % score)
在上面的代码中,我们首先加载了鸢尾花数据集,并将其存储在变量X
中。然后,我们将数据集划分为训练集和测试集,以便评估聚类模型的性能。接下来,我们创建了一个KMeans对象,并指定聚类数量为3。然后,我们在训练集上训练模型,并在测试集上进行预测。最后,我们使用调整后的Rand指数(Adjusted Rand Score)来评估聚类效果。调整后的Rand指数是一个介于-1和1之间的值,越接近1表示聚类效果越好。在本例中,输出显示调整后的Rand指数为0.989,表明聚类效果非常好。
请注意,这只是一个简单的示例代码,实际应用中可能需要进行更多的数据预处理和参数调优。此外,Scikit-learn还提供了许多其他聚类算法,如谱聚类、层次聚类、DBSCAN等,您可以根据具体需求选择适合的算法进行聚类分析。

发表评论
登录后可评论,请前往 登录 或 注册