精华内容
下载资源
问答
  • 以经济效益数据为例,用聚类分析法对各省市作分类(见spssex-4/全国各省市经济效益数据) 以城镇居民消费资料为例,用聚类分析法对各省市作分类(见spssex-4/城镇居民消费支出资料) Spss中的聚类功能常用的有两种...
  • SPSS聚类分析实例讲解

    2016-05-29 18:38:19
    SPSS聚类分析实例讲解
  • SAS系统讲义-_聚类分析实例
  • 聚类分析案例

    千次阅读 2017-04-01 13:54:00
    利用数据挖掘进行数据分析常用的方法主要有分类、回归分析聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。 分类。分类是找出数据库中一组数据对象的共同特点并按照...

    一、数据挖掘的常用方法

    利用数据挖掘进行数据分析常用的方法主要有分类、回归分析、聚类、关联规则、特征、变化和偏差分析、Web页挖掘等,它们分别从不同的角度对数据进行挖掘。

    分类。分类是找出数据库中一组数据对象的共同特点并按照分类模式将其划分为不同的类,其目的是通过分类模型,将数据库中的数据项映射到某个给定的类别。它可以应用到客户的分类、客户的属性和特征分析、客户满意度分析、客户的购买趋势预测等,如一个汽车零售商将客户按照对汽车的喜好划分成不同的类,这样营销人员就可以将新型汽车的广告手册直接邮寄到有这种喜好的客户手中,从而大大增加了商业机会。

    回归分析。回归分析方法反映的是事务数据库中属性值在时间上的特征,产生一个将数据项映射到一个实值预测变量的函数,发现变量或属性间的依赖关系,其主要研究问题包括数据序列的趋势特征、数据序列的预测以及数据间的相关关系等。它可以应用到市场营销的各个方面,如客户寻求、保持和预防客户流失活动、产品生命周期分析、销售趋势预测及有针对性的促销活动等。

    聚类。聚类分析是把一组数据按照相似性和差异性分为几个类别,其目的是使得属于同一类别的数据间的相似性尽可能大,不同类别中的数据间的相似性尽可能小。它可以应用到客户群体的分类、客户背景分析、客户购买趋势预测、市场的细分等。

    关联规则。关联规则是描述数据库中数据项之间所存在的关系的规则,即根据一个事务中某些项的出现可导出另一些项在同一事务中也出现,即隐藏在数据间的关联或相互关系。在客户关系管理中,通过对企业的客户数据库里的大量数据进行挖掘,可以从大量的记录中发现有趣的关联关系,找出影响市场营销效果的关键因素,为产品定位、定价与定制客户群,客户寻求、细分与保持,市场营销与推销,营销风险评估和诈骗预测等决策支持提供参考依据。

    特征。特征分析是从数据库中的一组数据中提取出关于这些数据的特征式,这些特征式表达了该数据集的总体特征。如营销人员通过对客户流失因素的特征提取,可以得到导致客户流失的一系列原因和主要特征,利用这些特征可以有效地预防客户的流失。

    变化和偏差分析。偏差包括很大一类潜在有趣的知识,如分类中的反常实例,模式的例外,观察结果对期望的偏差等,其目的是寻找观察结果与参照量之间有意义的差别。在企业危机管理及其预警中,管理者更感兴趣的是那些意外规则。意外规则的挖掘可以应用到各种异常信息的发现、分析、识别、评价和预警等方面。

    Web页挖掘。随着Internet的迅速发展及Web 的全球普及, 使得Web上的信息量无比丰富,通过对Web的挖掘,可以利用Web 的海量数据进行分析,收集政治、经济、政策、科技、金融、各种市场、竞争对手、供求信息、客户等有关的信息,集中精力分析和处理那些对企业有重大或潜在重大影响的外部环境信息和内部经营信息,并根据分析结果找出企业管理过程中出现的各种问题和可能引起危机的先兆,对这些信息进行分析和处理,以便识别、分析、评价和管理危机。

    二、数据挖掘的功能

    数据挖掘通过预测未来趋势及行为,做出前摄的、基于知识的决策。数据挖掘的目标是从数据库中发现隐含的、有意义的知识,主要有以下五类功能。

    自动预测趋势和行为:数据挖掘自动在大型数据库中寻找预测性信息,以往需要进行大量手工分析的问题如今可以迅速直接由数据本身得出结论。一个典型的例子是市场预测问题,数据挖掘使用过去有关促销的数据来寻找未来投资中回报最大的用户,其它可预测的问题包括预报破产以及认定对指定事件最可能做出反应的群体。

    关联分析:数据关联是数据库中存在的一类重要的可被发现的知识。若两个或多个变量的取值之间存在某种规律性,就称为关联。关联可分为简单关联、时序关联、因果关联。关联分析的目的是找出数据库中隐藏的关联网。有时并不知道数据库中数据的关联函数,即使知道也是不确定的,因此关联分析生成的规则带有可信度。

    聚类:数据库中的记录可被化分为一系列有意义的子集,即聚类。聚类增强了人们对客观现实的认识,是概念描述和偏差分析的先决条件。聚类技术主要包括传统的模式识别方法和数学分类学。80年代初,Michalski提出了概念聚类技术,其要点是,在划分对象时不仅考虑对象之间的距离,还要求划分出的类具有某种内涵描述,从而避免了传统技术的某些片面性。

    概念描述:概念描述就是对某类对象的内涵进行描述,并概括这类对象的有关特征。概念描述分为特征性描述和区别性描述,前者描述某类对象的共同特征,后者描述不同类对象之间的区别。生成一个类的特征性描述只涉及该类对象中所有对象的共性。生成区别性描述的方法很多,如决策树方法、遗传算法等。

    偏差检测:数据库中的数据常有一些异常记录,从数据库中检测这些偏差很有意义。偏差包括很多潜在的知识,如分类中的反常实例、不满足规则的特例、观测结果与模型预测值的偏差、量值随时间的变化等。偏差检测的基本方法是,寻找观测结果与参照值之间有意义的差别。

    三、数据挖掘实例 – 聚类分析应用之市场细分

    聚类是将数据分类到不同的类或者簇这样的一个过程,所以同一个簇中的对象有很大的相似性,而不同簇间的对象有很大的相异性。

    从统计学的观点看,聚类分析是通过数据建模简化数据的一种方法。传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。

    从机器学习的角度讲,簇相当于隐藏模式。聚类是搜索簇的无监督学习过程。与分类不同,无监督学习不依赖预先定义的类或带类标记的训练实例,需要由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记。聚类是观察式学习,而不是示例式的学习。

    从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

    聚类分析的核心思想就是物以类聚,人以群分。在市场细分领域,消费同一种类的商品或服务时,不同的客户有不同的消费特点,通过研究这些特点,企业可以制定出不同的营销组合,从而获取最大的消费者剩余,这就是客户细分的主要目的。在销售片区划分中,只有合理地将企业所拥有的子市场归成几个大的片区,才能有效地制定符合片区特点的市场营销战略和策略。金融领域,对基金或者股票进行分类,以选择分类投资风险。

    下面以一个汽车销售的案例来介绍聚类分析在市场细分中的应用。

     

    汽车销售聚类分析

     

    商业目标

    业务理解:数据名称《汽车销售.csv》。该案例所用的数据是一份关于汽车的数据,该数据文件包含销售值、订价以及各种品牌和型号的车辆的物理规格。订价和物理规格可以从 edmunds.com 和制造商处获得。定价为美国本土售价。如下:

     

    美国本土售价

     

    表1:数据视图

    业务目标:对市场进行准确定位,为汽车的设计和市场份额预测提供参考。

    数据挖掘目标:通过聚类的方式对现有的车型进行分类。

    数据准备

    通过数据探索对数据的质量和字段的分布进行了解,并排除有问题的行或者列优化数据质量。

     

    汽车销售销售数据

    第一步,我们使用统计节点审核数据的质量,从审核结果中我们发现存在缺失的数据,如下图所示:

     

     

    审核后的数据

    第二步,对缺失的数据进行处理,我们选择使用缺失填充节点删除这些记录。配置如下:

     

     

    删除记录配置

     

    建模

    我们选择层次聚类进行分析,尝试根据各种汽车的销售量、价格、引擎、马力、轴距、车宽、车长、制动、排量、油耗等指标对其分类。

    因为层次聚类不能自动确定分类数量,因此需要我们以自定义的方式规定最后聚类的类别数。层次聚类节点配置如下(默认配置):

     

    层次聚类节点配置

    可以使用交互表或者右击层次聚类节点查看聚类的结果,如下图所示:

     

     

    使用交互表或者右击层次聚类节点查看聚类的结果

    再使用饼图查看每个类的大小,结果如下:饼图结果

     

     

    从图中可见,分成的三个类样本数差异太大,cluster_0和cluster_1包含的样本数都只有1,这样的分类是没有意义的,因此需要重新分类。我们尝试在层次聚类节点的配置中指定新的聚类方法:完全。新的聚类样本数分布如下:新的聚类样本数分布

     

     

    cluster_0、 cluster_1、cluster_2的样本数分别为:50、9、93。条形图记数

     

     

    执行后输出树状/冰柱图,可以从上往下看,一开始是一大类,往下走就分成了两类,越往下分的类越多,最后细分到每一个记录是一类,如下所示:树状图

     

     

    我们可以再使用条形图查看每类的销售量、平均价格,如下图所示:条形图求和

     

     

    每类总销量分布图每类总销量分布图

     

     

    每类平均销量分布图每类平均销量分布图

     

     

    每类平均价格分布图

     

    我们再看一下每类的销售额分布情况。首先,我们需要使用Java代码段节点或者派生节点生成销售额字段,配置如下:每类平均价格分布图配置

     

    再使用饼图查看销售额分布情况,cluster_0、 cluster_1、cluster_2的市场份额分别为:32.39%、0.53%和67.08%,如下图所示:市场份额

     

     

     

    案例小结

    通过这个案例,大家可以发现聚类分析确实很简单。进行聚类计算后,主要通过图形化探索的方式评估聚类合理性,以及在确定聚类后,分析每类的特征。

    转载于:https://www.cnblogs.com/zourui4271/p/6655699.html

    展开全文
  • R语言聚类分析案例

    千次阅读 2020-09-26 10:58:42
    R语言聚类分析案例 在 mclust 包中包含一个 diabetes 数据集(加载 mclust 包后,可通过代码“head(diabetes)”查看数据的前 5 行,通过“?diabetes”查看每个变量的具体意义),该数据集包含 145 名糖尿病患者的三...

    R语言聚类分析案例

    在 mclust 包中包含一个 diabetes 数据集(加载 mclust 包后,可通过代码“head(diabetes)”查看数据的前 5 行,通过“?diabetes”查看每个变量的具体意义),该数据集包含 145 名糖尿病患者的三个指标的测量数据,针对该数据集,请进行如下分析:
    (1)只考虑 3 个指标数据,使用 k-means 聚类对数据进行聚类分析,找到合适的聚类数目,并对聚类效果进行评估;

    ######################第五题 聚类分析############################################
    library(mclust)
    library(MASS)
    data(diabetes)
    diabetes=diabetes#导入数据
    head(diabetes)#观察前五行
    ?diabetes
    

    结果如下:

    > head(diabetes)#观察前五行
       class glucose insulin sspg
    1 Normal      80     356  124
    2 Normal      97     289  117
    3 Normal     105     319  143
    4 Normal      90     356  199
    5 Normal      90     323  240
    6 Normal      86     381  157
    

    进行聚类:

    km<-kmeans(diabetes[,2:4], 3, nstart = 1) 
    km 
    diabetes$cluster<-km$cluster#赋值进去
    diabetes
    

    聚类结果如下:

    > km 
    K-means clustering with 3 clusters of sizes 33, 86, 26
    
    Cluster means:
        glucose   insulin      sspg
    1 107.42424  531.5455 323.66667
    2  91.39535  359.2791 166.72093
    3 241.65385 1152.8846  75.69231
    
    Clustering vector:
      1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 
      2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2 
     31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60 
      2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2 
     61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90 
      2   2   2   2   2   2   2   2   1   2   1   2   2   2   2   1   2   2   2   2   2   1   2   2   1   1   1   1   1   1 
     91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 
      1   1   1   1   1   2   1   1   1   1   1   1   2   2   2   1   1   1   1   2   1   2   3   3   1   3   3   3   3   3 
    121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 
      3   3   3   1   3   3   3   3   3   3   1   3   3   1   1   1   1   3   3   3   3   3   3   3   3 
    
    Within cluster sum of squares by cluster:
    [1] 1058399.6  592025.2 1738796.1
     (between_SS / total_SS =  80.5 %)
    
    Available components:
    
    [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"    "size"        
    [8] "iter"         "ifault"      
    
    
    > diabetes
           class glucose insulin sspg cluster
    1     Normal      80     356  124       2
    2     Normal      97     289  117       2
    3     Normal     105     319  143       2
    4     Normal      90     356  199       2
    5     Normal      90     323  240       2
    

    由:Within cluster sum of squares by cluster:[1] 1058399.6 592025.2 1738796.1 (between_SS / total_SS = 80.5 %) 发现聚类效果良好,与原类别标签也较为一致。

    (2)在使用系统聚类时,使用不同的距离得到的聚类结果有何异同?

    基本思想: 是一类将数据所对应研究对象进行分类的统计方法。它是将个体 (样品)或者对象 (变量)按相似程度(距离远近)划分类别,使得同一类中的元素之间相似性比其他类的元素的相似性更强。目的在于使类间元素的同质性最大化和类与类间元素的异质性最大化。
    Q 型聚类分析是指对样本进行聚类,R 型聚类分析是指对变量进行聚类分析。
    基本方法:
    ①系统聚类法:最短距离法、最长距离法、中间距离法、类平均法和离差平方和法等
    聚集——开始时将 n 个样品各自作为一类,并规定样品之间的距离和类与类之间的距离,然后将距离最近的两类合并成一个新类,计算新类与其他类的距离;重复进行两个最近类的合并,每次减少一类,直至所有的样品合成一类。
    分割——由 n 个样品组成一类开始,按某种最优准则将它分割成两个尽可能远的子类,再
    用同样准则将每一子类进一步地分割成两类,从中选一个分割最优地子类,这样将类数由
    两类增加到三类。如此下去,直至所有 n 个样品各自为一类或采用某种停止规则。

    
    d <- dist(scale(diabetes[,2:4]))#建立距离矩阵
    
    #不同方法对比
    method=c("complete", "average", "centroid", "ward.D")
    alldata<-data.frame()
    hc<-hclust(d,"complete"); 
    class1<-cutree(hc, k=5) #分成3类 
    
    hc<-hclust(d,"average"); 
    class2<-cutree(hc, k=5) #分成3类 
    
    hc<-hclust(d,"centroid"); 
    class3<-cutree(hc, k=5) #分成3类 
    
    hc<-hclust(d,"ward.D"); 
    class4<-cutree(hc, k=5) #分成3类 
    
    alldata<-data.frame(diabetes,class1,class2,class3,class4)#合并为一个数据框
    alldata
    

    聚类结果:

    > alldata
           class glucose insulin sspg cluster class1 class2 class3 class4
    1     Normal      80     356  124       2      1      1      1      1
    2     Normal      97     289  117       2      1      1      1      1
    3     Normal     105     319  143       2      1      1      1      1
    4     Normal      90     356  199       2      1      1      1      2
    5     Normal      90     323  240       2      1      1      1      2
    6     Normal      86     381  157       2      1      1      1      1
    7     Normal     100     350  221       2      1      1      1      2
    

    可发现系统聚类法,使用不同的距离方法的时候,聚类结果有所差异,但差异不算特别大。对于两端值分类结果较为良好,但对于类别之间中间值分类较为差。

    (3)该数据集的分布情况适合使用密度聚类吗?如果使用密度聚类,聚类的效果是否会比上述的两种聚类方法效果更好?

    密度聚类也称为基于密度的聚类,基本出发点是假设聚类结果可以通过样本分布
    的稠密程度来确定,主要目标是寻找被低密度区域分离的高稠密区域。它有以下优点:
    ①相较于 K-means 聚类,DBSCAN 不需要预先声明聚类数量,即聚类数量会根据领域和 MinPts 参数动态确定,从而能更好体现数据的簇分布的原始特征点,但是根据不同参数会得到不同的聚类结果。
    ②DBSCAN 密度聚类可以找出任何形状的聚类,适用于数据分布形状不规则的数据集。

    library(fpc)
    model<-dbscan(diabetes[,2:4],eps=50,MinPts=5)
    diabetes$dbscan<-model$cluster
    
    ## 可视化在不同的eps情况下,聚类的情况
    eps <- c(40,50,60,70)
    name <- c("one","two","three","four")
    dbdata <- diabetes[,2:4]
    for (ii in 1:length(eps)) {
      modeli <- dbscan(diabetes[,2:4],eps=eps[ii],MinPts=5)
      dbdata[[name[ii]]] <- as.factor(modeli$cluster)
      
    }
    head(dbdata)
    

    聚类结果如下:

    > head(dbdata)
      glucose insulin sspg one two three four
    1      80     356  124   1   1     1    1
    2      97     289  117   1   1     1    1
    3     105     319  143   1   1     1    1
    4      90     356  199   1   1     1    1
    5      90     323  240   1   1     1    1
    6      86     381  157   1   1     1    1
    ........
    138     188     958  100   0   0     2    3
    139     339    1354   10   0   0     0    0
    140     265    1263   83   0   0     0    0
    141     353    1428   41   0   0     0    2
    142     180     923   77   0   0     2    3
    

    可发现,自动聚类成了3-4类,前三种都是划分为3类,故分为3类较为合理。

    展开全文
  • weka_ 聚类分析实例演练

    万次阅读 多人点赞 2016-07-21 11:56:10
    weka_ 聚类分析实例演练 创建时间: 2016/7/13 10:33 更新时间: 2016/7/14 9:49 作者: 354467546@qq.com  1、数据准备   2、聚类原理  聚类分析中的“类”(cluster)和前面分类的“类”(class)...
     
    

    weka_ 聚类分析实例演练

    1、数据准备: 下载链接  http://download.csdn.net/detail/xuxurui007/6753847

    2、聚类原理
         聚类分析中的“类”(cluster)和前面分类的“类”(class)是不同的,对cluster更加准确的翻译应该是“簇”。聚类的任务是把所有的实例分配到若干的簇,使得同一个簇的实例聚集在一个簇中心的周围,它们之间距离的比较近;而不同簇实例之间的距离比较远。对于由数值型属性刻画的实例来说,这个距离通常指欧氏距离。
         现在我们对前面的“bank data”作聚类分析,使用最常见的K均值(K-means)算法。下面我们简单描述一下K均值聚类的步骤:     1)K均值算法首先随机的指定K个簇中心;
              2)将每个实例分配到距它最近的簇中心,得到K个簇;
              3)分别计算各簇中所有实例的均值,把它们作为各簇新的簇中心。
              4)重复1)和2),直到K个簇中心的位置都固定,簇的分配也固定。
         上述K均值算法只能处理数值型的属性,遇到分类型的属性时要把它变为若干个取值0和1的属性。WEKA将自动实施这个分类型到数值型的变换,而且WEKA会自动对数值型的数据作标准化。这样得到的数据文件为“bank.arff”,含600条实例。

    3、实现步骤
         (1)用“Explorer”打开刚才得到的“bank.arff”(600条实例数据)。




         (2)切换到“Cluster”,  点击“Choose”按钮选择“SimpleKMeans”,这是WEKA中实现K均值的算法。

        
         (3)点击旁边的文本框, 修改“numClusters”为6,说明我们希望把这600条实例聚成6类,即K=6; 下面的 “seed”参数 是要设置一个 随机种子  ,依此产生一个 随机数  用来得到K均值算法中第一次给出的K个簇中心的位置。 我们不妨暂时让它就为10,点击OK。

         (4)选中“Cluster Mode”的“Use training set”(使用训练集),选择“Store clusters for visualization”(存储聚类可视化),点击“Start”按钮。


         (5)观察右边“Clusterer output”给出的聚类结果。也可以在左下角“Result list”中这次产生的结果上点右键,“View in separate window”在新窗口中浏览结果。
     



    3、结果分析
    (1)首先我们注意到结果中有这么一行(误差平方和):  Within cluster sum of squared errors: 1604.7416693522332
    这是评价聚类好坏的标准,数值越小说明 同一簇 实例之间的距离越小。


         实际上如果把“seed”参数改一下,得到的这个数值就可能会不一样, 例如 将“seed”取200,就得到  :
     Within cluster sum of squared errors: 1555.6241507629218  


    (也许实际得到的值不一样)应该取后面这个,当然再尝试几个seed,这个数值可能会更小 (该数值越小,说明同一簇实例直接的距离越小,聚类的结果也就越好。多次试验,找到该值趋于最小的值(实例容量越大,越难找),即得到了本次实验最好的方案结果) 

         (2) 接下来“Cluster centroids:”之后列出了各个簇中心的位置。对于数值型的属性,簇中心就是它的均值(Mean);分类型的就是它的众数(Mode), 也就是说这个属性上取值为众数值的实例最多。对于数值型的属性,还给出了它在各个簇里的标准差(Std Devs)。

         (3) 最后的“  Clustered Instances ”是 各个簇中实例的数目及百分比。

         (4)为了观察可视化的聚类结果,我们在左下方“Result list”列出的结果上右击,点“  Visualize cluster assignments ”。
     

         弹出的窗口给出了  各实例的散点图 。最上方的两个框是选择横坐标和纵坐标,第二行的“color”是散点图着色的依据,默认是根据不同的簇“Cluster”给实例标上不同的颜色。 可以在这里点“Save”把聚类结果保存成ARFF文件。
    result.arff
      
      

         在这个新的ARFF文件中,“instance_number”属性表示某实例的编号,“Cluster”属性表示聚类算法给出的该实例所在的簇。
    result.arff





    展开全文
  • WEKA聚类分析实例代码

    2014-11-27 18:50:30
    weka智能分析示例代码,主要实现了聚类分析功能。
  • 聚类分析 杨威 yangweipyl@163.com 人以类聚,物以群分对事物进行分类,是人们认识事物 的出发点,也是人们认识世界的一种重要方法因此,分类学 已成为人们认识世界的一门基础学科 聚类分析又称群分析,它是研究(样品或...
  • python 文本聚类分析案例说明摘要1、结巴分词2、去除停用词3、生成tfidf矩阵4、K-means聚类5、获取主题词 / 主题词团 说明 实验要求:对若干条文本进行聚类分析,最终得到几个主题词团。 实验思路:将数据进行预处理...
  • # scoding=utf-8# Agglomerative Hierarchical Clustering(AHC)import pylab as plfrom operator import itemgetterfrom collections import OrderedDict,Counterpoints = [[int(eachpoint.split('#')[0]), int(each...

    # scoding=utf-8

    # Agglomerative Hierarchical Clustering(AHC)

    import pylab as pl

    from operator import itemgetter

    from collections import OrderedDict,Counter

    points = [[int(eachpoint.split('#')[0]), int(eachpoint.split('#')[1])] for eachpoint in open("points","r")]

    # 初始时每个点指派为单独一簇

    groups = [idx for idx in range(len(points))]

    # 计算每个点对之间的距离

    disP2P = {}

    for idx1,point1 in enumerate(points):

    for idx2,point2 in enumerate(points):

    if (idx1 < idx2):

    distance = pow(abs(point1[0]-point2[0]),2) + pow(abs(point1[1]-point2[1]),2)

    disP2P[str(idx1)+"#"+str(idx2)] = distance

    # 按距离降序将各个点对排序

    disP2P = OrderedDict(sorted(disP2P.iteritems(), key=itemgetter(1), reverse=True))

    # 当前有的簇个数

    groupNum = len(groups)

    # 过分合并会带入噪音点的影响,当簇数减为finalGroupNum时,停止合并

    finalGroupNum = int(groupNum*0.1)

    while groupNum > finalGroupNum:

    # 选取下一个距离最近的点对

    twopoins,distance = disP2P.popitem()

    pointA = int(twopoins.split('#')[0])

    pointB = int(twopoins.split('#')[1])

    pointAGroup = groups[pointA]

    pointBGroup = groups[pointB]

    # 当前距离最近两点若不在同一簇中,将点B所在的簇中的所有点合并到点A所在的簇中,此时当前簇数减1

    if(pointAGroup != pointBGroup):

    for idx in range(len(groups)):

    if groups[idx] == pointBGroup:

    groups[idx] = pointAGroup

    groupNum -= 1

    # 选取规模最大的3个簇,其他簇归为噪音点

    wantGroupNum = 3

    finalGroup = Counter(groups).most_common(wantGroupNum)

    finalGroup = [onecount[0] for onecount in finalGroup]

    dropPoints = [points[idx] for idx in range(len(points)) if groups[idx] not in finalGroup]

    # 打印规模最大的3个簇中的点

    group1 = [points[idx] for idx in xrange(len(points)) if groups[idx]==finalGroup[0]]

    group2 = [points[idx] for idx in xrange(len(points)) if groups[idx]==finalGroup[1]]

    group3 = [points[idx] for idx in xrange(len(points)) if groups[idx]==finalGroup[2]]

    pl.plot([eachpoint[0] for eachpoint in group1], [eachpoint[1] for eachpoint in group1], 'or')

    pl.plot([eachpoint[0] for eachpoint in group2], [eachpoint[1] for eachpoint in group2], 'oy')

    pl.plot([eachpoint[0] for eachpoint in group3], [eachpoint[1] for eachpoint in group3], 'og')

    # 打印噪音点,黑色

    pl.plot([eachpoint[0] for eachpoint in dropPoints], [eachpoint[1] for eachpoint in dropPoints], 'ok')

    pl.show()

    运行效果截图如下:

    20151120112746488.png?20151020112759

    希望本文所述对大家Python程序设计有所帮助。

    article_wechat2021.jpg?1111

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!

    展开全文
  • 案例来自宋天龙老师的《python数据分析与数据化运营》第7章,主要介绍如何通过平均轮廓系数确定KMeans的最佳k值,将广告渠道数据划分类别,用雷达图展示各类别的特征差异,并对各类别广告渠道的广告效果进行深入分...
  • 模式识别 聚类分析 模糊聚类分析 下载有用 请给个评价
  • 聚类分析实例-标注聚类中心

    千次阅读 2018-08-12 11:37:20
    1、准备数据集 set.seed(2) #设置随机数种子 x = matrix(rnorm(50*2),ncol=2) #生成50X2...x[1:25,2] = x[1:25,2] -4 #构建不同的聚类 2、创建聚类模型 km.out = kmeans(x,2,nstart=20) km.out$cluster 输出...
  • 聚类分析实例详解.doc

    2009-04-22 15:51:46
    简述聚类分析的背景、分析结果以及怎么样分析所得结果
  • 【数据挖掘】聚类分析实例

    千次阅读 2020-04-26 12:36:24
    本文,我们将使用划分方法中的k-均值算法和层次聚类方法以一个实例进行完整的聚类分析演示。 1. 问题描述 例题: 为研究我国31个省、市、自治区2007年的城镇居民生活消费的规律,根据调查资料作区域消费类型划分。...
  • 聚类分析案例:探究用户对物品类别的喜好细分降维 数据如下: order_products__prior.csv:订单与商品信息 字段:order_id,product_id, add_to_cart_order, reordered products.csv:商品信息 字段:...
  • #(1)对于K均值聚类,我们需要给定类别的个数n_cluster,默认值为8; #(2)max_iter为迭代的次数,这里设置最大迭代次数为300; #(3)n_init设为10意味着进行10次随机初始化,选择效果最好的一种来作为模型; ...
  • R语言混合型数据聚类分析案例

    千次阅读 2016-11-20 12:16:57
    利用聚类分析,我们可以很容易地看清数据集中样本的分布情况。以往介绍聚类分析的文章中通常只介绍如何处理连续型变量,这些文字并没有过多地介绍如何处理混合型数据(如同时包含连续型变量、名义型变量和顺序型变量...
  • 使用Pycluster包进行聚类分析实例

    千次阅读 2015-06-03 21:33:46
    人类在几千年前就认识到了所谓的聚类和分类,是用来认知和描述万事万物之间关系的主要方法。不论是否受过高等教育,聚类和分类的思想都根深蒂固的在人类的思想中。Pycluster包是东京大学医学研究所,人类基因研究...
  • 什么是聚类分析聚类分析方法的类别

    万次阅读 多人点赞 2019-07-03 21:09:55
    聚类分析是指将数据对象的集合分组为由类似的对象组成的多个类的分析过程。 基本概念 聚类(Clustering)就是一种寻找数据之间内在结构的技术。聚类把全体数据实例组织成一些相似组,而这些相似组被称作簇。处于...
  • # kmeans 算法 kmeans.fit(train_x) predict_y = kmeans.predict(train_x) # 合并聚类结果,插入到原数据中 result = pd.concat((data,pd.DataFrame(predict_y)),axis=1) result.rename({0:u'聚类结果'},axis=1,in...
  • 同你分享1个完整的聚类分析案例

    千次阅读 2020-02-08 13:30:00
    这篇文章从对聚类的感性认识到聚类算法的实现:k个初始中心点的选择,中心点的迭代,直到算法收敛得到聚类结果。但有几个问题需要回答:如何判断数据是否适合聚类?k类是如何确定的?遇到数据集小的...
  • 聚类分析在各行各业应用十分常见,而顾客细分是其最常见的分析需求,顾客细分总是和聚类分析挂在一起。 顾客细分,关键问题是找出顾客的特征,一般可从顾客自然特征和消费行为入手,在大型统计分析工具出现之前,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,325
精华内容 12,530
关键字:

聚类分析案例