聚类算法在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以及最佳迭代次数

sklearn学习笔记4:聚类算法 K-Means相关推荐

  1. (学习笔记)聚类算法 - k均值算法(k-means)

    聚类之K均值算法 聚类介绍 k均值算法步骤 Python实现 参考文献 聚类介绍 聚类是一种经典的无监督学习方法. 聚类的目的是将数据集中的样本划分为若干个通常是不相交的子集,每个子集被称为簇,以此来 ...

  2. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  3. (sklearn学习笔记)降维算法PCA与SVD的原理及用法

    听了菜菜讲的机器学习PCA及SVD所写 什么是维度? 什么是"降维"? 为什么要"降维"? PCA基本原理 sklearn中用于降维的类PCA 参数解释 n_c ...

  4. 聚类算法-K均值(K-means)

    摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在处理海量 ...

  5. 《基于张量网络的机器学习入门》学习笔记8(Shor算法)

    <基于张量网络的机器学习入门>学习笔记8 Shor算法 来源 Shor算法的大致流程 因数分解 周期求取与量子傅里叶变换(QFT) Shor算法 来源 1994 1994 1994年,应用 ...

  6. SKlearn学习笔记——XGBoost

    SKlearn学习笔记--XGBoost 1. 概述 1.1 xgboost库与XGB的sklearn API 1.2 XGBoost的三大板块 2. 梯度提升树 2.1 提升集成算法:重要参数 n_ ...

  7. R语言与机器学习学习笔记(分类算法)

    转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...

  8. 【学习笔记】【算法】【智能优化】粒子群优化(PSO)

    [学习笔记][算法][智能优化]粒子群优化(PSO) 文章目录 [学习笔记][算法][智能优化]粒子群优化(PSO) 1 算法背景 1.1 背景 1.2 基础知识 2 算法原理 2.1 基本原理 2. ...

  9. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

  10. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

最新文章

  1. Thread Dump 和Java应用诊断(转)
  2. 【PAT乙级】1052 卖个萌 (20 分)
  3. WPF特效-拼图游戏
  4. java 内省学习笔记
  5. python 课后作业_python 学习笔记 五 课后作业
  6. Java各种日期计算
  7. mysql三张表关联查询成绩表_mysql三张表关联查询
  8. Joomla,wordpress,Drupal,DedeCms开源程序比较
  9. 1.4.4 Mother's Mil 母亲的牛奶(DFS)
  10. 多元函数的牛顿迭代法
  11. windows配置pip加速器
  12. sas不能安装独立的java_SAS安装问题解决办法
  13. Windows下Java环境配置
  14. JAVA 使用DateUtils对日期进行格式转换
  15. Java输出水仙花数
  16. HTMLCSS 高级表格 合并单元格
  17. 读书笔记-精准努力-励志本身就已经让你爽了以为自己真这样做了
  18. python学习笔记之pdf文档提取
  19. 大数据面试必问点与模拟笔试题
  20. 机器学习char1 机器学习基础

热门文章

  1. c++常量和常量表达式
  2. Meta Talk: Learning To Data-Efficiently Generate Audio-Driven Lip-Synchronized Talking 论文解读
  3. ESET NOD32 免费一年 激活码获取教程
  4. 【Visual Studio】使用 pexports 根据 VS 的 .dll 动态链接库生成 .lib 库文件
  5. windows CMD 命令总结
  6. python 进程池使用
  7. 玫琳凯跻身Purpose Power Index™顶级品牌之列
  8. java设置job时间每分钟_Spring设置定时任务时,关于执行时间的规则设置
  9. iosiPhone屏幕尺寸、分辨率及适配
  10. 优秀操盘手:一个品行端方的群体