机器学习_聚类(k-means)

文章目录

    • 聚类步骤
    • k-means API
    • Kmeans性能评估指标
      • Kmeans性能评估指标API

聚类步骤

k-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。

  • 1.首先,随机设K个特征空间内的点作为初始的聚类中心。
  • 2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为这个聚类中心。
  • 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,通过取分配给每个先前质心的所有样本的平均值来创建新的质心重,新对K个聚类中心做计算。
  • 4.最后,计算旧和新质心之间的差异,如果所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代就可以停止,否则回到步骤2继续循环。K均值等于具有小的全对称协方差矩阵的期望最大化算法

k-means API

from sklearn.cluster import KMeans
参数:
sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
k-means聚类
n_clusters:开始的聚类中心数量
init:初始化方法,默认为’k-means ++’

labels_:默认标记的类型,可以和真实值比较(不是值比较)

class sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')""":param n_clusters:要形成的聚类数以及生成的质心数:param init:初始化方法,默认为'k-means ++',以智能方式选择k-均值聚类的初始聚类中心,以加速收敛;random,从初始质心数据中随机选择k个观察值(行:param n_init:int,默认值:10使用不同质心种子运行k-means算法的时间。最终结果将是n_init连续运行在惯性方面的最佳输出。:param n_jobs:int用于计算的作业数量。这可以通过并行计算每个运行的n_init。如果-1使用所有CPU。如果给出1,则不使用任何并行计算代码,这对调试很有用。对于-1以下的n_jobs,使用(n_cpus + 1 + n_jobs)。因此,对于n_jobs = -2,所有CPU都使用一个。:param random_state:随机数种子,默认为全局numpy随机数生成器"""

聚类建立模型

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
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) # 导入模型,分为两个模块(n_clusters=2)
kmeans.fit(X) # 进行训练分类print('每个点的类别',kmeans.cluster_centers_)
print('集群中心的点坐标:',kmeans.labels_)
print('将这些值进行分类:',kmeans.predict(X))
print('预测这个两个数属于那个类型:',kmeans.predict([[0, 0], [4, 4]]))
print('Kmeans性能评估(计算所有样本的平均轮廓系数):',silhouette_score(X,kmeans.predict(X)))
  • 特点分析:
    • 采用迭代式算法,直观易懂并且非常实用

    • 缺点:容易收敛到局部最优解(多次聚类)
      需要预先设定簇的数量(k-means++解决)

Kmeans性能评估指标

在这里插入图片描述
注:对于每个点i 为已聚类数据中的样本 ,b_i i 到其它族群的所有样本的平均
距离,a_ii 到本身簇的距离平均值

最终计算出所有的样本点的轮廓系数平均值

这个举一个二维数据的例子:
假设这个是一个分类好的一个聚类,我们以蓝1为例:
在这里插入图片描述
1、计算蓝1到⾃身类别的点距离的平均值a_i
2、计算蓝1分别到红⾊类别,绿⾊类别所有的点的距离,求出平均值b1, b2,取其中最⼩的值当做b_i

  • 我们以轮廓系数公式算出两个极端:
    b_i>>a_i : 1 是最好的(轮廓系数为1是完美的)
    a_i>> b_i :-1 是最差的(轮廓系数为-1是最差的)

  • 可得 :轮廓系数范围 [-1, 1]

  • 结论:

    • 如果sc_i 小于0,说明a_i 的平均距离大于最近的其他簇。
      聚-类效果不好

    • 如果sc_i 越大,说明a_i 的平均距离小于最近的其他簇。
      聚类效果好

    • 轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优

Kmeans性能评估指标API

sklearn.metrics.silhouette_score
sklearn.metrics.silhouette_score(X, labels)
计算所有样本的平均轮廓系数
X:特征值
labels:被聚类标记的目标值

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
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) # 导入模型,分为两个模块(n_clusters=2)
kmeans.fit(X) # 进行训练分类print('每个点的类别',kmeans.cluster_centers_)
print('集群中心的点坐标:',kmeans.labels_)
print('预测这个两个数属于那个类型:',kmeans.predict(X))print('Kmeans性能评估(计算所有样本的平均轮廓系数):',silhouette_score(X,kmeans.predict(X)))

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

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

相关文章

【机器学习】经典目标检测算法:RCNN、Fast RCNN、 Faster RCNN 基本思想和网络结构介绍

文章目录 三者的比较:RCNN、Fast RCNN、 Faster RCNN一、框架的对比1.三者都是二阶算法,网络框架比较:2.三者的优缺点比较: RCNN一、RCNN系列简介二、RCNN算法流程的4个步骤三、RCNN存在的问题四、论文解析补充1.R-CNN提出了两个问…

Java后端八股----JVM篇

上图中线程1,2如果资源被抢占了,则程序计数器记录一下执行的行号,等到资源就绪后会从记录的行号继续向后执行。 Java8把静态变量以及常量放到了线程的本地内存原空间中(避免放在堆中不可控)。 👆图中第二种情况不太容易出现…

Stable Diffusion WebUI 生成参数:宽度/高度/生成批次/每批数量/提示词相关性/随机种子

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文将继续了解 Stable Diffusion WebUI 的生成参数,主要内容有:宽度、高度、生成批次、每批数量、提示词相关性、随机种子。希望能对你…

【目标检测】YOLOv2 网络结构(darknet-19 作为 backbone)

上一篇文章主要是写了一些 YOLOv1 的原版网络结构,这篇文章一样,目标是还原论文中原版的 YOLOv2 的网络结构,而不是后续各种魔改的版本。 YOLOv2 和 YOLOv1 不一样,开始使用 Darknet-19 来作为 backbone 了。论文中给出了 Darkne…

jupyter notebook使用教程

首先是打开jupyter notebook 下载安装好之后,直接在命令行中输入‘jupyter notebook’即可跳转到对应页面 还可以进入想要打开的文件夹,然后再文件夹中打开中断,执行‘jupyter notebook’命令,就能够打开对应文件界面的jupyter …

关于前端的学习

目录 前言: 1.初识HTML: 1.1超文本: 1.2标记语言: 2.关于html的基本框架: 3.HTML基本文字标签: 3.1.h标题标签: 3.3 文本内容: 3.4换行的和分割的: 3.5 特殊文字标签: 3.5.1表面上看着三对的结果呈现都是一样的: 3.5.2但是其背后的效果其实是不一样的: 3.6转义字符:…

25考研|北大软微会「爆炸」吗?

软微不是已经爆炸了吗? 大家去看看他的录取平均分就知道了,没有实力千万别碰,现在考软微已经不存在捡漏之说。 110408的复试线已经划到了465分,这个人真的不低了,因为有数学一和408两个比较难的专业课,复…

Docker之大鲸鱼

什么是Docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 Docker常见命令? docker run -d \--name mys…

【GIS系列】GeoTools简介及工具类分享

本文将对GeoTools相关概念进行介绍,同时会给大家分享我工作中用到的工具类及使用方法。 作者:后端小肥肠 目录 1.前言 2. GeoTools简介 3. Geotools使用示例 3.1. 开发环境搭建 3.1.1. 所需版本和工具 3.1.2. pom依赖​​​​​​​ 4. 工具类介绍…

擂台赛-安全攻防之使用openssh后门获取root密码实战

前言 大家好,我是沐风晓月,我们开始组队学习了,介绍下我们的情况: 这几天跟队员 迎月,虹月,心月,古月打擂台,我和心月一组,相互攻占对方服务器。 终于在今早凌晨三点拿…

【算法】欧拉筛(线性筛)模版

蓝桥杯题目 试题 B: 双子数 本题总分:5 分 【问题描述】   若一个正整数 x 可以被表示为 p2 q2,其中 p、q 为质数且 p , q,则 x 是一个 “双子数”。请计算区间 [2333, 23333333333333] 内有多少个 “双子数”? 【答案提交】…

【目标检测】2. RCNN

接上篇 【目标检测】1. 目标检测概述_目标检测包括预测目标的位置吗?-CSDN博客 一、前言 CVPR201 4经典paper:《 Rich feature hierarchies for accurate object detection and semantic segmentation》,https://arxiv.org/abs/1311.2524, 这篇论文的算法思想被称…