机器学习/sklearn 笔记:K-means,kmeans++

1  K-means介绍

1.0 方法介绍

  • KMeans算法通过尝试将样本分成n个方差相等的组来聚类,该算法要求指定群集的数量。它适用于大量样本,并已在许多不同领域的广泛应用领域中使用。
  • KMeans算法将一组样本分成不相交的簇,每个簇由簇中样本的平均值描述。这些平均值通常称为簇的“质心”;
    • 注意,质心通常不是样本点,尽管它们存在于相同的空间中。

  • KMeans算法旨在选择最小化惯性或称为群内平方和标准的质心:

1.1 惯性的缺点

  • 惯性可以被认为是衡量簇内部一致性的一种度量。它有各种缺点:
    • 惯性假设簇是凸形的和各向同性的,但这不总是情况。
      • 对于拉长的簇或形状不规则的流形反应不佳
    • 惯性不是一个规范化的度量:
      • 我们只知道较低的值更好,零是最优的。但是在非常高维的空间中,欧几里得距离往往会变得膨胀(这是所谓的“维数诅咒”的一个实例)。
      • ——>在k均值聚类之前运行一个降维算法,如主成分分析(PCA),可以缓解这个问题并加快计算速度。
  • 以下是几个K-means效果不加的例子:
      • clusters的数量不是最优
      • 各向异性的cluster分布
      • 方差不同
      • 各个簇数量不同

1.2 Kmeans算法的步骤

  • K均值算法通常被称为劳埃德算法(Lloyd's algorithm)。简单来说,该算法有三个步骤
    • 第一步选择初始质心,最基本的方法是从数据集中选择样本
    • 初始化之后,K均值算法由两个步骤的循环组成
      • 第一个步骤是将每个样本分配给最近的质心
      • 第二步是通过取分配给每个前一个质心的所有样本的平均值来创建新的质心
      • 计算旧质心和新质心之间的差异,并重复这最后两个步骤,直到这个值小于一个阈值(直到质心不再有显著移动为止)
  • K均值算法等同于期望最大化算法,带有一个小的、全相等的、对角线协方差矩阵

  • 给定足够的时间,K均值总会收敛,但这可能是到一个局部最小值
    • 这在很大程度上取决于质心的初始化
    • 因此,计算通常会进行多次,质心的初始化也各不相同
    • 一个帮助解决这个问题的方法是k-means++初始化方案(init='k-means++')
      • 这样初始化质心通常会相互远离,导致比随机初始化更好的结果

2 sklearn.cluster.KMeans

sklearn.cluster.KMeans(
    n_clusters=8, 
    *, 
    init='k-means++', 
    n_init='warn', 
    max_iter=300, 
    tol=0.0001, 
    verbose=0, 
    random_state=None, 
    copy_x=True, 
    algorithm='lloyd')

2.1 主要参数

n_clusters簇的数量
init
  • {‘k-means++’, ‘random’}或形状为(n_clusters, n_features)的数组,默认为'k-means++' 初始化方法
    • ‘k-means++’:使用基于点对总惯性贡献的经验概率分布的采样来选择初始簇质心。这种技术加快了收敛速度
      • 这里实现的算法是“贪婪k-means++”。它与普通的k-means++的不同之处在于,每个采样步骤进行多次尝试,并从中选择最佳质心
    • ‘random’:从数据中随机选择n_clusters个观测(行)作为初始质心
    • 数组:形状应为(n_clusters, n_features),并给出初始中心
n_init
  • 'auto'或int,默认值为10
  • k-means算法运行的次数,每次都使用不同的质心种子
  • 最终结果是n_init连续运行中惯性最佳的输出。
  • 当n_init='auto'时,运行次数取决于init的值:
    • 如果使用init='random',则为10
    • 如果使用init='k-means++'或init是类数组的,则为1
max_iter
  • int,默认值为300
  • k-means算法单次运行的最大迭代次数
tol两次连续迭代的簇中心的Frobenius范数差异来声明收敛的相对容忍度

2.2 举例

from sklearn.cluster import KMeans
import numpy as np

X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])

kmeans=KMeans(n_clusters=2,n_init='auto').fit(X)

2.2.1 属性

cluster_centers_

簇中心的坐标

labels_ndarray

每个点的标签

inertia_

样本到最近簇中心的平方距离之和,如果提供了样本权重,则按样本权重加权

n_iter_

运行的迭代次数

2.2.2 fit


fit(X, sample_weight=None)

 sample_weight 是X中每个观测的权重。如果为None,则所有观测都被赋予相等的权重

3 sklearn.cluster.kmeans_plusplus

类似于使用k_means++来进行

sklearn.cluster.kmeans_plusplus(X, n_clusters, *, sample_weight=None, x_squared_norms=None, random_state=None, n_local_trials=None)
X

用来选择初始种子的数据

(也就是KMeans里面fit的内容)

n_cluster要初始化的质心数量
sample_weightX中每个观测的权重

3.1 返回值:

centers:形状为(n_clusters, n_features) ,k-means的初始中心。

indices:形状为(n_clusters,) 在数据数组X中选择的中心的索引位置。对于给定的索引和中心,X[index] = center

3.2 举例

from sklearn.cluster import kmeans_plusplus
import numpy as np

X = np.array([[1, 2], [1, 4], [1, 0],
              [10, 2], [10, 4], [10, 0]])

kmeans_plusplus(X,n_clusters=2)
'''
(array([[10,  0],
        [ 1,  4]]),
 array([5, 1]))
'''

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

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

相关文章

GIT实践与常用命令---回退

实践场景 场景1 回退提交 在日常工作中,我们可能会和多个同事在同一个分支进行开发,有时候我们可能会出现一些错误提交,这些错误提交如果想撤销,可以有两种解决办法:回退( reset )、反做(revert) keywords:reset、rev…

【计算方法与科学建模】矩阵特征值与特征向量的计算(二):Jacobi 过关法及其Python实现(Jacobi 旋转法的改进)

文章目录 一、Jacobi 旋转法1. 基本思想2. 注意事项 二、Jacobi 过关法1. 基本思想2. 注意事项 三、Python实现迭代过程(调试) 矩阵的特征值(eigenvalue)和特征向量(eigenvector)在很多应用中都具有重要的数…

Python 提高篇学习笔记(一):深拷贝和浅拷贝

文章目录 一、什么是对象的引用二、深拷贝和浅拷贝2.1 浅拷贝(Shallow Copy)2.2 深拷贝(Deep Copy)2.3 copy.copy和copy.deepcopy的区别 一、什么是对象的引用 在 Python 中,对象的引用是指变量指向内存中某个对象的地址或标识符。当你创建一个新的对象(比如一个整…

合格的全栈测试工程师,需要掌握哪些测试工具?

前言 俗话说,工欲善其事,必先利其器,所以一个好的软件测试工程师必须善于使用各种软件测试工具。软件测试工具是通过一些工具能够使软件的一些简单问题直观的展示在测试人员的面前,这样能使测试人员更好的找出软件错误的所在&…

iperf3 网络测试

iperf3 测试网络的上下行带宽 下载地址 https://iperf.fr/iperf-download.php 开启服务器 开启客户端 常用命令 -c 代表客户端-s 代表服务端-u 代表 udp-r 代表数据方向是否反向 https://baijiahao.baidu.com/s?id1731514357681464971&wfrspider&forpc

Python数据分析实战-爬取以某个关键词搜索的最新的500条新闻的标题和链接(附源码和实现效果)

实现功能 通过百度引擎,爬取以“开源之夏”为搜索关键词最新的500条新闻的标题和链接 实现代码 1.安装所需的库:你需要安装requests和beautifulsoup4库。可以使用以下命令通过pip安装: pip install requests beautifulsoup42.发起搜索请求…

Redis事务的理解与使用

文章目录 Redis 事务1)基本认识2)事务操作1.MULTI2.EXEC3.错误处理4.DISCARD5.WATCH6.SCRIPT Redis 事务 官方文档,永远是你学习的第一手资料:Redis 事务 1)基本认识 谈到事务,大家首先都会联想到 mysql 中复杂但又功能强大的“事务”&…

HTML新手入门笔记整理:HTML基本标签

结构标签 <html> </html> 告诉浏览器这个页面是从<html> 开始&#xff0c;到 </html>结束 <head> </head> 网页的头部&#xff0c;用于定义一些特殊内容&#xff0c;如页面标题、定时刷新、外部文件等。 <body> </body> …

Vue 3 渲染机制解密:从模板到页面的魔法

Vue 3 渲染机制解密 前言Vue 3的响应性系统1. **Reactivity API:**2. **Proxy 对象:**3. **Getter 和 Setter:**4. **依赖追踪:**5. **批量更新:**6. **异步更新:**7. **递归追踪:**8. **删除属性:** 虚拟DOM的角色1. **减少直接操作真实 DOM:**2. **高效的批量更新:**3. **跨平…

[论文笔记] Scaling Laws for Neural Language Models

概览: 一、总结 计算量、数据集大小、模型参数量大小的幂律 与 训练损失呈现 线性关系。 三个参数同时放大时,如何得到最佳的性能? 更大的模型 需要 更少的样本 就能达到相同的效果。 </

浅谈Python装饰器原理与用法分析

前言 本文实例讲述了Python装饰器原理与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 1、装饰器的本质是函数&#xff0c;主要用来装饰其他函数&#xff0c;也就是为其他函数添加附加功能 2、装饰器的原则: (1) 装饰器不能修改被装饰的函数的源代码 (2) 装…

智能卡接口芯片解决方案

一、基本概述 HCM8035是一款简洁且低成本的智能IC卡模拟接口芯片。内嵌升压模块&#xff0c;支持5V,3V,1.8V全电压读写。具有全面的安全保护机制&#xff0c;包括ESD保护&#xff0c;端口短路保护&#xff0c;电源上掉电保护。外围元件数目少&#xff0c;采用QFN32L封装。 今…

如何用惯性动作捕捉系统,快速创建数字人三维动画?

在动画制作领域&#xff0c;惯性动作捕捉技术已经逐渐成为一种重要的制作手段。通过动捕设备能够将动捕演员真实的动作转化为数字数据&#xff0c;然后在动画中再现这些动作。为了创造出逼真、流畅的数字人动画&#xff0c;惯性动作捕捉系统成为了一大工具。 根据采集方式的不…

感恩节的习俗 Custom of Family Dinner

感恩节是美国最普遍庆祝的传统节日之一。在每年11月的第四个星期四&#xff0c;感恩节如期而至。Thanksgiving is one of the most universally celebrated traditional American holidays. Every year, Thanksgiving arrives on the fourth Thursday of November without fail…

为Oracle链接服务器使用分布式事务

1 现象 在SQL Server中创建指向Oracle的链接服务器&#xff0c;SQL语句在事务中向链接服务器插入数据。返回链接服务器无法启动分布式事务的报错。 2 解决 在Windows平台下&#xff0c;SQL Server依赖分布式事务协调器&#xff08;MSDTC&#xff09;来使用分布式事务&#xff0…

光量子计算再创融资高峰!法国 Quandela获投5000万欧元

​&#xff08;图片来源&#xff1a;网络&#xff09; 法国光量子计算公司Quandela致力于开发首台光量子计算机&#xff0c;目前已获得超过5,000万欧元的巨额融资。投资者包括通过“法国2030计划”获得的法国政府支持以及银行合作伙伴、个人。新的投资者包括法国投资公司Seren…

Vue2系列 — 渲染函数 (render + createElement)

官网文档&#xff1a;https://v2.cn.vuejs.org/v2/guide/render-function.html 1 render 函数 render 函数 不使用模板&#xff0c;使用 js 生成虚拟 dom 2 createElement() 接受的参数&#xff1a; 参数1 节点类型参数2 attribute参数3 子节点 3 DEMO <template>&…

阿里云发送短信

官方代码如下&#xff1a; // This file is auto-generated, dont edit it. Thanks. package com.aliyun.sample;import com.aliyun.tea.*;public class Sample {/*** 使用AK&SK初始化账号Client* param accessKeyId* param accessKeySecret* return Client* throws Excep…

4G5G智能执法记录仪在保险公司车辆保险远程定损中的应用

4G智能执法记录仪&#xff1a;汽车保险定损的**利器 随着科技的不断进步&#xff0c;越来越多的智能设备应用到日常生活中。而在车辆保险定损领域&#xff0c;4G智能执法记录仪的出现无疑是一大**。它不仅可以实现远程定损&#xff0c;还能实现可视化操作、打印保单以及数据融…

贪心算法及相关例题

目录 什么是贪心算法&#xff1f; leetcode455题.分发饼干 leetcode376题.摆动序列 leetcode55题.跳跃游戏I leetcode45题.跳跃游戏II leetcode621题.任务调度器 leetcode435题.无重叠空间 leetcode135题.分发糖果 什么是贪心算法&#xff1f; 贪心算法更多的是一种思…