使用 K-Means 算法对鸢尾花数据集进行聚类分析

简介

本教程将使用 K-Means 算法对经典的鸢尾花数据集进行聚类分析,并使用 Python 语言进行实现。鸢尾花数据集包含 150 个样本,每个样本包含 4 个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,以及其所属类别(三种鸢尾花:Setosa, Versicolor, Virginica)。我们将使用 K-Means 算法将这些样本分成不同的聚类,并评估聚类效果。

步骤

  1. 导入库和数据集
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.metrics import accuracy_score, f1_score, adjusted_rand_score
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data
y = iris.target
  1. 确定最佳 K 值

为了确定最佳的聚类数量 K,我们将使用肘部法则。肘部法则通过观察不同 K 值下误差平方和 (WCSS) 的变化来确定最佳 K 值。当 K 值增加时,WCSS 会逐渐下降,但在最佳 K 值附近,WCSS 会出现一个拐点,形似手肘,因此被称为肘部法则。

wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)

import matplotlib.pyplot as plt
plt.plot(range(1, 11), wcss)
plt.title('肘部法则')
plt.xlabel('K值')
plt.ylabel('WCSS')
plt.show()
  1. 训练 K-Means 模型并进行聚类

根据肘部法则的结果,我们选择 K=3 作为最佳的聚类数量。接下来,我们将使用 K=3 训练 K-Means 模型并对数据进行聚类:

kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=300, n_init=10, random_state=0)
y_pred = kmeans.fit_predict(X)
  1. 评估聚类效果

我们将使用聚类纯度、F1 值和兰德系数来评估聚类效果。

acc = accuracy_score(y, y_pred)
f1 = f1_score(y, y_pred, average='weighted')
ari = adjusted_rand_score(y, y_pred)

print('聚类纯度:', acc)
print('F1值:', f1)
print('兰德系数:', ari)

结果分析

运行代码后,我们将得到聚类纯度、F1 值和兰德系数的值。聚类纯度衡量的是正确分类的样本比例。F1 值是精度和召回率的调和平均数,可以综合反映聚类效果。兰德系数衡量的是聚类结果与真实结果之间的相似度。

结论

通过本教程,我们学习了如何使用 K-Means 算法对鸢尾花数据集进行聚类分析,并使用不同的指标来评估聚类效果。K-Means 算法是一种简单而有效的聚类方法,可以应用于各种数据分析任务。

使用K-Means算法对鸢尾花数据集进行聚类分析

原文地址: http://www.cveoy.top/t/topic/jDvc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录