Iris 数据集聚类:KMeans 和谱聚类可视化比较

本文将展示如何使用两种常见的聚类方法,KMeans 和谱聚类,对 Iris 数据集进行聚类,并通过可视化来比较两种方法的效果。最后,我们将通过观察可视化结果来选择最佳的超参数 K,即聚类簇数。

方法一:KMeans 聚类

KMeans 聚类是一种常见的聚类方法,可以将数据集划分为 K 个簇。在 Iris 数据集上,我们可以使用 KMeans 聚类将花朵分为不同的种类。

首先,导入需要的库和数据集:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

然后,我们可以使用 KMeans 聚类算法将数据集分为 3 类:

kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

最后,我们可以使用 matplotlib 库将聚类结果可视化:

plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('KMeans Clustering')
plt.show()

结果如下图所示:

KMeans 聚类可视化结果

在这个图中,不同颜色的点表示不同的簇。我们可以看到,KMeans 聚类算法成功将 Iris 数据集分为了 3 个簇。

此时,我们可以根据可视化结果来选择超参数 K,即聚类的簇数。通过观察图像,我们可以发现,聚类结果似乎更好地将数据分为了三类,因此我们选择 K=3。

方法二:谱聚类

谱聚类是一种基于图论的聚类方法,可以将数据集分为不同的簇。在 Iris 数据集上,我们可以使用谱聚类将花朵分为不同的种类。

首先,导入需要的库和数据集:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import SpectralClustering
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target

然后,我们可以使用谱聚类算法将数据集分为 3 类:

spectral = SpectralClustering(n_clusters=3, assign_labels='discretize', random_state=0).fit(X)

最后,我们可以使用 matplotlib 库将聚类结果可视化:

plt.scatter(X[:, 0], X[:, 1], c=spectral.labels_)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Spectral Clustering')
plt.show()

结果如下图所示:

谱聚类可视化结果

在这个图中,不同颜色的点表示不同的簇。我们可以看到,谱聚类算法成功将 Iris 数据集分为了 3 个簇。

此时,我们可以根据可视化结果来选择超参数 K,即聚类的簇数。通过观察图像,我们可以发现,聚类结果似乎更好地将数据分为了三类,因此我们选择 K=3。

总结

本文演示了使用 KMeans 和谱聚类两种方法对 Iris 数据集进行聚类,并通过可视化比较了两种方法的效果。通过观察可视化结果,我们可以选择最佳的超参数 K,即聚类簇数。希望本文对您理解聚类算法和选择最佳超参数有所帮助。

Iris 数据集聚类:KMeans 和谱聚类可视化比较

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

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