当我们需要对大量数据进行分类时,k-means聚类是一种常用的方法。Python语言有很多扩展库可以方便地实现k-means聚类。下面是一些利用Python实现k-means聚类的攻略:
准备数据
首先需要准备数据,k-means聚类是根据欧几里得距离进行数据点的分类,所以确保你的数据是数值数据。一般格式如下:
数据点编号 | x1 | x2 | ... | xn |
---|---|---|---|---|
1 | 1.5 | 2.0 | ... | 4.0 |
2 | 3.0 | 1.0 | ... | 5.6 |
... | ... | ... | ... | ... |
加载库
Python的许多扩展库都可以实现k-means聚类,下面列出了主要的库以及支持的k-means聚类方法。
from sklearn.cluster import KMeans # Scikit-learn库
from scipy.cluster.vq import kmeans # Scipy库
from pyclustering.cluster.kmeans import kmeans # PyClustering库
from kmodes.kmodes import KModes,KPrototypes # KModes库
这四个扩展库都提供了k-means聚类的实现方法。
使用Scikit-learn库实现k-means
以下是使用Scikit-learn库实现kmeans聚类的一些示例:
from sklearn.cluster import KMeans
import numpy as np
X= np.array([[1,2],[1,4],[1,0],
[10,4],[10,2],[10,0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_
array([1, 1, 1, 0, 0, 0], dtype=int32)
在这个示例中,我们使用Scikit-learn库,将二维数组X作为输入数据,并将k设置为2,执行k-means聚类。执行结果就是为每个数据点分配了一个类别(label)。
使用Scipy库实现k-means
以下是使用Scipy库实现kmeans聚类的一些示例:
from scipy.cluster.vq import kmeans, vq
X = np.array([[1.0, 1.5], [2.0, 1.0], [0.0, 0.0],
[5.0, 0.5], [4.5, 1.0], [5.0, 0.0]])
centroids, label = kmeans(X, 2)
在这个示例中,我们使用Scipy,将数据X分为两类。执行结果就是为每个数据点分配了一个类别(label)和聚类中心坐标(centroids)。
其他扩展库的实现示例
在PyClustering库中,要实现k-means聚类,要先创建Kmeans对象:
from pyclustering.cluster.kmeans import kmeans
from pyclustering.cluster.center_initializer import kmeans_plusplus_initializer
X = np.array([[1.0, 1.5], [2.0, 1.0], [0.0, 0.0],
[5.0, 0.5], [4.5, 1.0], [5.0, 0.0]])
initial_centers = kmeans_plusplus_initializer(X, 2).initialize()
kmeans_instance = kmeans(X, initial_centers, tolerance=0.001)
kmeans_instance.process()
clusters = kmeans_instance.get_clusters()
在KModes库中,要实现k-modes聚类,代码如下:
from kmodes.kmodes import KModes
X = np.array([[1, "a", "True"], [2, "b", "False"], [3, "c", "True"],
[4, "b", "False"], [5, "c", "False"], [6, "a", "True"]])
km = KModes(n_clusters=2, init='Huang', n_init=5, verbose=1)
km.fit(X)
clusters = km.predict(X)
综上,这是一个完整的k-means聚类的Python攻略,其中涉及到数据预处理、库的使用以及示例的代码应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何利用python实现kmeans聚类 - Python技术站