聚类算法 K-Means 简介与入门

K-Means 算法是最简单的一种聚类算法,属于无监督学习算法。
聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来。

假设我们的样本是 {x^(1), x^(2), x^(3),……, x^(m) },每个 x^(i) ∈ R^n,即它是一个维向量。现在用户给定一个 k 值,要求将样本聚类成 k 个类簇。在这里,我们把整个算法成为聚类算法,聚类算法的结果是一系列的类簇。

步骤:
输入:样本集 D,簇的数目 k,最大迭代次数N;
输出:簇划分( k 个簇,使平方误差最小)
(1)为每个聚类选择一个初始聚类中心;
(2)将样本集按照最小距离原则分配到最邻近聚类;
(3)使用每个聚类的样本均值更新聚类中心;
(4)重复步骤(2)(3),直到聚类中心不再发生变化;
(5)输出最终的聚类中心和 k 个簇划分。

涉及距离的计算,最常用的距离是欧氏距离(Euclidean Distance),公式为:
在这里插入图片描述
此外,还有闵可夫斯基距离:

曼哈顿距离(也称为城市街区距离,City Block Distance):

在这里插入图片描述
优点:
(1) 算法简单,容易实现
(2) 算法速度很快
(3) 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(NKt),其中,N 为数据对象的数目,t 为迭代的次数。一般来说, K <<N ,t <<N。这个算法通常局部收敛。
(4) 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

缺点:
(1) K是事先给定的,一个合适的 K 值难以估计。
(2) 在 K-Means 算法中,首先需要根据初始类簇中心来确定一个初始划分,然后对初始划分进行优化。初始类簇中心的选择对聚类结果有较大的影响。一旦选择的不好,可能无法得到有效的聚类结果。可以使用遗传算法来选择合适的初始类簇中心。
(3) 算法需要不断地进行样本分类调整,不断计算调整后的新的类簇中心,因此当数据量非常大的时,算法的时间开销是非常大的。可以利用采样策略,改进算法效率。也就是初始点的选择,以及每一次迭代完成时对数据的调整,都是建立在随机采样的样本数据的基础之上,这样可以提高算法的收敛速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚焦五大领域:浙江大学发布《重大领域交叉前沿方向2021》报告

来源&#xff1a;浙江大学以智能化为特征的第四次工业革命已经全面开启&#xff0c;会聚技术的不断涌现&#xff0c;正引领各领域创新突破性跃迁。学科交叉是这场变革的核心驱动力&#xff0c;主要表现为信息、生命、物质三大学科板块间的深度融合&#xff0c;最终将推动人类生…

分类算法支持向量机(SVM) 简介与入门

在二维平面上&#xff0c;把两类数据分开需要一条直线。到了3微空间&#xff0c;要把两类数据分开&#xff0c;就需要一个平面。把上述分类机制扩展到基本情形&#xff0c;在高维空间里&#xff0c;把两类数据分开&#xff0c;则需要一个超平面。直线和平面是超平面在2维和3维空…

Java Socket NIO

服务端&#xff1a; public class NIOServer {private static final String HOST "localhost";private static final int PORT 10086;public static void main(String[] args) {ServerSocketChannel serverSocketChannel null;ServerSocket serverSocket null;Se…

主宰这个世界的10大算法

来源&#xff1a;算法与数学之美什么是算法&#xff1f;简而言之&#xff0c;任何定义明确的计算步骤都可称为算法&#xff0c;接受一个或一组值为输入&#xff0c;输出一个或一组值。(来源&#xff1a;homas H. Cormen, Chales E. Leiserson 《算法导论第3版》)可以这样理解&a…

关联规则分析 Apriori 算法 简介与入门

关联规则的几个概念&#xff1a; 关联规则是形如 X -> Y 的蕴含式&#xff0c;表示通过 X 可以推导出 Y&#xff0c;X称为关联规则的左部&#xff08;Left Hand Side&#xff0c;LHS&#xff09;&#xff0c;Y 称为关联规则的右部&#xff08;Right Hand Side&#xff0c;R…

OO第一单元总结__多项式求导问题

作业一、含幂函数的简单多项式的求导 &#xff08;1&#xff09;基于度量的程序结构分析 1. 统计信息图&#xff1a; 2. 结构信息图&#xff1a; 3. 复杂度分析 基本复杂度&#xff08;Essential Complexity (ev(G))、模块设计复杂度&#xff08;Module Design Complexity (iv(…

流式处理和批处理的区别

流式处理&#xff08;Stream Processing&#xff09; 是针对 批处理&#xff08;Batch Processing&#xff09;来讲的&#xff0c;即它们是两种截然不同的数据处理模式&#xff0c;具有不同的特点&#xff0c;适用于不同的应用场合。不能简单地认为其中一种数据处理模式优于另一…

Go语言中的`sync`包同步原语

通过sync包掌握Go语言的并发 并发是现代软件开发的基本方面&#xff0c;而Go&#xff08;也称为Golang&#xff09;为并发编程提供了一套强大的工具。在Go中用于管理并发的基本包之一是sync包。在本文中&#xff0c;我们将概述sync包&#xff0c;并深入探讨其最关键的同步原语…

linux 安装svn客户端

安装命令&#xff1a;yum install -y subversion 客户端使用命令&#xff1a; svn help 帮助命令 svn checkout --help 子帮助命令 转载于:https://www.cnblogs.com/wesky/p/10607649.html

AdaBoost 算法 入门

AdaBoost 是一种迭代算法&#xff0c;其核心思想是针对同一个训练集训练不同的分类器&#xff0c;即弱分类器&#xff0c;然后把这些弱分类器集合起来&#xff0c;构造一个更强的最终分类器。算法的适应性在于前一个基本分类器分错的样本会得到加强&#xff0c;加权后的全体样本…

流数据模型

流数据模型和传统的关系模型&#xff08;Relational Model&#xff09;有几个重要的区别&#xff1a; &#xff08;1&#xff09; 数据流的数据元素持续到达 &#xff08;2&#xff09; 流数据处理系统不能控制数据元素到达的顺序 &#xff08;3&#xff09; 数据流有可能是无限…

第一单元总结

一、作业分析 第一次作业 与后两次作业相比&#xff0c;第一次作业非常简单&#xff0c;仅要求对由常数项和幂函数组成的多项式求导。但由于缺少面向对象编程经验&#xff0c;我在这次作业中栽了不少跟头。 &#xff08;1&#xff09;度量分析 在第一次作业中&#xff0c;我还没…

牛客16437 买铅笔

题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物。她发现商店一共有 3 种包装的铅笔&#xff0c;不同包装内的铅笔数量有可能不同&#xff0c;价格也有可能不同。为了公平起见&#xff0c;P老师决定只买同一种包装的铅笔。 商店不允许将铅笔的包装拆开&#xff0…

牛客16426 玩具谜题

题目描述 南有一套可爱的玩具小人&#xff0c;它们各有不同的职业。 有一天&#xff0c;这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈&#xff0c;它们有的面朝圈内&#xff0c;有的面朝圈外&#xff0c;如下图&#xff1a; 这时 singer 告诉小南一个谜…

ubuntu 更新软件源

ubuntu 更新软件源 问题&#xff1a;正在等待packagekitd退出 解决办法&#xff1a;systemctl stop packagekit 或者 systemctl disable packagekit转载于:https://www.cnblogs.com/xpylovely/p/10611394.html

牛客16438 回文日期

date1 input() date2 input()""" 判断是否是闰年 """ def isLeap(year):if (year%4 0 and year%100 ! 0) or (year%400 0):return 1else:return 0""" 判断是否是回文数 """ def isPalindrome(year):for i in …

Codeforces 1139F Dish Shopping 树状数组套平衡树 || 平衡树

Dish Shopping 将每个物品拆成p 和 s 再加上人排序。 然后问题就变成了&#xff0c; 对于一个线段(L - R)&#xff0c; 问有多少个(li, ri)满足 L > li && R > ri&#xff0c; 这个东西可以直接树状数组套平衡树维护。 但是这个题目有个特殊性&#xff0c;因为排…

牛客16494 生活大爆炸版石头剪刀布

题目描述 石头剪刀布是常见的猜拳游戏&#xff1a;石头胜剪刀&#xff0c;剪刀胜布&#xff0c;布胜石头。如果两个人出拳一样&#xff0c;则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上&#xff0c;…

codeforces 1073E

题解&#xff1a; 考虑数位DP,状压出现过的数字集合S&#xff0c;f ( l , x , S , pz , lim )表示到第 l 位&#xff0c;数字为x&#xff0c; 数字集合为S &#xff0c;是否为前导0&#xff0c;是否贴上界 然后同时定义g为该状态下的数字和&#xff0c;利用 10^(l-1) * f(l , x…

时空AI技术:深度强化学习在智能城市领域应时空AI技术:深度强化学习在智能城市领域应用介绍...

来源&#xff1a;海豚数据科学实验室作者&#xff1a;京东科技 时空AI团队深度强化学习是近年来热起来的一项技术。深度强化学习的控制与决策流程必须包含状态&#xff0c;动作&#xff0c;奖励是三要素。在建模过程中&#xff0c;智能体根据环境的当前状态信息输出动作作用于环…