k-means算法

无监督机器学习 K-Means算法python测试

微笑、不失礼 提交于 2019-12-28 18:54:34
无监督机器学习 K-Means算法python测试 最近在自学吴恩达老师的机器学习视频,学到无监督机器学习K-means算法,自己用python写一些代码加深对此算法的理解 最近在自学吴恩达老师的机器学习视频,学到无监督机器学习K-means算法,自己用python写一些代码加深对此算法的理解 import numpy as np import matplotlib . pyplot as plt #生成随机的的点坐标 array = np . random . randn ( 2 , 100 ) x = array [ 0 ] y = array [ 1 ] #初始化3个聚类质点 3类 x0 = np . random . randn ( ) y0 = np . random . randn ( ) x1 = np . random . randn ( ) y1 = np . random . randn ( ) x2 = np . random . randn ( ) y2 = np . random . randn ( ) while True : #用于存放每次标记后的点坐标 class0x = [ ] class0y = [ ] class1x = [ ] class1y = [ ] class2x = [ ] class2y = [ ] #用于记录3个聚类质点的数据

K-Means

我是研究僧i 提交于 2019-12-28 16:13:20
本篇随笔是数据科学家学习第八周的内容,主要参考资料为: K-Means: https://www.jianshu.com/p/caef1926adf7 深入理解K-Means聚类算法: https://blog.csdn.net/taoyanqi8932/article/details/53727841 极客时间数据分析 - 聚类学习 用scikit-learn学习K-Means聚类 https://www.cnblogs.com/pinard/p/6169370.html 聚类   聚类试图将数据集中的样本划分为若干个通常是不相交的子集,每个子集成为一个“簇”。通过这样的划分,每个簇可能对应于一些潜在的概念(也就是类别),如“浅色瓜” “深色瓜”,“有籽瓜” “无籽瓜”,甚至“本地瓜” “外地瓜”等;需说明的是,这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇对应的概念语义由使用者来把握和命名。   簇内的样本相关性越大,簇间相关性越小,则聚类效果越好。 K-Means的原理和公式   对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。   对于距离大小的计算,有:   给定样本集D,K-Means算法针对聚类所得簇划分C最小化平方误差。 最小化上面的公式并不容易

机器学习第八周-K-means聚类

不问归期 提交于 2019-12-26 12:08:23
学习内容:模型原理、收敛过程、代码实现 一、模型原理 聚类的概念 聚类试图将数据集中的样本划分为若干个通常是不想交的子集,每个子集成为簇。通过这样的划分,每个簇可能对应一些潜在的概念(也就是类别),如浅色瓜,深色瓜,有籽瓜,甚至本地瓜,外地瓜;需要说明的事,这些概念对聚类算法而言事先是未知的,聚类过程仅能自动形成簇结构,簇对应的概念语义由使用者来把握和命名 聚类和分类的区别 聚类是无监督的学习算法,分类是有监督的学习算法。所谓有监督就是有已知标签的训练集(也就是说提前知道训练集里的数据属于哪个类别),机器学习算法在训练集上学习到相应的参数,构建模型,然后应用到测试集上。而聚类算法没有标签,聚类的时候,只是把需要实现的目标相似的东西聚到了一起 性能度量 聚类的目的是把相似的样本聚到一起,而将不相似的样本分开,类似物以类聚,很直观的想法是同一个簇中的相似度要尽可能高,而簇与簇之间的相似度要尽可能的低。性能度量大概可以分为两类:一是外部指标,二是内部指标 外部指标:将聚类结果和某个参考模型进行比较 内部指标:不利用任何参考模型,直接考察聚类结果 不同的簇类型 明显分离的簇、基于中心的簇、基于邻近的簇、基于密度的簇、概念簇 基本聚类分析算法 K均值:基于原型的。划分的距离技术,它试图发现用户指定个数K的簇 凝聚的层次距离:思想是开始时,每个点都作为单点簇,然后,重复合并两个最靠近的簇

ML刻意练习第六周之K-means

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-20 16:52:42
k-means算法是无监督学习方法的经典算法之一,也是最简单的一个。 其中我们需要选择一种距离度量来表示数据点之间的距离,本文中我们使用的是欧式距离。 一、k均值聚类算法 1.支持函数 import numpy as np def loadDataSet ( fileName ) : """ 函数说明:加载数据 Parameters: fileName - 文件名 Returns: dataMat - 数据矩阵 """ dataMat = [ ] fr = open ( fileName ) for line in fr . readlines ( ) : curLine = line . strip ( ) . split ( '\t' ) fltLine = list ( map ( float , curLine ) ) # 转化为float类型 dataMat . append ( fltLine ) return np . array ( dataMat ) def distEclud ( vecA , vecB ) : """ 函数说明:欧拉距离 parameters: vecA,vecB:两个数据点的特征向量 returns: 欧式距离 """ return np . sqrt ( np . sum ( np . power ( vecA - vecB , 2 ) )

KMeans相关问题

爷,独闯天下 提交于 2019-12-15 14:42:50
文章目录 K-means k-means 聚类的原理 K-Means的优缺点及对应的改进 用 EM 算法推导解释 Kmeans KMeans的算法伪代码 KMeans算法的收敛 Kmeans 算法 K 怎么设置、适用什么样数据集 EM算法 tensorflow实现KMeans K-means k-means 聚类的原理 对于给定的样本集,按照样本之间的距离大小,将样本集划分成K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。 目标是最小化平方误差。定义样本与其所属类的中心之间的距离的总和最小 E = ∑ l = 1 K ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 E = \sum_{l = 1}^K \sum_{x \in C_i} ||x - \mu_i||^2 E = l = 1 ∑ K ​ x ∈ C i ​ ∑ ​ ∣ ∣ x − μ i ​ ∣ ∣ 2 其中 μ i \mu_i μ i ​ 是簇 C i C_i C i ​ 的均值或者中心,有时也称质心,表达式为: μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i=\frac{1}{|C_i|}\sum_{x \in C_i}x μ i ​ = ∣ C i ​ ∣ 1 ​ ∑ x ∈ C i ​ ​ x K-Means的优缺点及对应的改进 优点: 1) 原理比较简单,实现比较容易

K-Means 初始质心的选择

筅森魡賤 提交于 2019-12-11 16:01:47
1.随机选择 选择初始质心,我们可以用最基本的随机方法,但是这种方法会导致一个局部最优解问题。即,将一个比较大的簇分裂,同时将两个较小的簇进行合并。 由于K-Means算法具有不稳定性,初始质心选择不同,结果也不同。所以解决局部最优的方法,其一可以多次运行算法,选择具有最小SSE值的那组作为最终解。这种方法通过多次运行,通过尝试,来解决随机选择初始质心问题。 不过可以通过以下其他方法来寻找比较好的初始质心。 2.层次聚类 通过层次聚类,划分k个层次,计算出每个簇对应的质心作为K-Means算法的初始质心。这种方法可以很好地解决初始质心指派不合理的问题。但是也有局限性。 3.K-Means++ K-Means++算法是基本算法的改进版,其区别就在于初始质心的选择。 该算法第一个质心是随机选择的,接下来的质心基于样本点与最近质心的距离,距离越大越可能被选为下一个质心,直到选择完k个质心。 该方法有效地解决了关于初始质心的选取问题,目前已经成为了一种硬聚类算法的标准。但是该方法无法解决离群点问题。 4.基于最近邻密度 该方法通过检测样本点的样本密度和与之前质心的分散度来决定下一个质心。 链接:https://www.jianshu.com/p/4f8c097e26a8 来源: https://www.cnblogs.com/yoyowin/p/12022776.html

聚类-K-Means

时光怂恿深爱的人放手 提交于 2019-12-06 11:40:47
1.什么是K-Means? K均值算法聚类 关键词:K个种子,均值 聚类的概念:一种无监督的学习,事先不知道类别,自动将相似的对象归到同一个簇中 K-Means算法是一种聚类分析(cluster analysis)的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. K-Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大. 2.k-Means原理 每次计算距离采用的是欧式距离 步骤图: 步骤总结: 从数据中选择k个对象作为初始聚类中心; 计算每个聚类对象到聚类中心的距离来划分; 再次计算每个聚类中心 2~3步for循环,直到达到最大迭代次数,则停止,否则,继续操作。 确定最优的聚类中心 主要优点: 原理比较简单,实现也是很容易,收敛速度快。 聚类效果较优。 算法的可解释度比较强。 主要需要调参的参数仅仅是簇数k。 主要缺点: K是事先给定的,这个K值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。(ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目K) K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。(K-Means++算法可以用来解决这个问题

11 K-Means 原理及案例

核能气质少年 提交于 2019-12-06 11:05:13
11 K-Means 原理及案例 非监督学习 unsupervised learning (非监督学习) ,只有特征值,没有目标值 聚类: 主要方法 - k-means (K - 需要分成的类别数) K-Means步骤 随机设置K个特征空间内的点作为初始的聚类中心 (红,绿,蓝) k=3 (给定) 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类 中心点作为标记类别,形成3个族群 分别计算这3个族群的平均值,把三个平均值与之前的三个旧中心进行比较。如果相同则结束聚类,如果不相同,把这三个平均点当做新的中心点,重复第二步。 Kmeans性能评估指标 注:对于每个点𝑖 为已聚类数据中的样本 ,𝑏_𝑖 为𝑖 到其它族群的所有样本的平均距离,𝑎_𝑖 为𝑖 到本身簇的距离平均值,最终计算出所有的样本点的轮廓系数平均值。 sc_i 取值 当b_i >>a_i 时, 外部距离远大于内部距离,为1, 完美情况。 当b_i <<a_i 时,内部距离远大于外部距离,为-1, 最差情况。 因此 取值范围为[-1,1] ,实际情况中超过0,或者0.1就已经算是不错的情况。 K-Means API sklearn.cluster.KMeans n_cluster=8 (开始的聚类中心数量) labels: 默认的标记类型(不是值),可以和真实值比较。 sklearn.metrics

数据挖掘--K-means

北城余情 提交于 2019-12-06 08:28:24
K-Means方法是MacQueen1967年提出的。给定一个数据集合X和一个整数K(n),K-Means方法是将X分成K个聚类并使得在每个聚类中所有值与该聚类中心距离的总和最小。 K-Means聚类方法分为以下几步: [1] 给K个cluster选择最初的中心点,称为K个Means。 [2] 计算每个对象和每个中心点之间的距离。 [3] 把每个对象分配给距它最近的中心点做属的cluster。 [4] 重新计算每个cluster的中心点。 [5] 重复2,3,4步,直到算法收敛。 以下几张图动态展示了这几个步骤: 下面,我们以一个具体的例子来说明一下K-means算法的实现。 K-means算法的优缺点: 优点: (1)对于处理大数据量具有可扩充性和高效率。算法的复杂度是O(tkn),其中n是对象的个数,k是cluster的个数,t是循环的次数,通常k,t<<n。 (2)可以实现局部最优化,如果要找全局最优,可以用退火算法或者遗传算法 缺点: (1)Cluster的个数必须事先确定,在有些应用中,事先并不知道cluster的个数。 (2)K个中心点必须事先预定,而对于有些字符属性,很难确定中心点。 (3)不能处理噪音数据。 (4)不能处理有些分布的数据(例如凹形) K-Means方法的变种 (1) K-Modes :处理分类属性 (2) K-Prototypes

机器学习 - 算法 - 聚类 K-MEANS 算法

坚强是说给别人听的谎言 提交于 2019-12-05 13:36:20
聚类算法 概述 无监督问题   手中无标签 聚类   将相似的东西分到一组 难点   如何 评估 , 如何 调参 基本概念 要得到的簇的个数   - 需要指定 K 值 质心    - 均值, 即向量各维度取平均 距离的度量   - 常用 欧几里得距离 和 余弦线相似度 ( 先标准化 ) 优化目标   - 需求每个簇中的点, 到质心的距离尽可能的加和最小, 从而得到最优 K - MEANS 算法 工作流程 - (a)    初始图 - (b)    在指定了 K 值之后, 会在图中初始化两个点 红点, 蓝点( 随机质心 ) 这里 K 指定为 2 - (c)    然后对图中的每一个点计算是分别到红点以及蓝点的距离, 谁短就算谁的 - (d)    重新将红色蓝色区域计算质心 - (e)    根据重新计算的质心, 再次遍历所有点计算到两个新质点的距离对比划分 - (f)   按照之前的套路再次更新质点 就这样不断的更新下去, 直到所有的样本点都不再发生变化的时候则表示划分成功 优势 简单快速, 适合常规数据集 劣势 K 值难以决定 复杂度与样本呈线性关系 很难发现任意形状的簇 , 如下图 来源: https://www.cnblogs.com/shijieli/p/11925823.html