Python中如何实现聚类分析算法进行查找
在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个簇。
相关文章