16_非监督学习、k-means 4阶段、kmeans API、Kmeans性能评估指标、案例
1、聚类算法介绍
关于聚类算法,可以查看:常见的六大聚类算法
2、k-means 4阶段
K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。
- 1.首先,随机设K个特征空间内的点作为初始的聚类中心。
- 2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为这个聚类中心。
- 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,通过取分配给每个先前质心的所有样本的平均值来创建新的质心重,新对K个聚类中心做计算。
- 4.最后,计算旧和新质心之间的差异,如果所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代就可以停止,否则回到步骤2继续循环。
K均值等于具有小的全对称协方差矩阵的期望最大化算法。
3、k-means API
sklearn.cluster.KMeans
class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')参数:
n_clusters : int, default=8 要形成的聚类数以及生成的质心数。
init : {‘k-means++’, ‘random’, ndarray, callable}, default=’k-means++’初始化方法,默认为'k-means++',以智能方式选择k-均值聚类的初始聚类中心,以加速收敛;random,从初始质心数据中随机选择k个观察值
n_init : int,默认值:10使用不同质心种子运行k-means算法的时间。最终结果将是n_init连续运行在惯性方面的最佳输出。
n_jobs : init用于计算的作业数量。这可以通过并行计算每个运行的n_init。如果-1使用所有CPU。如果给出1,则不使用任何并行计算代码,这对调试很有用。对于-1以下的n_jobs,使用(n_cpus + 1 + n_jobs)。因此,对于n_jobs = -2,所有CPU都使用一个。
random_state : 随机数种子,默认为全局numpy随机数生成器。
labels_:默认标记的类型,可以和真实值比较(不是值比较)# 关于其它更多参数介绍访问:https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#examples-using-sklearn-cluster-kmeans]使用kmeans的方式案例:
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,y=None)
使用X作为训练数据拟合模型
kmeans.fit(X)
predict(X)
预测新的数据所在的类别
kmeans.predict([[0, 0], [4, 4]])
array([0, 1], dtype=int32)
属性
cluster_centers_
集群中心的点坐标
kmeans.cluster_centers_
array([[1.,2.],[4.,2.]])
labels_
每个点的类别
kmeans.labels_
4、Kmeans性能评估指标
4.1 Kmeans性能评估指标API
sklearn.metrics.silhouette_score
sklearn.metrics.silhouette_score(X, labels)
计算所有样本的平均轮廓系数X:特征值
labels : 被聚类标记的目标值
5、k-means案例分析
手写数字数据上K-Means聚类的演示
# -*- coding: UTF-8 -*-from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
from sklearn.datasets import load_digitsdef kmeans():"""手写数字聚类过程:return: None"""# 加载手写数字数据集ld = load_digits()print(ld.data)print("------------------------------------------")print(ld.target)print("---------查看第一个样本数据----------------")# 查看第一个样本数据print(ld.data[0])print("------------------------------------------")# print(ld.target[:20])# 聚类km = KMeans(n_clusters=810)km.fit_transform(ld.data)print(km.labels_[:20])# (silhouette : /ˌsɪluˈet/ n:轮廓,剪影, vt. 使…照出影子来;使…仅仅显出轮廓)print(silhouette_score(ld.data,km.labels_))if __name__=="__main__":kmeans()
输出结果:
[[ 0. 0. 5. ... 0. 0. 0.][ 0. 0. 0. ... 10. 0. 0.][ 0. 0. 0. ... 16. 9. 0.]...[ 0. 0. 1. ... 6. 0. 0.][ 0. 0. 2. ... 12. 0. 0.][ 0. 0. 10. ... 12. 1. 0.]]
------------------------------------------
[0 1 2 ... 8 9 8]
---------查看第一个样本数据----------------
[ 0. 0. 5. 13. 9. 1. 0. 0. 0. 0. 13. 15. 10. 15. 5. 0. 0. 3.15. 2. 0. 11. 8. 0. 0. 4. 12. 0. 0. 8. 8. 0. 0. 5. 8. 0.0. 9. 8. 0. 0. 4. 11. 0. 1. 12. 7. 0. 0. 2. 14. 5. 10. 12.0. 0. 0. 0. 6. 13. 10. 0. 0. 0.]
------------------------------------------
[209 579 30 233 33 646 712 369 211 784 162 81 158 735 73 46 284 564622 720]
0.09647323481043048
再如案例:https://www.cnblogs.com/moon2/p/9872706.html
6、kmeans总结
特点分析:
采用迭代式算法,直观易懂并且非常实用
缺点:
容易收敛到局部最优解(多次聚类)
需要预先设定簇的数量(k-means++解决)
打个赏呗,您的支持是我坚持写好博文的动力
16_非监督学习、k-means 4阶段、kmeans API、Kmeans性能评估指标、案例相关推荐
- 机器学习(17)无监督学习 -- K-means算法与性能评估
目录 一.K-means 1.概念 2.过程 3.API(K-means) 二.K-means性能评估 1.轮廓系数 2.API(轮廓系数) 一.K-means 1.概念 无监督学习:没有目标值(没有 ...
- Machine Learning | (12) 非监督学习-k-means
Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...
- 【机器学习】K-Means(非监督学习)学习及实例使用其将图片压缩
非监督学习之k-means K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型.算法执行的过程分为4个阶段. 1.从数据中选择k个对象作为初始聚类中心; 2.计算每个 ...
- 机器学习非监督学习—k-means及案例分析
一.非监督学习 无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不断地自我认知,自我巩固,最后进行自我归纳,在机器学习中,无监督学习可以被简单理解为 ...
- 机器学习之非监督学习(六)——聚类(K-Means)
K-means算法 (无监督算法,聚类算法) 1-1 基本流程 一.概念: K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之 ...
- 非监督学习-Apriori(关联),PCA(降维), k-means(聚类)
Apriori算法原理总结 - 刘建平Pinard - 博客园Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策.比如 ...
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- k means算法C语言伪代码,K均值算法(K-Means)
1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...
- Deep Learning论文笔记之(三)单层非监督学习网络分析
Deep Learning论文笔记之(三)单层非监督学习网络分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感 ...
最新文章
- python 学习 [day8]class成员
- JavaScript String 对象扩展方法
- [开源] .NETCore websocket 即时通讯组件---ImCore
- 会员系统整合的想法[择]
- Centos netperf安装
- 斐波那契问题的递归和动态规划
- 海量存储之十八–一致性和高可用专题
- Memory Ordering
- ASP.NET登录以及注册
- Meanshift 均值飘移实现图像聚类 MATLAB实现(4)
- CSS fixed 定位元素失效的问题
- ES6模块的循环加载
- [leetcode]5169. 日期之间隔几天
- oracle18cscott,Oracle 18c 数据库中scott用户不存在的解决方法
- RAID - 提升IO性能及数据安全
- 人资(人事)送命连环问,51个问题。
- 恢复Windows10的经典照片查看器
- linux 程序网速监控软件,Linux实时网速监控软件ifstat简易教程
- 只有外包公司的offer,那没得选?
- 震撼【超高细节地球】GIS相关引擎,速看。。。
热门文章
- 《机器学习实战》总结
- Linux shell脚本编程(二)
- Web框架之Django_06 模型层了解(F查询、Q查询、事务、update和save、only和defer、choice属性、bulk_create)
- Uipath 学习栏目基础教学:2Uipath变量介绍
- opencv进阶学习笔记12:轮廓发现和对象测量
- opencv学习笔记18:canny算子边缘检测原理及其函数使用
- boost::safe_numerics模块实现混合类型产生令人惊讶的结果的测试程序
- boost::mpl模块实现empty相关的测试程序
- boost::mp11::mp_bind_q相关用法的测试程序
- boost::edge_coloring用法的测试程序