sklearn聚类之—KMeans
sklearn聚类之—KMeans
未标记的数据的Clustering(聚类),可以是使用模块sklearn.cluster来实现
每个clustering algorithm(聚类算法)有两个变体:一个是class,他实现了fit的方法来学习训练数据的cluster,还有一个函数,是给定训练数据,返回与不同的cluster对应的证书标签数据,对于class,training data 上的标签可以在labels_属性中找到。
输入数据
需要注意的一点是,该模块中实现的算法可以采用不同种类的 matrix (矩阵)作为输入。所有这些都接受 shape [n_samples, n_features]
的标准数据矩阵。 这些可以从以下的 sklearn.feature_extraction
模块的 classes (类)中获得。对于 AffinityPropagation
, SpectralClustering
和 DBSCAN
也可以输入 shape [n_samples, n_samples]
的相似矩阵。这些可以从 sklearn.metrics.pairwise
模块中的函数获得。
1.理论
kMeans算法通过试图分离n个相同方差组样本来聚集数据,minimizing(最小化)称为inertia或者within-cluster-sum-of-squares(簇内平方和)的criterion(标准)。该算法需要制定number of clusters(簇的数量),他可以很好的扩展到大量样本并且已经被广泛引用于很多不同的领用的应用领域。
该算法是将一组N样本X划分成K不相交的簇C,每个都用cluster中的样本的均值描述,这个means(均值)通常被称为cluster(簇)的质心(centroids),注意,它们一般不是从X中挑选出来的点,虽然他们是出于同一个空间(算法初始化点的时候是在同一个范围内的随机取K个点)。kmeans算法旨在选择最小化inertia或者簇内平方和的标准的质心
Inertia(惯性), 或 the within-cluster sum of squares(簇内和平方差) criterion(标准),可以被认为是 internally coherent clusters (内部相干聚类)的 measure (度量)。 它有各种缺点:
- 对细长的簇或者不规则形状的分类不佳
- 在高维度空间中会出现膨胀。需要降为来减轻该问题(计算距离是通过欧几里得来计算的)
K-means 通常被称为 Lloyd’s algorithm(劳埃德算法)。在基本术语中,算法有三个步骤。、 第一步是选择 initial centroids (初始质心),最基本的方法是从 数据集中选择
个样本。初始化完成后,K-means 由两个其他步骤之间的循环组成。 第一步将每个样本分配到其 nearest centroid (最近的质心)。第二步通过取分配给每个先前质心的所有样本的平均值来创建新的质心。计算旧的和新的质心之间的差异,并且算法重复这些最后的两个步骤,直到该值小于阈值。换句话说,算法重复这个步骤,直到质心不再显著移动。
给定足够的时间,K-means 将总是收敛的,但这可能是 local minimum (局部最小)的。这很大程度上取决于 initialization of the centroids (质心的初始化)。 因此,通常会进行几次 different initializations of the centroids (初始化不同质心)的计算。帮助解决这个问题的一种方法是 k-means++ 初始化方案,它已经在 scikit-learn 中实现(使用 init='k-means++'
参数)。 这将初始化 centroids (质心)(通常)彼此远离,导致比随机初始化更好的结果。
2.用法
sklearn.cluster
.KMeans
参数 | 描述 | |
参数 | n_clusters : int, optional, default: 8 | 要形成的簇的数目以及要生成的质心的数目。 |
init : {‘k-means++’, ‘random’ or an ndarray} |
‘k-means++’:选择初始聚类中心的K-均值聚类的智能方式,以加快收敛。 random:从初始质心数据中随机选择K个观测值(行)。 ndarray:它应该是形状(n-簇,n-特征)并给出初始中心。 |
|
n_init : int, default: 10 | 用不同质心种子运行k-均值算法的次数。最后的结果将是连续运行在惯性方面的最佳输出。 | |
max_iter : int, default: 300 | 最大迭代次数 | |
tol : float, default: 1e-4 | 限制平方误差的来防止局部最优化 | |
precompute_distances : {‘auto’, True, False} |
‘auto’ : 如果n*样本*n群集>1200万,则不预先计算距离。这对应于使用双精度的每个作业大约100MB的开销。 True :总是预先计算距离 False:从来不预先计算距离 |
|
verbose : int, default 0 | 冗长模式 | |
random_state : int, RandomState instance or None, optional, default: None | 如果是int,是随机数生成器使用的种子;如果RandomState实例,._state是随机数生成器;如果None,则随机数生成器是np.random使用的RandomState实例。 | |
copy_x : boolean, default True | 是否复制训练集 | |
n_jobs : int | 并行的数量 | |
algorithm : “auto”, “full” or “elkan”, default=”auto” | k-均值算法使用。经典的EM风格算法是“满”的。使用三角不等式,“ELKAN”变异更有效,但目前不支持稀疏数据。“自动”为密集数据选择“ELKAN”,为稀疏数据选择“满”。 | |
cluster_centers_ : array, [n_clusters, n_features] | 质心 | |
labels_ : : | 分类点标签 | |
inertia_ : float | 样本距离与它们最接近的聚类中心的距离之和。 |
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)
kmeans.labels_kmeans.predict([[0, 0], [4, 4]])kmeans.cluster_centers_
常用方法
fit (X[, y])
|
Compute k-means clustering. |
fit_predict (X[, y])
|
Compute cluster centers and predict cluster index for each sample. |
fit_transform (X[, y])
|
Compute clustering and transform X to cluster-distance space. |
get_params ([deep])
|
Get parameters for this estimator. |
predict (X)
|
Predict the closest cluster each sample in X belongs to. |
score (X[, y])
|
Opposite of the value of X on the K-means objective. |
set_params (**params)
|
Set the parameters of this estimator. |
transform (X)
|
Transform X to a cluster-distance space. |
sklearn聚类之—KMeans相关推荐
- sklearn学习 6.聚类算法K-Means
一.概述 1.无监督学习与聚类算法 学习了决策树,随机森林,PCA和逻辑回归,他们虽然有着不同的功能,但却都属于"有监 督学习"的一部分,即是说,模型在训练的时候,即需要特征矩阵X ...
- 《菜菜的机器学习sklearn课堂》聚类算法Kmeans
聚类算法 聚类算法 无监督学习与聚类算法 sklearn中的聚类算法 KMeans KMeans是如何工作的 簇内误差平方和的定义和解惑 sklearn.cluster.KMeans 重要参数 n_c ...
- sklearn专题六:聚类算法K-Means
目录 1 概述 1.1 无监督学习与聚类算法 1.2 sklearn中的聚类算法 2 KMeans 2.1 KMeans是如何工作的 2.2 簇内误差平方和的定义和解惑 2.3 KMeans算法的时间 ...
- sklearn入门——聚类算法KMeans
概述 聚类算法是无监督学习的代表算法之一,也叫"无监督分类".目的是将数据分为若干有意义或有用的组,通常根据实际需求来进行划分.聚类可以用于降维和矢量量化(vectorquanti ...
- 【sklearn练习】KMeans ---- Seeds(小麦种子)数据集聚类评估
文章目录 一.数据集探索 二.数据预处理 三.构建模型获取结果 四.聚类结果可视化 五.聚类模型评估 ① 轮廓系数 ② 卡林斯基 - 哈拉巴斯指数 ③ FMI评价法 一.数据集探索 Seeds 数据集 ...
- sklearn中的聚类算法K-Means
1 概述 1.1 无监督学习与聚类算法 决策树.随机森林.逻辑回归虽然有着不同的功能,但却都属于"有监督学习"的一部分,即是说,模型在训练的时候,既需要特征矩阵XXX,也需要真实标 ...
- sklearn聚类算法之Kmeans
基本思想 K-Means聚类是最常见的一种聚类算法.在K-Means聚类中,算法试图把观察值分到k个组中,每个组的方差都差不多.分组的数量k是用户设置的一个超参数.具体来讲,K-Means算有如下几个 ...
- K均值聚类(KMeans)、可视化选取最佳K值、通过TSNE进行结果可视化分析、抽取核心特征因子
K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标. k ...
- 【聚类算法】sklearn聚类方法详解
转自:https://blog.csdn.net/ustbbsy/article/details/80960652 感谢博主 1 KMeans 1.1 算法描述 随机选择k个中心 遍历所有样本,把样本 ...
最新文章
- Centos6.5 yum 安装MySQL5.5 并修改数据库路径
- MongoDB-GRIDFS大文件系统
- 数据库 sqlite order by对结果集进行排序
- angularjs与后台传值接收值
- linux下配置jdk+tomcat
- android 介绍0
- PHP大势已去,PHP宝藏可为我所用
- c++ new 数组_用Java实现JVM第八章《数组和字符串》
- SyntaxError: invalid syntax-python报错
- 为了不被OUT,UC决定不再安静地做个浏览器了
- json-lib 的maven dependency
- CCS3.3之DM642开发环境建立
- 嵌入式系统——文件系统
- 隔离 docker 容器中的用户-------分享链接
- Chrome插件:OneNote Web Clipper 搜集和整合碎片信息的神器
- 中标麒麟的下载和安装
- C++ string替换指定字符
- 金山和微软word脚注和尾注问题
- 学习笔记61—兴趣阅读之经济学
- 防治颈椎病,别陷入误区
热门文章
- 计算机网络相关论文目录怎么弄,如何给你的标书、论文编页码和目录-论文页码设置...
- 雷观(五):认准的事情,要做就做到极致
- Matlab Mathematica 向量(行,列) 矩阵
- Java计算机IT编程文档常见单词翻译
- git-cola安装与使用
- android adb 抓取log
- div内图片和文字水平垂直居中
- 什么是作用域、作用域链
- 论文分享 | Yann LeCun 联合发布、工程师都在读的自监督学习论文
- python 监控手机屏幕_Python 让手机实现监控功能的办法,解决一些困扰一些人很久的比如偷情的信任问题...