iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python聚类分析是什么
  • 409
分享到

python聚类分析是什么

2023-06-25 16:06:19 409人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“python聚类分析是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python聚类分析是什么”吧!何为聚类分析聚类分析或聚类是对一组对象进行分组的任务,使得同一组(

这篇文章主要讲解了“python聚类分析是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python聚类分析是什么”吧!

何为聚类分析

聚类分析或聚类是对一组对象进行分组的任务,使得同一组(称为聚类)中的对象(在某种意义上)与其他组(聚类)中的对象更相似(在某种意义上)。它是探索性数据挖掘的主要任务,也是统计 数据分析的常用技术,用于许多领域,包括机器学习,模式识别,图像分析,信息检索,生物信息学,数据压缩和计算机图形学。

聚类分析本身不是一个特定的算法,而是要解决的一般任务。它可以通过各种算法来实现,这些算法在理解群集的构成以及如何有效地找到它们方面存在显着差异。流行的群集概念包括群集成员之间距离较小的群体,数据空间的密集区域,间隔或特定的统计分布。因此,聚类可以表述为多目标优化问题。适当的聚类算法和参数设置(包括距离函数等参数)使用,密度阈值或预期聚类的数量)取决于个体数据集和结果的预期用途。这样的聚类分析不是自动任务,而是涉及试验和失败的知识发现或交互式多目标优化的迭代过程。通常需要修改数据预处理和模型参数,直到结果达到所需的属性。

常见聚类方法

常用的聚类算法分为基于划分、层次、密度、网格、统计学、模型等类型的算法,典型算法包括K均值(经典的聚类算法)、DBSCAN、两步聚类、BIRCH、谱聚类等。

K-means

聚类算法中k-means是最常使用的方法之一,但是k-means要注意数据异常:

  • 数据异常值。数据中的异常值能明显改变不同点之间的距离相识度,并且这种影响是非常显著的。因此基于距离相似度的判别模式下,异常值的处理必不可少。

  • 数据的异常量纲。不同的维度和变量之间,如果存在数值规模或量纲的差异,那么在做距离之前需要先将变量归一化或标准化。例如跳出率的数值分布区间是[0,1],订单金额可能是[0,10000 000],而订单数量则是[0,1000],如果没有归一化或标准化操作,那么相似度将主要受到订单金额的影响。

 DBSCAN

有异常的数据可以使用DBSCAN聚类方法进行处理,DBSCAN的全称是Density-Based Spatial Clustering of Applications with Noise,中文含义是“基于密度的带有噪声的空间聚类”。
跟K均值相比,它具有以下优点:

  • 原始数据分布规律没有明显要求,能适应任意数据集分布形状的空间聚类,因此数据集适用性更广,尤其是对非凸装、圆环形等异性簇分布的识别较好。

  • 无需指定聚类数量,对结果的先验要求不高

  • 由于DBSCAN可区分核心对象、边界点和噪点,因此对噪声的过滤效果好,能有效应对数据噪点。

由于他对整个数据集进行操作且聚类时使用了一个全局性的表征密度的参数,因此也存在比较明显的弱点:

  • 对于高纬度问题,基于半径和密度的定义成问题。

  • 当簇的密度变化太大时,聚类结果较差。

  • 当数据量增大时,要求较大的内存支持,I/O消耗也很大。

MiniBatchKMeans

K均值在算法稳定性、效率和准确率(相对于真实标签的判别)上表现非常好,并且在应对大量数据时依然如此。它的算法时间复杂度上界为O(nkt),其中n是样本量、k是划分的聚类数、t是迭代次数。当聚类数和迭代次数不变时,K均值的算法消耗时间只跟样本量有关,因此会呈线性增长趋势。

但是当面对海量数据时,k均值算法计算速度慢会产生延时,尤其算法被用于做实时性处理时这种弊端尤为明显。针对K均值的这一问题,很多延伸算法出现了,MiniBatchKMeans就是其中一个典型代表。MiniBatchKMeans使用了一个种名为Mini Batch(分批处理)的方法计算数据点之间的距离。Mini Batch的好处是计算过程中不必使用所有的数据样本,而是从不同类别的样本中抽取一部分样本(而非全部样本)作为代表参与聚类算法过程。由于计算样本量少,所以会相应减少运行时间;但另一方面,由于是抽样方法,抽样样本很难完全代表整体样本的全部特征,因此会带来准确度的小幅度下降,但是并不明显。

谱聚类

大数据背景下,有很多高纬度数据场景,如电子商务交易数据、WEB文本数据日益丰富。高维数据聚类时耗时长、聚类结果准确性和稳定性都不尽如人意。因为,在高维数据,基于距离的相似度计算效率极低;特征值过多在所有维度上存在簇的可能性非常低;由于稀疏性和紧邻特性,基于距离的相似度几乎为0,导致高维空间很难出现数据簇。这时我们可以选着使用子空间聚类,或是降维处理。

子空间聚类算法是在高维数据空间中对传统聚类算法的一种扩展,其思想是选取与给定簇密切相关的维,然后在对应的子空间进行聚类。比如谱聚类就是一种子空间聚类方法,由于选择相关维的方法以及评估子空间的方法需要自定义,因此这种方法对操作者的要求较高。

使用聚类分析中间预处理

  • 图像压缩

用较少的数据量来表示原有的像素矩阵的过程,这个过程称为图像编码。数据图像的显著特点是数据量庞大,需要占用相当大的储存空间,这给图像的存储、计算、传输等带来了不便。因此,现在大多数数字网络下的图像都会经过压缩后再做进一步应用,图像压缩的方法之一便是聚类算法。
在使用聚类算法做图像压缩时,我们会定义K个颜色数(例如128种颜色),颜色数就是聚类类别的数量;K均值聚类算法会把类似的颜色分别放在K个簇中,然后每个簇使用一种颜色来代替原始颜色,那么结果就是有多少个簇,就生成了多少种颜色构成的图像,由此实现图像压缩。

  • 图像分割

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣的目标技术和过程,这是图像处理和分析的关键步骤。图像分割后提取出的目标可以用于图像语义识别,图像搜索等领域。例如从图像中分割出前景人脸信息,然后做人脸识别。聚类算法是图像分割方法的一种,其实施的关键是通过不同区域间明显不同的图像色彩特征做聚类,聚类数量就是要分割的区域的数量。

  • 图像理解

在图像理解中,有一种称为基于区域的提取方法。基于区域的提取方法是在图像分割和对象识别的前提下进行的,利用对象模板、场景分类器等,通过识别对象及对象之间的拓扑关系挖掘语义,生成对应的场景语义信息。例如,先以颜色、形状等特征对分割后的图像区域进行聚类,形成少量BLOB;然后通过CMRM模型计算出BLOB与某些关键词共同出现的概率。

  • 异常检测

异常检测有多种实施方法,其中常用的方法是基于距离的异常检测方法。即使数据集不满足任何特定分布模型,它仍能有效地发现离群点,特别是当空间维度比较高时,算法的效率比基于密度的方法要高得多。算法具体实现时,首先算出数据样本间的距离(如曼哈顿距离、欧氏距离等),然后对数据做预处理后就可以根据距离的定义来检测异常值。
例如,可以使用K-means的聚类可以将离中心店最远的类或者不属于任何一个类的数据点提取出来,然后将其定义为异常值。

聚类算法的选择:

  •  数据为高维数据,那么选取子空间聚类(如谱聚类)

  • 数据量在100万条以内,那么使用k均值较好;如果数据量超过100万条,那么可以考虑使用Mini Batch KMeans

  • 如果数据中存在噪点,那么可以使用基于密度的DBSCAN

  • 如果最求更高的分类准确度,那么选择谱聚类将比K均值准确度更好

python代码实现

import numpy as npimport pandas as pdfrom sklearn.cluster import KMeansfrom sklearn import metricsimport matplotlib.pyplot as pltfrom sklearn.datasets import make_blobs%matplotlib inline# 数据准备data = make_blobs(n_samples=2000, centers=[[1,1], [-1, -1]], cluster_std=0.7, random_state=2018)X = data[0]y = data[1]#设置聚类数量n_clusters = 2# 建立聚类模型对象kmeans = KMeans(n_clusters=n_clusters, random_state=2018)# 训练聚类模型kmeans.fit(X)# 预测聚类模型pre_y = kmeans.predict(X)### 模型效果指标评估 #### 样本距离最近的聚类中心的总和inertias = kmeans.inertia_# 调整后的兰德指数adjusted_rand_s = metrics.adjusted_rand_score(y, pre_y)# 互信息mutual_info_s = metrics.mutual_info_score(y, pre_y)# 调整后的互信息adjusted_mutual_info_s = metrics.adjusted_mutual_info_score(y, pre_y)# 同质化得分homogeneity_s = metrics.homogeneity_score(y, pre_y)# 完整性得分completeness_s = metrics.completeness_score(y, pre_y)# V-measure得分v_measure_s = metrics.v_measure_score(y, pre_y)# 平均轮廓系数silhouette_s = metrics.silhouette_score(X, pre_y, metric='euclidean')# Calinski 和 Harabaz 得分calinski_harabaz_s = metrics.calinski_harabaz_score(X, pre_y)df_metrics = pd.DataFrame([[inertias, adjusted_rand_s,mutual_info_s, adjusted_mutual_info_s, homogeneity_s,completeness_s,v_measure_s, silhouette_s ,calinski_harabaz_s]],                         columns=['ine','tARI','tMI','tAMI','thomo','tcomp','tv_m','tsilh','tc&h'])df_metrics

python聚类分析是什么

## 模型可视化##centers = kmeans.cluster_centers_# 颜色设置colors = ['green', 'pink']# 创建画布plt.figure(figsize=(12,6))titles = ['Real', 'Predict']for j, y_ in enumerate([y, pre_y]):    plt.subplot(1,2, j+1)    plt.title(titles[j])    # 循环读类别    for i in range(n_clusters):        # 找到相同的索引        index_sets = np.where(y_ == i)        # 将相同类的数据划分为一个聚类子集        cluster = X[index_sets]        # 展示样本点        plt.scatter(cluster[:, 0], cluster[:, 1], c=colors[i], marker='.')        if j==1:                  # 簇中心            plt.plot(centers[i][0], centers[i][1], 'o',markerfacecolor=colors[i],markeredgecolor='k', markersize=6)plt.savefig('xx.png')plt.show()

python聚类分析是什么

评估指标解析:

  • inertias:inertias是K均值模型对象的属性,表示样本距离最近的聚类中心的总和,它是作为在没有真实分类结果标签下的非监督式评估指标。该值越小越好,值越小证明样本在类间的分布越集中,即类内的距离越小。

  • adjusted_rand_s:调整后的兰德指数(Adjusted Rand Index),兰德指数通过考虑在预测和真实聚类中在相同或不同聚类中分配的所有样本对和计数对来计算两个聚类之间的相似性度量。调整后的兰德指数通过对兰德指数的调整得到独立于样本量和类别的接近于0的值,其取值范围为[-1, 1],负数代表结果不好,越接近于1越好意味着聚类结果与真实情况越吻合。

  • mutual_info_s:互信息(Mutual InfORMation, MI),互信息是一个随机变量中包含的关于另一个随机变量的信息量,在这里指的是相同数据的两个标签之间的相似度的量度,结果是非负值。

  • adjusted_mutual_info_s:调整后的互信息(Adjusted Mutual Information, AMI),调整后的互信息是对互信息评分的调整得分。它考虑到对于具有更大数量的聚类群,通常MI较高,而不管实际上是否有更多的信息共享,它通过调整聚类群的概率来纠正这种影响。当两个聚类集相同(即完全匹配)时,AMI返回值为1;随机分区(独立标签)平均预期AMI约为0,也可能为负数。

  • homogeneity_s:同质化得分(Homogeneity),如果所有的聚类都只包含属于单个类的成员的数据点,则聚类结果将满足同质性。其取值范围[0,1]值越大意味着聚类结果与真实情况越吻合。

  • completeness_s:完整性得分(Completeness),如果作为给定类的成员的所有数据点是相同集群的元素,则聚类结果满足完整性。其取值范围[0,1],值越大意味着聚类结果与真实情况越吻合。

  • v_measure_s:它是同质化和完整性之间的谐波平均值,v = 2 (均匀性完整性)/(均匀性+完整性)。其取值范围[0,1],值越大意味着聚类结果与真实情况越吻合。

  • silhouette_s:轮廓系数(Silhouette),它用来计算所有样本的平均轮廓系数,使用平均群内距离和每个样本的平均最近簇距离来计算,它是一种非监督式评估指标。其最高值为1,最差值为-1,0附近的值表示重叠的聚类,负值通常表示样本已被分配到错误的集群。

  • calinski_harabaz_s:该分数定义为群内离散与簇间离散的比值,它是一种非监督式评估指标。

感谢各位的阅读,以上就是“python聚类分析是什么”的内容了,经过本文的学习后,相信大家对python聚类分析是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: python聚类分析是什么

本文链接: https://www.lsjlt.com/news/305875.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python聚类分析是什么
    这篇文章主要讲解了“python聚类分析是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python聚类分析是什么”吧!何为聚类分析聚类分析或聚类是对一组对象进行分组的任务,使得同一组(...
    99+
    2023-06-25
  • python数据分析之聚类分析(cluster analysis)
    何为聚类分析 聚类分析或聚类是对一组对象进行分组的任务,使得同一组(称为聚类)中的对象(在某种意义上)与其他组(聚类)中的对象更相似(在某种意义上)。它是探索性数据挖掘的主要任务,也...
    99+
    2024-04-02
  • python聚类算法指的是什么
    这篇文章主要介绍了python聚类算法指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明聚类常用于数据探索或挖掘前期,在没有先验经验的背景下进行探索性分析,也适用于...
    99+
    2023-06-20
  • 怎么用Python进行系统聚类分析
    怎么用Python进行系统聚类分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在进行机器学习时,我们往往要对数据进行聚类分析,聚类,说白了就是把相似的样品点/...
    99+
    2023-06-16
  • matlab聚类分析怎么实现
    在MATLAB中实现聚类分析,可以使用内建的`kmeans`函数。该函数接受一个输入数据集和一个指定的聚类数目作为输入,并返回数据点...
    99+
    2023-09-14
    matlab
  • spss聚类分析怎么操作
    SPSS的聚类分析可以通过以下步骤进行操作:1. 导入数据:打开SPSS软件,导入需要进行聚类分析的数据文件。可以通过菜单栏的“文件...
    99+
    2023-05-22
    spss聚类分析 spss
  • spss聚类分析怎么实现
    SPSS实现聚类分析的步骤如下:1. 打开SPSS软件并加载数据集。2. 在菜单栏中选择“分析”>“分类数据”>“K均值聚类”。3....
    99+
    2023-09-14
    spss
  • Python数据分析案例03——天气K均值聚类分析
    聚类常用的算法肯定是K均值聚类了,本次案例采用陕西的十个地区的天气数据,构建特征,进行聚类分析。 首先数据都装在‘天气数据’这个文件夹里面,如图: 打开其中一个excel,长这个样子    下面开始数据处理 数据预处理  导入包 imp...
    99+
    2023-09-15
    python 数据分析 数据挖掘 pandas numpy
  • 分析总结Python数据化运营KMeans聚类
    内容介绍 以 Python 使用 Keans 进行聚类分析的简单举例应用介绍聚类分析。 聚类分析 或 聚类 是对一组对象进行分组的任务,使得同一组(称为聚类)中的对象(在某种意义上)...
    99+
    2024-04-02
  • python实现层次聚类的方法是什么
    本篇内容介绍了“python实现层次聚类的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!层次聚类算法顾名思义,层次聚类就是一层一层...
    99+
    2023-06-25
  • Python 数据化运营之KMeans聚类分析总结
    目录Python 数据化运营1、内容介绍2、一般应用场景3、聚类的常见方法4、Keans聚类实现 5、聚类的评估指标6、聚类效果可视化7、数据预测Python 数据化运营 1、内容介...
    99+
    2024-04-02
  • 基于spss的聚类分析(Cluster analysis)
    聚类分析是一种无监督学习方法,用于将一组样本分成不同的群组或簇。SPSS(Statistical Package for the S...
    99+
    2023-09-20
    spss
  • 全面解析Kmeans聚类算法(Python)
    Clustering (聚类) 是常见的unsupervised learning (无监督学习)方法,简单地说就是把相似的数据样本分到一组(簇),聚类的过程. 我们并不清楚某一类是什么(通常无标签信...
    99+
    2023-09-06
    python 聚类算法 聚类 无监督学习 机器学习算法
  • 如何在PHP中进行自动分类和聚类分析?
    随着数据量逐渐增加,如何在PHP中进行自动分类和聚类分析成为了许多企业和个人用户的关注点。本文将介绍PHP中的分类和聚类分析技术,以帮助开发者更好地处理大量数据。一、 什么是自动分类和聚类分析?自动分类和聚类分析是一种常见的数据分析技术,可...
    99+
    2023-05-25
    PHP聚类分析 自动分类PHP PHP数据聚类
  • Pandas中的分组聚合是什么
    这篇文章给大家分享的是有关Pandas中的分组聚合是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一:分组 (groupby)对数据集进行分组,然后对每组进行统计分析SQL 能够对数据进行过滤,分组聚合pan...
    99+
    2023-06-27
  • 利用python实现聚类分析K-means算法的详细过程
    K-means算法介绍   K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近...
    99+
    2024-04-02
  • Python线性分类是什么意思
    这篇文章给大家分享的是有关Python线性分类是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。通过约束类的协方差相等,将贝叶斯分类器简化为线性分类器。比较生成模型和判别模型在挑战性分类任务中的性能。在本实...
    99+
    2023-06-29
  • python聚类算法怎么选择
    本篇内容介绍了“python聚类算法怎么选择”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明如果数据集是高维度的,选择谱聚类是子空间的一种...
    99+
    2023-06-20
  • Python层次聚类怎么应用
    本文小编为大家详细介绍“Python层次聚类怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python层次聚类怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。层次聚类和K-means有什么不同?K...
    99+
    2023-07-06
  • java面向对象编程类的内聚性分析
    目录类划分时关于内聚性的问题静态类的设计高内聚类的设计附:面向过程编程中模块的内聚性偶然内聚或巧合内聚(Coincidental)逻辑内聚(Logical):时间内聚(Tempora...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作