sklearn学习笔记4:聚类算法 K-Means

聚类算法在sklearn中有两种表现形式,一种是类(和学过的分类算法及数据预处理方法都一样),需要实例化,训练并使用接口和属性来调用结果。另一种是函数,只需要输入特征矩阵和超参数,即可返回聚类的结果和各种指标

需要注意的是,该模块中实现的算法可以采用不同类型的矩阵作为输入,所有方法都接受形状[n_samples,n_features]标准特征矩阵,这些可以从sklearn.feature_extraction模块中的类中获得

对于亲和力传播,光谱聚类和DBSCAN,还可以输入形状[n_samples,n_samples]的相似性矩阵,我们可以使用sklearn.metrics.pairwise模块中的函数来获取相似性矩阵

Kmeans有损失函数吗?

  • Kmeans不求解什么参数,它的模型本质也没有在拟合数据,而是在对数据进行一种探索,所以Kmeans不存在损失函数,Inertia更像是Kmeans的模型评估指标,而非损失函数
  • 对比来看,在决策树中,我们有衡量分类效果的指标准确度accuracy,准确度所对应的损失叫做泛化误差,但我们不能通过最小化泛化误差来求解某个模型中需要的信息,我们只是希望模型的效果上表现出来的泛化误差很小。因此,决策树,KNN等算法,是绝对没有损失函数的

在sklearn中,我们无法选择使用的距离,只能使用欧氏距离

和KNN一样,KMeans算法是一个计算成本很大的算法

在实践中,相比起其他聚类算法,Kmeans已经很快了,但它一般找到Inertia的局部最小值

sklearn.cluster.KMeans

1.重要参数n_clusters

  • 是Kmeans中的k,表示我们告诉模型要分几类,默认为8类,但通常我们的聚类结果会是一个小于8的结果
  • 通常在开始聚类之前,我们并不知道n_cluster究竟是多少,因此我们要对它进行探索

2.模型评估指标

当真实标签已知的时候

  • 互信息分:取值范围在(0,1)之中,越接近1,聚类效果越好,在随机均匀聚类下产生0分
  • V-measure:取值范围在(0,1)之中,越接近1,聚类效果越好,由于分为同质性和完整性两种度量,可以更仔细地研究,模型到底哪个任务做得不够好。对样本分布没有假设,在任何分布上都可以有不错的表现,在随机均匀聚类下不会产生0分
  • 调整兰德系数:取值在(-1,1)之间,负值象征着簇内的点差异巨大,甚至相互独立,正类的兰德系数比较优秀,越接近1越好。对样本分布没有假设,在任何分布上都可以有不错的表现,尤其在具有“折叠”形状的数据上表现优秀,在随机均匀聚类下产生0分

当真实标签未知的时候

  • 轮廓系数:取值在(-1,1),取值越接近1表示样本与自己所在的簇中的样本很相似,并且与其他簇中的样本不相似,当样本点与簇外的样本更相似的时候,轮廓系数就为负,当轮廓系数为0时,则代表两个簇中的样本相似度一致,两个簇本应该是一个簇。总结:轮廓系数越接近1越好,负数表示聚类效果非常差
  • 在sklearn中,我们使用模块metrics中的类silhouette_score来计算轮廓系数,它返回的是一个数据集中,所有样本的轮廓系数的均值。还有同在metrics模块中的silhouette_sample,它的参数和轮廓系数一致,但返回的是数据集中每个样本自己的轮廓系数
  • 轮廓系数的缺点:在凸形的类上会表现虚高,比如基于密度进行的聚类,或通过DBSCAN获得的聚类结果,如果使用轮廓系数来衡量,则会表现出比真实聚类效果更高的分数
  • Calinski-Harabaz Index:越高越好,计算速度快,在凸形数据上也会表现虚高

init & random_state & n_init:初始质心怎么放好?

  • init:可输入“k-means++”,“random”或者一个n维数组,如果输入了n维数组,数组的形状应该是(n_clusters,n_features)并给出初始质心
  • random_state:控制每次质心随机初始化的随机数种子
  • n_init:整数,默认10,使用不同的质心随机初始化的种子来运行k-means算法的次数。最终结果会是基于Inertia来计算的n_init次连续运行后的最佳输出

max_iter & tol:让迭代停下来

  • max_iter:整数,默认300,单次运行的k-means算法的最大迭代次数
  • tol:浮点数,默认1e-4,两次迭代间Inertia下降的量,如果两次迭代之间Inertia下降的值小于tol所设定的值,迭代就会停下

函数cluster.k_means

  • 用法和类非常相似,不过函数是输入一系列值,而直接返回结果
  • 一次性地,函数k_means会依次返回质心,每个样本对应的簇的标签,inertia以及最佳迭代次数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值