用python实现聚类分析

python大数据:聚类分析 该算法的核心思想是通过计算每个点的可达距离(Reachability Distance)和核心距离(Core Distance)来确定数据点之间的密度关系,从而自动发现数据中的层次结构,而无需预先设定簇的数量。作为一种无监督学习方法,聚类分析不依赖于事先定义的标签或类别,而是通过对数据本身的特性进行分析,自动地将相似的数据点归为同一组,不同的组之间则尽可能保持差异。K-means算法是一种广泛使用的聚类算法,它基于将数据点划分到K个簇的思想,其中K是用户指定的参数,表示希望得到的簇的数量。 阅读详情

一、简介

 这里较为详细介绍了聚类分析的各种算法和评价指标,本文将简单介绍如何用python里的库实现它们。

二、k-means算法

 和其它机器学习算法一样,实现聚类分析也可以调用sklearn中的接口。

from sklearn.cluster import KMeans

2.1 模型参数

KMeans(
	# 聚类中心数量,默认为8
    n_clusters=8,
    
    *,
    
    # 初始化方式,默认为k-means++,可选‘random’,随机选择初始点,即k-means
    init='k-means++',
    
    # k-means算法会随机运行n_init次,最终的结果将是最好的一个聚类结果,默认10
    n_init=10,
    
    # 算法运行的最大迭代次数,默认300
    max_iter=300,
    
    # 容忍的最小误差,当误差小于tol就会退出迭代(算法中会依赖数据本身),默认为0.0001
    tol=0.0001,
    
    # 是否将数据全部放入内存计算,可选{'auto', True, False},开启时速度更快但是更耗内存
	# 'auto' : 当n_samples * n_clusters > 12million,不放入内存,否则放入内存,double精度下大概要多用100M的内存
    precompute_distances='deprecated',
	
	# 是否输出详细信息,默认为0
    verbose=0,
    
    # 用于随机产生中心的随机序列
    random_state=None,

	# 是否直接在原矩阵上进行计算
    copy_x=True,

	# 同时进行计算的核数(并发数),n_jobs用于并行计算每个n_init,如果设置为-1,使用所有CPU,若果设置为1,不并行,如果设置小于-1,使用CPU个数+1+n_jobs个CPU
    n_jobs='deprecated',

	# 可选的K-means距离计算算法, 可选{"auto", "full" or "elkan",default="auto"}
	# full为欧式距离,elkan为使用三角不等式,效率更高,但不支持稀疏矩阵,当为稀疏矩阵时,auto使用full,否则使用elkan
    algorithm='auto',
)

2.2 常用模型方法

  • fit(X)——对数据X进行聚类
  • predict(X)——对新数据X进行类别的预测
  • cluster_centers_——获取聚类中心
  • labels_——获取训练数据所属的类别,比设置的聚类中心个数少1
  • inertia_——获取每个点到聚类中心的距离和
  • fit_predict(X)——先对X进行训练并预测X中每个实例的类,等于先调用fit(X)后调用predict(X),返回X的每个类
  • transform(X)——将X进行转换,转换为K列的矩阵,其中每行为一个实例,每个实例包含K个数值(K为传入的类数量),第i列为这个实例到第K个聚类中心的距离
  • fit_transform(X)——先进行fit之后进行transform
  • score(X)——输入样本(这里的样本不是训练样本,而是其他传入的测试样本)到他们的类中心距离和,然后取负数

2.3 实际例子

# 以two_moons数据为例
from sklearn.datasets import make_blobs
# 生成模拟的二维数据, X.shape——>(100, 2)
X, y = make_blobs(random_state=1)

# 设置为三个聚类中心
Kmeans = KMeans(n_clusters=3)
# 训练模型
Kmeans.fit(X)

2.3.1 获取聚类中心:

Kmeans.cluster_centers_

输出:

array([[ -1.4710815 ,   4.33721882],
       [ -6.58196786,  -8.17239339],
       [-10.04935243,  -3.85954095]])

2.3.2 获取类别

Kmeans.labels_

输出:我们设置了3个聚类中心,所以输出3个类别。

array([0, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 2, 1, 0, 1, 1, 1, 0, 2, 2, 1, 2,
       1, 0, 2, 1, 1, 0, 0, 1, 0, 0, 1, 0, 2, 1, 2, 2, 2, 1, 1, 2, 0, 2,
       2, 1, 0, 0, 0, 0, 2, 1, 1, 1, 0, 1, 2, 2, 0, 0, 2, 1, 1, 2, 2, 1,
       0, 1, 0, 2, 2, 2, 1, 0, 0, 2, 1, 1, 0, 2, 0, 2, 2, 1, 0, 0, 0, 0,
       2, 0, 1, 0, 0, 2, 2, 1, 1, 0, 1, 0], dtype=int32)

2.3.3 获取每个点到聚类中心的距离和

Kmeans.inertia_

输出:

156.28289251170003

三、mini batch k-means算法

 mini batch k-means的用法和k-means类似。

from sklearn.cluster import Mini
K-means聚类分析(Python) 解决将空间中一些点分成K类的问题,K 代表样本类别数 Kind推广到K就是:K均值聚类算法是先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。 阅读详情

相关推荐

Python实现聚类分析

Python实现聚类分析并可视化 import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.cluster import KMeans from sklearn import datasets from pylab import * mpl.rcParams['font.sans-seri...

kun_coder的博客 2947

聚类分析|k-means聚类方法及其Python实现

k-means算法由MacQueen在1967年提出。是一种经典的基于划分的聚类方法。划分方法(Partitioning Method)是基于距离判断样本相似度,通过不断迭代将含有多个样本的数据集划分成若干个簇,使每个样本都属于且只属于一个簇,同时聚类簇的总数小于样本总数目。该方法需要事先给定聚类数以及初始聚类中心,通过迭代的方式使得样本与各自所属类别的簇中心的距离平方和最小,聚类效果很大程度取决于初始簇中心的选择。

皖山文武 3673

Python聚类算法:分析数据的一种有效方式

本文介绍了Python中常见的聚类算法,包括KMeans算法、层次聚类算法和DBSCAN算法。通过这些算法,我们可以对数据集进行有效的分析和处理,帮助我们更好地理解数据,从而做出更加有力的决策。

. 1044

Python 用 NumPy 实现简单的聚类分析

聚类分析是一种重要的数据挖掘技术,广泛应用于图像识别、市场细分、生物信息学等多个领域。本文章的目的是介绍如何使用 Python 的 NumPy 库实现简单的聚类分析,具体聚焦于经典的 K-Means 聚类算法。通过本文章,读者将了解聚类分析的基本概念、K-Means 算法的原理和实现步骤,并能够使用 NumPy 编写自己的聚类分析代码。本文将按照以下结构进行组织:首先介绍聚类分析的核心概念和相关术语,然后详细讲解 K-Means 聚类算法的原理和使用 NumPy 实现的具体步骤。

AI Python 编程之道的博客 1027

ArcGIS图解建模工具与DEM提取山脊、山谷线(水文分析、表面分析)

参考汤国安、杨昕等编著的《地理信息系统空间分析实验教程第二版》 利用水文分析(流量)和表面分析(坡向变率)得到山脊和山谷线 文章目录1、基本概念1.1 正地形1.2 负地形正负地形的影响2、水文分析方法2.1 基本思想原理2.2 技术路线2.3 操作步骤2.3.1 正负地形的提取2.3.2 利用水文分析思想和工具提取研究区域的山脊线2.3.3 利用水文分析思想和工具提取研究区域的山谷线2.3.4 利用水文分析提取山脊线和山谷线结果3、表面分析方法3.1 基本思想原理3.2 技术路线3.3 操作步骤4、图.

fungis 1万+

【软件分享】天若OCR文字识别V4.48(翻译功能免费)

软件简介 吾爱破解论坛大佬天若幽心开发的一款OCR文字识别工具。支持快速截图识别,以及文本翻译。 下载地址 蓝奏云盘:点击下载 百度网盘:点击下载(密码:4dm4) 坚果云盘:点击下载 天翼云盘:点击下载 微软云盘:点击下载 使用教程 1、下载后对压缩包进行解压 2、双击天若OCR文字识别.exe 3、发现桌面右下角出现软件图标 4、双击软件图标即可开始截图识别 原帖地址 https://www.52pojie.cn/thread-692917-1-1.html ...

XavierJ的博客 1万+

Open5GS实战指南:Ubuntu 22.04环境下的5G核心网快速部署

本文提供Open5GS在Ubuntu 22.04环境下部署5G核心网的实战指南,涵盖环境准备、MongoDB配置、核心组件安装、WebUI部署及网络调优等关键步骤。通过详细的安装教程和常见问题解决方案,帮助开发者快速搭建开源5G核心网测试环境。

weixin_29202213的博客 537

【XSRP软件无线电】基于软件无线电平台的FM数字接收系统设计(含有完整工程资料获取链接)

随着无线通信技术的快速发展,软件无线电(Software Defined Radio, SDR)作为一种新兴的无线通信技术,逐渐成为研究和应用的热点。传统的无线接收机通常依赖于专用硬件实现其功能,灵活性和可扩展性有限。相较之下,软件无线电利用软件来实现信号处理和调制解调功能,能够适应多种频率和调制方式,使无线通信系统更加灵活和高效。在FM(频率调制)广播中,数字接收技术的应用不仅提高了信号的抗干扰能力,还能提供更好的音质和更多的附加信息(如广播电台名称、节目内容等)。

嵌入式技术开发 1366

基于STM32、HAL库的WF162A 11BA T&R气压传感器 驱动程序设计

/ 转换为7位地址。* @param temperature: 存储读取到的温度值(°C)* @param temperature: 存储读取到的温度值(°C)* @param pressure: 存储读取到的压力值(bar)* @param pressure: 存储读取到的压力值(bar)* @param range: 压力范围(bar)

corlin6688的博客 361

ABAP CDS 视图参数 parameter_list 详解与最佳实践:从语法、作用域到可运行范例

本文系统梳理了ABAP CDS视图的WITH PARAMETERS定义与使用。主要内容包括:1)参数声明语法及其在整条SELECT语句中的贯穿使用;2)参数在WHERE/HAVING/ON等位置的多种写法(:pname和$parameters.pname);3)参数在航空公司航线筛选等实际业务场景中的应用;4)参数与会话变量的协作策略;5)在JOIN ON、HAVING、CASE等高级用法中的实践;6)提供完整的CDS视图与ABAP程序示例,展示参数声明、使用及Open SQL传参方式。所有内容均基于SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 372

【Unity】RPG2D龙城纷争(十九)流程与UI界面(终章)

本章为RPG2D系列的终章,在之前的章节中我们已经完成了游戏的所有基本功能,那么用流程与UI界面将其串联起来才是我们整个游戏原型完善的标志。

神码编程 916

11-16 Fluent结果查看及后处理功能(做动画、监控点)

监控点、面及动画操作

zheaa的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: 聚类分析简介
下一篇: PCA——主成分分析
米法·
博客等级 码龄8年 179粉丝 116原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值