机器学习--聚类系列--K-means算法
一、聚类
聚类分析是非监督学习的很重要的领域。所谓非监督学习,就是数据是没有类别标记的,算法要从对原始数据的探索中提取出一定的规律。而聚类分析就是试图将数据集中的样本划分为若干个不相交的子集,每个子集称为一个“簇”。它的难点是不好调参和评估。下面是sklearn中对各种聚类算法的比较。
  
二、K-Means算法
KMeans算法在给定一个数k之后,能够将数据集分成k个“簇”={C1,C2,⋯,Ck}C={C1,C2,⋯,Ck},不论这种分类是否合理,或者是否有意义。算法需要最小化平方误差:
                  
其中μi是簇Ci的均值向量,或者说是质心。其中‖x−μi‖^2代表每个样本点到均值点的距离(其实也是范数)。这里就稍微提一下距离度量。
  所以要得到簇的个数,需要指定K值
  质心:均值,即向量各维取平均即可
  距离的度量:常用欧几里得距离和余弦相似度(先标准化)
  优化目标:
      
工作流程:
根据给定的K值,随便取K个点作为K个簇的质心,比如K=2,然后计算各个点到两个质心的距离,离哪个近则划入那一边,然后重新调整质心位置,再分簇,直至质心不再变动为止。
  
  优势:简单,快速,适合常规数据集
  劣势:
- K值难确定,根本不知道有几个类
 - 初值设置对结果影响很大,所以要多次取初值。有时候设置初始点,并不能正确分类。
 - 复杂度与样本呈线性关系,样本越多计算越多
 - 很难发现任意形状的簇,比如环状的,单计算到质心距离很难分类。
 
        
机器学习--聚类系列--K-means算法的更多相关文章
- 机器学习03:K近邻算法
		
本文来自同步博客. P.S. 不知道怎么显示数学公式以及排版文章.所以如果觉得文章下面格式乱的话请自行跳转到上述链接.后续我将不再对数学公式进行截图,毕竟行内公式截图的话排版会很乱.看原博客地址会有更 ...
 - 机器学习 Python实践-K近邻算法
		
机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...
 - 02机器学习实战之K近邻算法
		
第2章 k-近邻算法 KNN 概述 k-近邻(kNN, k-NearestNeighbor)算法是一种基本分类与回归方法,我们这里只讨论分类问题中的 k-近邻算法. 一句话总结:近朱者赤近墨者黑! k ...
 - 机器学习实战笔记--k近邻算法
		
#encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...
 - 机器学习随笔01 - k近邻算法
		
算法名称: k近邻算法 (kNN: k-Nearest Neighbor) 问题提出: 根据已有对象的归类数据,给新对象(事物)归类. 核心思想: 将对象分解为特征,因为对象的特征决定了事对象的分类. ...
 - 机器学习--聚类系列--DBSCAN算法
		
DBSCAN算法 基本概念:(Density-Based Spatial Clustering of Applications with Noise) 核心对象:若某个点的密度达到算法设定的阈值则其为 ...
 - 软件——机器学习与Python,聚类,K——means
		
K-means是一种聚类算法: 这里运用k-means进行31个城市的分类 城市的数据保存在city.txt文件中,内容如下: BJ,2959.19,730.79,749.41,513.34,467. ...
 - KNN 与 K - Means 算法比较
		
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
 - 《机器学习实战》-k近邻算法
		
目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...
 
随机推荐
- Hdu1401 Solitaire                                                                                            2017-01-18 17:21             33人阅读              评论(0)              收藏
			
Solitaire Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
 - hdu 5015 233矩阵快速幂
			
http://acm.hdu.edu.cn/showproblem.php?pid=5015 需要构造一个 n+2 维的矩阵. 就是要增加一维去维护2333这样的序列. 可以发现 2333 = 233 ...
 - sine
			
 - [Zend Mail]发送中文名附件出现乱码解决方案
			
Zend Framework 1.0.* “=?UTF-8?B?”.base64_encode($title).“?=” 发送中文名附件,结果如图: 英文名附件,结果截图: 解决办法就是将中文文件名拼 ...
 - mysql免安装版 安装配置 (转)
			
1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的MySQL压缩包解压到自定义目录下,我的解压目录是: "D:\Pr ...
 - CUDA开发 - CUDA 版本
			
"CUDA runtime is insufficient with CUDA driver"CUDA 9.2: 396.xx CUDA 9.1: 387.xx CUDA 9.0: ...
 - 在Sublime中集成Team Foundation Server (TFS),实现版本管理
			
Sublime是一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,由于它开发的技术架构.丰富的插件,和轻盈而快速的编程响应,Sublime广受程序员的爱好.在C, C++, Javascri ...
 - [C#]C#时间日期操作
			
一.C# 日期格式 1. DateTime dt = DateTime.Now; 2. dt.ToString();//2005-11-5 13:21:25 3. dt.ToFileTime().To ...
 - update from用法
			
from:https://www.cnblogs.com/zerocc/archive/2011/11/01/2231841.html update 表名 SET 更新字段 FROM 更新表名(多个 ...
 - C#多线程编程系列(五)- 使用任务并行库
			
目录 1.1 简介 1.2 创建任务 1.3 使用任务执行基本的操作 1.4 组合任务 1.5 将APM模式转换为任务 1.6 将EAP模式转换为任务 1.7 实现取消选项 1.8 处理任务中的异常 ...