首页 > 其他分享 >k-means学习笔记

k-means学习笔记

时间:2023-02-10 09:47:15浏览次数:65  
标签:中心 means 样本 距离 平方和 学习 算法 笔记

算法思想

k-means算法是一种聚类分析算法,通过不断地迭代求解实现对样本的分类,其中k代表的是样本的类别数。k-means对样本按相似性进行分簇,其基本思想是让簇内的样本点更“紧密”一些,也就是说,让每个样本点到本簇中心的距离更近一些。

算法步骤

  • 随机产生k个初始簇中心(或者随机选择k个点作为初始簇中心);
  • 对每个点,计算与所有簇中心的距离,将其分配到最近的簇;
  • 如果没有点发生分配结果的改变,则结束,否则继续下一步;
  • 计算每个簇中所有点坐标的平均值,找到新的簇中心;
  • 回到第二步。

注意

  • 常用欧式距离作为距离的度量,在计算距离前可以先进行标准化操作。
  • 算法的优化目标是使每个样本点到本簇中心的距离的平方和尽量小。
  • 每个样本点到本簇中心的距离的平方和也称为误差平方和(SSE),在优化算法中称为损失函数或代价函数。

算法优缺点

优势

  • 简单,快速,适合常规数据集。

劣势

  • 不同的初始点对结果的影响非常大;

  • k值难确定,普遍情况下需要多次设置k值来比较;

  • 复杂与样本数呈线性关系;

  • 很难发现任意形状的簇。

算法可视化演示

k-means的可视化演示

标签:中心,means,样本,距离,平方和,学习,算法,笔记
From: https://www.cnblogs.com/engpj/p/17107828.html

相关文章

  • C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
    原文网址:https://blog.csdn.net/byxdaz/article/details/6737637Trace、Debug和TraceSource的使用以及日志设计 .NETFramework命名空间System.Diagnostics包含用于......
  • SpringCloudAlibaba史上最全电子书(阿里云学习中心整理)
    《Spring Cloud Alibaba》2020本电子书内容来源于每特教育在阿里云学习中心上架课程《精通SpringCloudAlibaba》,主讲人:余胜军,由开发者社区志愿者黄良诗、李美儒进行整......
  • 搜索学习笔记
    搜索,也就是对状态空间进行枚举,通过穷尽所有的可能来找到最优解,或者统计合法解的个数。——oiwiki1.DFS深度优先搜索实现:递归(栈)特点:不找到一个答案不回头用途:可行性......
  • 学习笔记——redis持久化之RDB、AOF
    2023-02-10一、redis提供了2个不同形式的持久化方式1、RDB(RedisDataBase)2、AOF(AppendOfFile)二、RDB的定义RDB是在指定的时间间隔内将内存中的数据集快照写入磁盘,即......
  • docker管理基础笔记
    CMD指令     Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被dockerrun之后的参数替换掉      ENTRYPOINT指令     有别于CMD......
  • PLC入门笔记3
    熟悉开发环境工具下载官网失效软件安装官网失效第一次PLC之旅走廊灯两地控制案例PLC型号确定梯形图(LAD)和指令表(STL)两种编程方式程序编辑符号变量类型数据类型......
  • Splay学习笔记
    Splay学习笔记说在前面:本文多参考这篇优秀博文,讲的十分详细,以下是我个人对Splay的理解。一、普通Splay例题传送门(一)前置知识:前驱:当前序列中小于目标数字的数的最......
  • 读Java实战(第二版)笔记06_新的日期和时间API
    1. Java8之前的库对日期和时间的支持非常不理想2. TemporalField接口2.1. 定义了如何访问temporal对象某个字段的值的接口2.2. ChronoField枚举2.2.1. 实现Temp......
  • 第二十二天python3 classmethod、staticmethod、property装饰器学习笔记
    classmethod1、在类定义中,使用@classmethod装饰器修饰的方法;2、必须至少有一个参数,且第一个参数留给了cls,cls指代调用者即类对象自身;3、cls这个标识符可以是任意合法名......
  • 深度学习笔记——线性回归
    #导入相关包importtensorflowastfimportnumpyasnpimportpandasaspdimportmatplotlib.pyplotasplt%matplotlibinline#读取数据data=pd.read_csv('......