开发者学堂课程【高校精品课-华东师范大学-人工智能基础:SKlearn 实现 K-Means 聚类】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/920/detail/15585
SKlearn 实现 K-Means 聚类
使用 K 均值算法对基本的数据集聚类
K 均值聚类是一个经典的聚类算法,属于非监督聚类。scikit-learn 的 cluster 模块中提供 KMeans 类可以实现K-均值聚类,构造函数如下:
sklearn.cluster.KMeans(n_clusters=8,init=’k-means++’,n_init=10,max_iter=300,tol=0.0001,precompute_distances='auto’ ,verbose=0,random_state=None,copy_x=True,n_jobs=None,algorithm=' auto')
下面介绍主要参数的含义。n clusters:是可选参数,默认值为8。表示要形成的簇的数目,即类的数量。
init:有三个可选值:’ k-means+ +' ,‘random' 或者传递一个ndarray向量。这个参数的功能是指定聚类的初始化方法,默认值为k-means+ +。对于聚类来说,初始的聚类中心对聚类结果影响很大。我们要特别来了解这三种初始化方法。
此参数指定初始化方法,默认值为 ‘k-means++’。
(1) ‘k-means++' 用K-means++优化算法选定初始聚类中心,可加速迭代收敛过程。
(2) 'random' 随机从训练数据中选取初始聚类中心。
(3)如果传递的是一个 ndarray,格式应该为(n_clusters,n_features)并给出初始的簇中心。
n init 默认为10,用不同种子运行k-均值算法的次数。
max iter:默认300,单次运行的k-均值算法的最大迭代次数。
训练之后 KMeans 对象有返回的属性
返回 KMeans 对象的属性包括:
cluster centers_:数组类型,各个簇中心的坐标。
Labels_:每个数据点的标签。
Inertia_:浮点型,数据样本到它们最接近的聚类中心的距离平方和。
n_iter_:运行的迭代次数
K-Means 模块的常用方法:
•fit(X,[Y])一参数为 X,也可以加入参数 Y,功能是进行 K-Means 聚类计算。
•predict(X)一参数为 X 功能是预测 X 中每个样本的所属(最近的)簇。
•fit_predict(X,[Y])一是一个综合函数,计算簇中心,并预测每个样本的所属簇。
In []:from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1.2],[1. 4], [1. 0],[4. 2],[4. 4],[4. 0]])
kmeans =KMeans(n_clusters-2, random_state=0).fit(X)
#显示类别标签
print(‘k labels are:’, kmeans.labels_)
#预测结果
print(‘predict results are:’,kmeans.predict([[0. 0]. [4. 4]])
#显示簇中心
print(’cluster ceaters are:‘, kmeans.cluster_centers_)
数据集中有六个数据点,依次为[1.2],[1. 4], [1. 0],[4. 2],[4. 4],[4. 0]。构建一个 K 均值聚类模型进行划分,并使用训练好的模型预测[0. 0]. [4. 4]两个数据点的类别,我们使用 sklearn.cluster 中 KMeans
进行 K 均值聚类。
第一行 from sklearn.cluster import KMeans
包含 KMeans 包。import numpy as np 创建一个 np.array 数组,六个数据样本。使用 KMeans 创建模型,其中n_clusters 也就是 K=2, random_state =0。
第二步,对这个对象进行 fit。X 为参数。接下来显示类别标签。接下来显示预测结果和簇中心。
可以看到K的标签分别是0,0,0,1,1。predict results 是0,1 cluster ceaters 是[1.2]和[4. 2]。从结果可以看出,模型将前三个样本划分为零类。后三个样本划分为一类。但预测的两个点分别属于零类和一类,聚类中心有两个,分别是[1.2和[4. 2]。与分类不同聚类算法不使用数据集中的标签。
因为数据集中没有标签。但可以通过预测结果的对比查看算法的预测效果。