上一回,我们简单了解了scikit-learn,这里我们尝试第一个例子,简单使用下K-means
K-means
聚类算法是一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。
K-means是一种无监督学习算法,是聚类算法中最简单的一种。
基本K-Means算法的思想很简单,事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。
实例
在matplotlib手册(11) - 散点图中,我们学会绘制散点图,这里我们就对数据集进行聚类
# -*- coding: utf-8 -*-
"""
Created on Tue Jun 12 17:25:20 2018
@author: guiyang.yu
"""
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
#初始化数据集
data=np.random.rand(1000,2)
#指定簇的个数,即分成几类
km=KMeans(n_clusters=3).fit(data)
#标签结果
rs_labels=km.labels_
#每个类别的中心点
rs_center_ids=km.cluster_centers_
#描绘各个点
plt.scatter(data[:,0],data[:,1],c=rs_labels,alpha=0.5)
#描绘质心
plt.scatter(rs_center_ids[:,0],rs_center_ids[:,1],c='red')
plt.show()
这里我们随机生成了1000组数据,聚类为3类,并用颜色来划分为3组,
红点是最后的质心
好了,上面我们就通过简单的调用,练习了简单的聚类使用,KMeans还有很多的参数可以调,我们以后在实际的数据集中再练习。