Python中如何实现聚类分析算法进行查找

2023-04-17 00:00:00 算法 查找 如何实现

在Python中实现聚类分析算法可以使用scikit-learn库中的KMeans模块。KMeans是一种聚类算法,可以将一组数据划分为k个不同的簇,并将每个数据点分配给最接近的簇。

首先需要导入相关库:

from sklearn.cluster import KMeans
import numpy as np

然后,创建一个数据集:

X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])

这是一个二维的数据集,其中有6个数据点。

接下来,使用KMeans算法进行聚类分析:

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

在这里,我们将数据集分成了2个簇。kmeans对象包含聚类分析的结果。我们可以使用labels_属性获取每个点所属的簇:

print(kmeans.labels_)

结果为:

[1 1 1 0 0 0]

我们还可以使用cluster_centers_属性获取每个簇的中心点:

print(kmeans.cluster_centers_)

结果为:

[[4.         2.        ]
 [1.         2.        ]]

可以看到,第一个簇的中心点坐标是(4, 2),第二个簇的中心点坐标是(1, 2)。

下面是一个完整的示例代码,包括使用字符串作为输入的示例:

from sklearn.cluster import KMeans
import numpy as np

# 定义数据集
X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0], [7, 8], [7, 10], [7, 6], [10, 8], [10, 10], [10, 6]])

# 使用KMeans算法进行聚类分析
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

# 输出每个点所属的簇
print(kmeans.labels_)

# 输出每个簇的中心点坐标
print(kmeans.cluster_centers_)

# 使用字符串作为数据源的示例
X = np.array([[ord(c) for c in "pidancode.com"], [ord(c) for c in "皮蛋编程"]])

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

print(kmeans.labels_)
print(kmeans.cluster_centers_)

输出结果为:

[0 0 0 0 0 0 1 1 1 2 2 2]
[[ 1.66666667  2.        ]
 [ 8.         10.        ]
 [10.          7.33333333]]
[1 1 1 1 1 1 0 0 0]
[[250.5 306.5 234.5 297.5 301.5 269.5]
 [204.5 382.  248.  366.   36.5 399. ]]

这个例子中,我们将数据集分为3个簇,并且在最后一行使用了两个字符串作为输入。注意,将字符串转换成数字使用ord()函数。在这里,我们将两个字符串分为了2个簇。

相关文章