机器学习_聚类(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)))

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day-23 N 叉树的层序遍历

思路:利用bfs,利用队列将当前层的孩子元素加入队列,再将本层元素出队即可 注意点:res.remove()执行后,ArrayList的元素索引会改变,可以先添加下一层所有元素后,再将本层元素一起出队 code: /* // Defini…

spring-boot-starter-thymeleaf加载外部html文件

在Spring MVC中,我们可以使用Thymeleaf模板引擎来实现加载外部HTML文件。 1.Thymeleaf介绍 Thymeleaf是一种现代化的服务器端Java模板引擎,用于构建漂亮、可维护且易于测试的动态Web应用程序。它适用于与Spring框架集成,并且可以与Spring M…

在ubuntu下安装MQTT 服务

ubuntu系统版本22.4.4LTS amd64 在ubuntu系统下打开终端输入命令 ## 安装MQTT 服务 sudo apt-get install mosquitto mosquitto-clients继续执行后系统就完成了安装并默认已启动服务 ## 查看MQTT运行状态 systemctl status mosquitto## 启动服务 systemctl start mosquitto…

深度学习神经网络相关记录《二》

如何判断模型是一个好模型? 模型预测效果,也就是模型预测的准确率运算速度;能够处理大量数据、短时间内急速学习、可以实时进行预测,是机器学习的重要优势;可解释性;深度学习已经不太关系这一点了&#xf…

计算机设计大赛 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

【C语言】守护进程(daemon)的输出到一个文本文件

一、常用的守护进程函数 void daemonize () {//deamonizepid_t pid fork();if( pid > 0 ){ //parent exitexit(0);}//child continuesetsid();chdir("/");close(0);open("/dev/null", O_RDWR);//no env debugif(!getenv("debug")){cl…

3.18数据结构

一、数据结构----->用来组织存储数据 一组用来保存一种或多种特定关系的数据的集合(组织和存储数据) 程序 数据结构 算法 MVC:软件设计架构 M:数据的管理(数据结构) V:视图&#xff0c…

​C语言-memcmp(内存块的比较)

memcmp&#xff08;内存块的比较&#xff09; 语法 memcmp函数是C语言标准库中的一个函数&#xff0c;用于比较两个内存块的内容是否相等。它定义在<string.h>头文件中。memcmp函数在比较两个字符串或者任何内存数据时非常有用&#xff0c;它不会检查字符串的长度&…

Godot 学习笔记(3):IOC容器注入,以NlogServices为例

文章目录 前言环境注意事项Ioc注入文件夹设置Service服务搭建Nlog.configNlogService配置ButtonTest1Service控制反转Program主入口ButtonTest1从Ioc中获取服务 输出生命周期问题 总结 前言 Godot.Net中使用IOC之后&#xff0c;Godot的代码将会被极大的解耦。这里不不展开说明…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之二 素描画风格效果 一、简单介绍 二、素描画风格效果实现原理 三、案例简单实现步骤 一、简单介绍 Python是一种跨…

MYSQL日志 redo_log更新流程 bin_log以及bin_log数据恢复

Redo_log写入策略 Redo log的Innodb_flush_log_at_trx_commit:: 这个参数有三个取值 取值为0&#xff1a;每次事务提交时&#xff0c;只是把redo_log留在 redo log buffer中&#xff0c;宕机会丢失数据&#xff1b; 取值为1&#xff08;默认值&#xff09;&#xff1a;每次事…

Zookeeper(2)常用命令,ACL权限

文章目录 前言一、zk节点和节点类型节点类型 二、常用命令1.客户端连接2.常用命令help 帮助命令创建节点getsetdeletedeleteall pathstat查看节点的状态setquota增加配额listquota /frame 查看配额delquota删除配额 三、ACL权限控制&#xff1a;1、ZooKeeper权限特性&#xff1…

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历&#xff0c;总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案&#xff0c;形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等&#xff0c;虽然文中使用的编程语言…

【开发】SpringBoot 整合 Redis

目录 前言 1. Redis 的下载及安装 1.1 Redis 的下载 1.2 安装 Redis 1.3 启动 Redis 2. 创建 SpringBoot 项目整合 Redis 2.1 环境要求 2.2 SpringBoot项目构建 2.2.1 方式一 2.2.2 方式二 2.3 在 pom.xml 文件中导入依赖坐标 2.4 在 application.properties 中加…

通过docker容器安装zabbix6.4.12图文详解(监控服务器docker容器)

一、相关环境及镜像 环境&#xff1a;ubuntu 22.04&#xff0c;zabbix-server6.4&#xff0c;mysql8.0 前提&#xff1a; 1&#xff09;先安装docker环境 2&#xff09;下载相关镜像 docker pull mysql:8.0 docker pull zabbix/zabbix-java-gateway:alpine-6.4-latest docker …

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

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

从零开始学习在VUE3中使用canvas(三):font(字体)

一、简介 我们可以使用font在canvas中绘制文字&#xff0c;方式如下: const ctx canvas.getContext("2d"); // 绘制文字 ctx.font "24px 黑体, 宋体"; //字体大小 首选字体 备选字体 ctx.fillText("这里是显示的字的内容", 100, 50); //文字…

力扣106---从中序和后序序列构造二叉树

题目描述&#xff1a; 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20…

Django HTML模版

一个网站的基本框架&#xff08;如页面布局、导航栏、页脚栏等&#xff09;往往是相同的。可以把这个基本框架做成一个模版&#xff0c;其它正式的HTML页面可以直接套用这个模版&#xff0c;可以大减少各HTML文件的代码量。 语法&#xff08;模版文件中&#xff09;&#xff1…

蓝桥杯练习题——健身大调查

在浏览器中预览 index.html 页面效果如下&#xff1a; 目标 完成 js/index.js 中的 formSubmit 函数&#xff0c;用户填写表单信息后&#xff0c;点击蓝色提交按钮&#xff0c;表单项隐藏&#xff0c;页面显示用户提交的表单信息&#xff08;在 id 为 result 的元素显示&#…