精华内容
下载资源
问答
  • python实现聚类评价指标

    千次阅读 2020-08-11 21:14:59
    聚类评价指标准确率ACC和互信息NMI 版本1 # -*- coding:utf-8 -*- import math import numpy as np from sklearn import metrics def cluster_acc(y_true, y_pred): D = max(y_pred.max(), y_true.max()) + 1 w = ...

    聚类的评价指标准确率ACC和互信息NMI
    版本1

    # -*- coding:utf-8 -*-
    
    import math
    import numpy as np
    from sklearn import metrics
    def cluster_acc(y_true, y_pred):
        D = max(y_pred.max(), y_true.max()) + 1
        w = np.zeros((D, D))
        for i in range(y_pred.size):
            w[y_pred[i], y_true[i]] += 1
        from scipy.optimize import linear_sum_assignment
        ind = np.transpose(np.asarray(linear_sum_assignment(w.max() - w)))
        acc = sum([w[i, j] for i, j in ind]) / y_pred.size
        return acc
    def cluster_nmi(y_true,y_pred):
        #样本点数
        toty_truel = len(y_true)
        y_true_ids = set(y_true)
        y_pred_ids = set(y_pred)
        #互信息计算
        MI = 0
        eps = 1.4e-45
        for idy_true in y_true_ids:
            for idy_pred in y_pred_ids:
                idy_trueOccur = np.where(y_true==idy_true)
                idy_predOccur = np.where(y_pred==idy_pred)
                idy_truey_predOccur = np.intersect1d(idy_trueOccur,idy_predOccur)
                px = 1.0*len(idy_trueOccur[0])/toty_truel
                py = 1.0*len(idy_predOccur[0])/toty_truel
                pxy = 1.0*len(idy_truey_predOccur)/toty_truel
                MI = MI + pxy*math.log(pxy/(px*py)+eps,2)
        # 标准化互信息
        Hx = 0
        for idy_true in y_true_ids:
            idy_trueOccurCount = 1.0*len(np.where(y_true==idy_true)[0])
            Hx = Hx - (idy_trueOccurCount/toty_truel)*math.log(idy_trueOccurCount/toty_truel+eps,2)
        Hy = 0
        for idy_pred in y_pred_ids:
            idy_predOccurCount = 1.0*len(np.where(y_pred==idy_pred)[0])
            Hy = Hy - (idy_predOccurCount/toty_truel)*math.log(idy_predOccurCount/toty_truel+eps,2)
        MIhy_truet = 2.0*MI/(Hx+Hy)
        return MIhy_truet
    
    if __name__ == '__main__':
        y_true = np.array([1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3])# 真实
        y_pred = np.array([1,2,1,1,1,1,1,2,2,2,2,3,1,1,3,3,3])# 预测
        print(cluster_acc(y_true,y_pred))
        print (cluster_nmi(y_true,y_pred))
        print (metrics.normalized_mutual_info_score(y_true,y_pred,average_method='arithmetic'))

    版本2

    import numpy as np
    from sklearn import metrics
    
    # L1:真实标签,L2:预测标签
    def cluster_acc(L1, L2):
        sum = np.sum(L1[:]==L2[:])
        return sum/len(L2)
    
    
    def cluster_nmi(L1, L2):
        return metrics.normalized_mutual_info_score(L1, L2)

    参考链接
    聚类的性能度量

    展开全文
  • [Python聚类] K-Means聚类算法分类

    千次阅读 2018-06-10 15:01:11
    根据数据将客户分类成不同客户群,并评价这些客户群的价值。 数据示例 部分餐饮客户的消费行为特征数据如下: 方法 采用K-Means聚类算法,设定聚类个数为3,最大迭代次数为500次,距离函数取欧式距离。 ...

    根据数据将客户分类成不同客户群,并评价这些客户群的价值。

    数据示例

    部分餐饮客户的消费行为特征数据如下:
    R最近一次消费时间间隔
    F消费频率
    M消费总金额
    这里写图片描述

    方法

    采用K-Means聚类算法,设定聚类个数为3,最大迭代次数为500次,距离函数取欧式距离。

    代码实现

    #-*- coding: utf-8 -*-
    #使用K-Means算法聚类消费行为特征数据
    
    import pandas as pd
    
    #参数初始化
    inputfile = '../data/consumption_data.xls' #销量及其他属性数据
    outputfile = '../tmp/data_type.xls' #保存结果的文件名
    k = 3 #聚类的类别
    iteration = 500 #聚类最大循环次数
    data = pd.read_excel(inputfile, index_col = 'Id') #读取数据
    data_zs = 1.0*(data - data.mean())/data.std() #数据标准化
    
    from sklearn.cluster import KMeans
    model = KMeans(n_clusters = k, n_jobs = 4, max_iter = iteration) #分为k类,并发数4
    model.fit(data_zs) #开始聚类
    
    #简单打印结果
    r1 = pd.Series(model.labels_).value_counts() #统计各个类别的数目
    r2 = pd.DataFrame(model.cluster_centers_) #找出聚类中心
    r = pd.concat([r2, r1], axis = 1) #横向连接(axis=0是纵向),得到聚类中心对应的类别下的数目
    r.columns = list(data.columns) + [u'类别数目'] #重命名表头
    print(r)
    
    #详细输出原始数据及其类别
    r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1)  #详细输出每个样本对应的类别
    r.columns = list(data.columns) + [u'聚类类别'] #重命名表头
    r.to_excel(outputfile) #保存结果
    
    
    def density_plot(data): #自定义作图函数
      import matplotlib.pyplot as plt
      plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
      plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
      p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False) 
      #data有3列,所以有3个子图,p[0],p[1],p[2]
      [p[i].set_ylabel(u'密度') for i in range(k)] #设置子y轴标签(默认为density)
      plt.legend()
      return plt
    
    #作出类别1、类别2和类别3的概率密度图,并保存
    pic_output = '../tmp/pd_' #概率密度图文件名前缀
    for i in range(k):
      density_plot(data[r[u'聚类类别']==i]).savefig(u'%s%s.png' %(pic_output, i))   #r[u'聚类类别']==i结果为布尔值

    结果分析

    这里写图片描述
    分群1的概率密度函数图
    分群1特点:R间隔相对较小,主要集中在0-30天;消费次数集中在10-25次;消费金额在500-2000。
    这里写图片描述
    分群2的概率密度函数图
    分群2特点:R间隔主要分布在0-30天;消费次数集中在0-12次;消费金额在0-1800。

    这里写图片描述
    分群3的概率密度函数图
    分群3特点:R间隔主要分布在30-80天;消费次数集中在0-15次;消费金额在0-2000。

    对比分析
    分群1时间间隔较短,消费次数多,而且消费金额较大,是高消费、高价值人群。
    分群2的时间间隔、消费次数和消费金额处于中等水平,代表着一般客户。
    分群3的时间间隔较长,消费次数较少,消费金额也不是特别高,是价值较低的客户群体。

    展开全文
  • python聚类算法实战详细笔记 (python3.6+(win10、Linux)) 一、基本概念: 1、计算TF-DIF TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。 字词的重要性随着它在...
    python聚类算法实战详细笔记 (python3.6+(win10、Linux))


    一、基本概念:
        1、计算TF-DIF

    TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
    字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
    TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,
    则认为此词或者短语具有很好的类别区分能力,适合用来分类。TFIDF实际上是:TF * IDF,TF词频(Term Frequency),
    IDF逆向文件频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。
    IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。
        2、K-means聚类计算
    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,
    它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。
    K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。
    算法采用误差平方和准则函数作为聚类准则函数。


    二、python3.5 3.6环境配置
        1、
    安装了VS2015;
        2、在Python3.5安装路径中有一个Scripts文件夹,里面有pip.exe或者类似的可执行文件,安装一下;
        3、下载相对应的whl安装包,下载地址http://www.lfd.uci.edu/~gohlke/pythonlibs/;
    下载:1)numpy-1.12.1+mkl-cp36-cp36m-win32.whl
         2)scipy-0.19.0-cp36-cp36m-win32.whl
         3)scikit_learn-0.18.1-cp36-cp36m-win32.whl
        4、安装, 下载好以后,进入whl文件所在文件夹,进入cmd,输入命令: 
         1)pip install numpy-1.12.1+mkl-cp36-cp36m-win32.whl 回车;显示successful,不要关闭cmd;
         2)pip install scipy-0.19.0-cp36-cp36m-win32.whl 回车;显示successful,不要关闭cmd;
         3)pip install scikit_learn-0.18.1-cp36-cp36m-win32.whl 回车;显示successful,不要关闭cmd;
        5、验证一下,输入命令:  输入import numpy 回车 无异常,输入import scipy 回车 无异常,输入import sklearn 回车 无异常
       
        环境配置成功
    三、文本聚类算法步骤
       本次目标是对海量淘宝商品标题进行分类
        1、准备数据
    (5000条淘宝商品标题)
       a、采集
       b、手工准备
       范本: https://pan.baidu.com/s/1eR4V77W (标题原文5000行【文本文件】)
        2、初步加工
       a、中文分词
       b、手工处理
       范本: https://pan.baidu.com/s/1mi4Z9wO (分词后的标题5000行【文本文件】)
        3、计算TF-IDF代码如下:
            代码如下

    ============================ tfidf.py begin====================================================
    # coding=utf-8    

    import time            
    import re            
    import os    
    import sys  
    import codecs  
    import shutil  
    from sklearn import feature_extraction    
    from sklearn.feature_extraction.text import TfidfTransformer    
    from sklearn.feature_extraction.text import CountVectorizer  
     
    if __name__ == "__main__":  
       corpus = [] #文档预料 空格连接  
     
       #读取预料 一行预料为一个文档  
       aa = 0
       for line in open('D:/pyfenlei/5000/p1.txt', 'r').readlines():  
    # print (line) 
    # print(aa)
    aa = aa +1
    if (line.strip()):
       corpus.append(line.strip())  
       #print corpus  
       time.sleep(5)  
         
       #将文本中的词语转换为词频矩阵 矩阵元素a[i][j] 表示j词在i类文本下的词频  
       vectorizer = CountVectorizer()  
     
       #该类会统计每个词语的tf-idf权值  
       transformer = TfidfTransformer()  
     
       #第一个fit_transform是计算tf-idf 第二个fit_transform是将文本转为词频矩阵  
       tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))  
     
       #获取词袋模型中的所有词语    
       word = vectorizer.get_feature_names()  
     
       #将tf-idf矩阵抽取出来,元素w[i][j]表示j词在i类文本中的tf-idf权重  
       weight = tfidf.toarray()  
     
       resName = "D:/pyfenlei/5000/p1.tfidf"  
       result = codecs.open(resName, 'w', 'utf-8')  
       for j in range(len(word)):  
    result.write(word[j] + ' ')  
       result.write('\r\n\r\n')  
     
       #打印每类文本的tf-idf词语权重,第一个for遍历所有文本,第二个for便利某一类文本下的词语权重    
       for i in range(len(weight)):  
    print ("-------这里输出第",i,u"类文本的词语tf-idf权重------")
    for j in range(len(word)):  
       result.write(str(weight[i][j]) + ' ')  
    result.write('\r\n\r\n')  
     
       result.close()
    ============================ tfidf.py end======================================================  
    计算结果https://pan.baidu.com/s/1nuOujgP  (TF-IDF权重值5000行【文本文件】)


        4、计算K-means代码如下(暂定聚40个类)
            代码如下
    ============================ Kmeans.py begin===================================================
    # coding=utf-8    
    """  
    #K-means  
    """    
       
    import time            
    import re            
    import os    
    import sys  
    import codecs  
    import shutil  
    import numpy as np  
    from sklearn import feature_extraction    
    from sklearn.feature_extraction.text import TfidfTransformer    
    from sklearn.feature_extraction.text import CountVectorizer    
     
    if __name__ == "__main__":  
         
       corpus = []  
         
       #读取预料 一行预料为一个文档  
       for line in open('D:/pyfenlei/5000/p1.txt', 'r').readlines():  
    # print (line)
    corpus.append(line.strip())  
       #print corpus  
       #time.sleep(1)  
         
       #将文本中的词语转换为词频矩阵 矩阵元素a[i][j] 表示j词在i类文本下的词频  
       vectorizer = CountVectorizer()  
     
       #该类会统计每个词语的tf-idf权值  
       transformer = TfidfTransformer()  
     
       #第一个fit_transform是计算tf-idf 第二个fit_transform是将文本转为词频矩阵  
       tfidf = transformer.fit_transform(vectorizer.fit_transform(corpus))  
     
       #获取词袋模型中的所有词语    
       word = vectorizer.get_feature_names()  
     
       #将tf-idf矩阵抽取出来,元素w[i][j]表示j词在i类文本中的tf-idf权重  
       weight = tfidf.toarray()  


       from sklearn.cluster import KMeans  
       clf = KMeans(n_clusters=40)  
       s = clf.fit(weight)  


       kmName = "D:/pyfenlei/5000/p1.km" 
       kmresult = codecs.open(kmName, 'w', 'utf-8')  
       i = 1  
       while i <= len(clf.labels_):  
    kmresult.write("%d,%d\n" % (i, clf.labels_[i-1]))   
    i = i + 1  


       kmresult.close()
     
       #用来评估簇的个数是否合适,距离越小说明簇分的越好,选取临界点的簇个数  
       print(clf.inertia_) 
    ============================ Kmeans.py end=================================================== 
    计算结果https://pan.baidu.com/s/1skR9P7J (K-means标题行与分类簇号共5000行【文本文件】)


        5、标题归类如下:
            代码如下

    ============================ btgl.py begin===================================================
    # coding=utf-8
    """  
    #标题归类 
    """


    import time
    import re
    import os
    import sys
    import codecs


    if __name__ == "__main__":
       ywName = "D:/pyfenlei/5000/p1.yw"
       kmName = "D:/pyfenlei/5000/p1.km"
       ywList = [line.strip() for line in open(
    ywName, encoding='utf-8').readlines()]
       kmList = [line.strip().split(',')[1].strip()
         for line in open(kmName, encoding='utf-8').readlines()]
       for i in range(len(kmList)):
    btglName = "D:/pyfenlei/gl/p1_%s.btgl"
    btglresult = codecs.open(btglName % (kmList[i]), 'a', 'utf-8')
    btglresult.write("%s\n" % (ywList[i]))
    btglresult.close()
       print("标题归类完毕!")
    ============================ btgl.py end==================================================
    计算结果https://pan.baidu.com/s/1sl2N7Tr (40个聚类对应的标题归并后的40个标题列表文件【文本文件】)


        6、词群归类如下:
            代码如下:

    ============================ cqgl.py begin================================================
    # coding=utf-8
    """  
    #标题归类 
    """


    import time
    import re
    import os
    import sys
    import codecs


    if __name__ == "__main__":
       fcName = "D:/pyfenlei/5000/p1.txt"
       kmName = "D:/pyfenlei/5000/p1.km"
       fcList = [line.strip() for line in open(
    fcName, encoding='utf-8').readlines()]
       kmList = [line.strip().split(',')[1].strip()
         for line in open(kmName, encoding='utf-8').readlines()]
       for i in range(len(kmList)):
    cqglName = "D:/pyfenlei/gl/p1_%s.cqgl"
    cqglresult = codecs.open(cqglName % (kmList[i]), 'a', 'utf-8')
    cqglresult.write("%s " % (fcList[i]))
    cqglresult.close()
       print("词群归类完毕!")
    ============================ cqgl.py end===================================================
    计算结果https://pan.baidu.com/s/1pL6p0ev (40个聚类对应的分词归并后的40个词群【文本文件】)


    代码没有进行整合,也不具备大规模聚类,仅供参考!


    参考资料:

    https://sourceforge.net/projects/scipy/files/scipy/
    https://github.com/scipy/scipy/releases
    https://pypi.python.org/pypi/scipy (这里的scipy好像很难安装成功)
    http://www.lfd.uci.edu/~gohlke/pythonlibs/ (这里有scipy的各种版本)


    本人原创未经许可,可以随意转载!

    转载于:https://www.cnblogs.com/bdccloudy/p/7665215.html

    展开全文
  • 广告关闭腾讯云11.11云上盛惠 ,精选... 层次聚类分为两种:合并(自下而上)聚类(agglomerative)分裂(自上而下)聚类(divisive)目前使用较多的是合并聚类 ,本文着重讲解合并聚类的原理。 agens层次聚类原理合并聚...

    o55g08d9dv.jpg广告关闭

    腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!

    单点聚类处在树的最底层,在树的顶层有一个根节点聚类。 根节点聚类覆盖了全部的所有数据点。 层次聚类分为两种:合并(自下而上)聚类(agglomerative)分裂(自上而下)聚类(divisive)目前使用较多的是合并聚类 ,本文着重讲解合并聚类的原理。 agens层次聚类原理合并聚类主要是将n个元素当成n个簇,每个簇与其 欧氏...

    对于库表可以直接勾选,对于普通路径,可填形式如 a - b、c 或者它们的混合,用英文逗号分割(例如0 - 10,15,17 - 19表示第0到10列、15、17到19列总共15列作为特征)。 输出结果路径:路径。 结果格式:结果数据格式,默认为 parquet。 二分 kmeans二分 k 均值算法属于层次聚类,详情可参考 官方文档 。 训练节点...

    l5254rp6hz.jpeg

    层次聚类怎么算层次聚类分为自底向上和自顶向下两种,这里仅采用scikit-learn中自底向上层次聚类法。 将数据集中每一个样本都标记为不同类计算找出其中距离最近的2个类别,合并为一类依次合并直到最后仅剩下一个列表,即建立起一颗完整的层次树以下为看图说话~ 感谢 laugh’sblog借用下说明图把所有数据全部分为不...

    层次聚类(hierarchical clustering算法)层次聚类算法又称为树聚类算法,它根据数据之间的距离,透过一种层次架构方式,反复将数据进行聚合,创建一个层次以分解给定的数据集。 常用于一维数据的自动分组层次聚类方法 hclust(dist)dist样本的距离矩阵距离矩阵的计算方式 dist(data)data 样本数据层次聚类的代码实现...

    前面我们在教程:使用r包deconstructsigs根据已知的signature进行比例推断,顺利的把508个病人,根据11个signature进行了比例推断,得到的比例矩阵以普通的热图,以及pheatmap包自带的层次聚类如下:? 代码是:rm(list=ls())options(stringsasfactors = f)load(file = mut.wt_from_denovo.rdata)a2=mut.wt##...

    hngalg7tx5.png

    假设有n个待聚类的样本,对于层次聚类来说,步骤:1、(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度; 2、寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个); 3、重新计算新生成的这个类与各个旧类之间的相似度; 4、重复2和3直到所有样本点都归为一类...

    3upn7votme.jpeg

    有人不理解分类和聚类的差别,其实这个很简单:分类是一个已知具体有几种情况的变量,预测它到底是哪种情况; 聚类则是尽量把类似的样本聚在一起,不同的样本分开。 举个例子,一个人你判断他是男是女这是分类,让男人站一排女人站一排这是聚类。 聚类分析算法很多,比较经典的有k-means和层次聚类法。 k-means聚类...

    首先抛出了聚类理论中两个关键问题:何为类,何为相似,同时介绍了聚类中常用两种评价指标:内部指标和外部指标。 然后介绍了层次聚类算法:凝聚层次聚类和分裂层次聚类算法,两者皆以样本集作为类表示,常用欧式距离作为相似性度量,分层次聚类。 最后介绍了层次聚类算法的特点,可视化,复杂度。 作者 | 文杰编辑 ...

    之前也做过聚类,只不过是用经典数据集,这次是拿的实际数据跑的结果,效果还可以,记录一下实验过程。 首先:确保自己数据集是否都完整,不能有空值,最好也不要出现为0的值,会影响聚类的效果。 其次:想好要用什么算法去做,k-means,层次聚类还是基于密度算法,如果对这些都不算特别深入了解,那就都尝试一下吧...

    前文说了k均值聚类,他是基于中心的聚类方法,通过迭代将样本分到k个类中,使每个样本与其所属类的中心或均值最近。 今天我们看一下无监督学习之聚类方法的另一种算法,层次聚类:层次聚类前提假设类别直接存在层次关系,通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树。 在聚类树中,不同类别的原始...

    6pzpq2hab1.jpeg

    比如说,聚类内平方和(within-cluster sum-of-squares)可以测量每个聚类内的方差。 聚类越好,整体 wcss 就越低。 层次聚类(hierarchical clustering)何时使用? 当我们希望进一步挖掘观测数据的潜在关系,可以使用层次聚类算法。 工作方式首先我们会计算距离矩阵(distance matrix),其中矩阵的元素(i,j)...

    mwnrl0o4jw.jpeg

    而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。 聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。 2. 层次聚类分析层次聚类分为凝聚式层次聚类和分裂式层次聚类。 凝聚式层次聚类,就是在初始阶段将每一个点都视为一个簇...

    常用密度聚类算法:dbscan密度最大值算法(1)dbscan算法 dbscan(density-based spatial clusteringof applications with noise)是一个比较有代表性的基于密度的聚类算法,相比于基于划分的聚类方法和层次聚类方法,dbscan算法将簇定义为密度相连的点的最大集合,能够将足够高密度的区域划分为簇,并且在具有噪声的...

    z8r4cd1vu9.png

    层次聚类结果的比较和评估及r操作 层次聚类是探索性分析,而非统计检验的过程。 通过前文对层次聚类的简介,可知数据集的预处理方式、关联系数或距离测度的选择以及聚类方法的选择等将直接影响聚类结果。 因此,选择与分析目标一致的方法非常重要。 本篇简介一些用于比较和评估层次聚类结果的方法,以帮助理解关联...

    duojdlup4a.png

    顾名思义就是要一层一层地进行聚类,可以由上向下把大的类别(cluster)分割,叫作分裂法; 也可以由下向上对小的类别进行聚合,叫作凝聚法; 但是一般用的比较多的是由下向上的凝聚方法。 二、具体1、大致过程:层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。 在已经得到距离值之后,元素间可以...

    层次聚类(hierarchical clustering)基于簇间的相似度在不同层次上分析数据,从而形成树形的聚类结构,层次聚类一般有两种划分策略:自底向上的聚合(agglomerative)策略和自顶向下的分拆(divisive)策略,本文对层次聚类算法原理进行了详细总结。 1. 层次聚类算法原理层次聚类根据划分策略包括聚合层次聚类和拆分...

    3ndid84ub5.png

    k-means算法却是一种方便好用的聚类算法,但是始终有k值选择和初始聚类中心点选择的问题,而这些问题也会影响聚类的效果。 为了避免这些问题,我们可以选择另外一种比较实用的聚类算法-层次聚类算法。 顾名思义,层次聚类就是一层一层的进行聚类,可以由上向下把大的类别(cluster)分割,叫作分裂法; 也可以由下...

    9jlooizqm6.jpeg

    这里再来看看另外一种常见的聚类算法birch。 birch算法比较适合于数据量大,类别数k也比较多的情况。 它运行速度很快,只需要单遍扫描数据集就能进行聚类。 什么是流形学习birch的全称是利用层次方法的平衡迭代规约和聚类(balanced iterativereducing and clustering using hierarchies),其实只要明白它是用层次...

    xe8zf01xdw.jpeg

    实例44 层次聚类分析功能与意义又称系统聚类分析,先将每一个样本看作一类,然后逐渐合并,直至合并为一类的一种合并法,层次聚类分析的优点很明显,他可对样本进行聚类,样本可以为连续或是分类变量,还可以提供多种距离测量方法和结果表示的方法。 数据来源? 分析过程分析-分类-系统聚类? 统计量? 绘制? 保存? 结果...

    1496654823663_5455_1496654823826.png

    所以,讨论数据集应该聚类成多少个簇,通常是在讨论我们在什么尺度上关注这个数据集。 层次聚类算法相比划分聚类算法的优点之一是可以在不同的尺度上(层次)展示数据集的聚类情况。 基于层次的聚类算法(hierarchical clustering)可以是凝聚的(agglomerative)或者分裂的(divisive),取决于层次的划分是“自底...

    展开全文
  • 核心内容:使用python的sklearn的KMeans算法对电商用户进行分类。 包含内容:数据概览、特征构建、k值选择、模型训练、可视化等。
  • 聚类评价指标S_Dbw及其python实现

    千次阅读 热门讨论 2018-11-24 19:00:57
    聚类评价指标S_Dbw 介绍 最近看了一篇文章,Yanchi Liu等人比较了各个聚类评价指标(例如
  • 基于PYTHON聚类算法在教学评价中应用研究.pdf
  • 基于PYTHON聚类算法在教学评价中应用研究 In the study of clustering on the basis of basic principle and the corresponding algorithm this paper analyzes the K means clustering algorithm using the ...
  • 主要参考 K-means 聚类算法及 python 代码实现 还有 《机器学习实战》 这本书,当然前面那个链接的也是参考这本书,懂原理,会用就行了。1、概述K-means 算法是集简单和经典于一身的基于距离的聚类算法采用距离作为...
  • 在本教程中,我会利用 Python 来说明怎样聚类一系列的文档。我所演示的实例会识别出 top 100 电影的(来自 IMDB 列表)剧情简介的隐藏结构。关于这个例子的详细讨论在初始版本里。本教程包括:整个项目在我的 github...
  • python 文本聚类

    千次阅读 2017-10-23 21:34:56
    在本教程中,我会利用 Python 来说明怎样聚类一系列的文档。我所演示的实例会识别出 top 100 电影的(来自 IMDB 列表)剧情简介的隐藏结构。关于这个例子的详细讨论在初始版本里。本教程包括:对所有剧情简介分词...
  • 聚类评价指标

    千次阅读 2016-01-04 17:06:51
     如图认为x代表一类文档,o代表一类文档,方框代表一类文档,完美的聚类显然是应该把各种不同的图形放入一类,事实上我们很难找到完美的聚类方法,各种方法在实际中难免有偏差,所以我们才需要对聚类算法进行评价看...
  • sklearn聚类评价指标

    千次阅读 2019-09-26 20:46:14
    sklearn中的指标都在sklearn.metric包下,与聚类相关的指标都在sklearn.metric.cluster包下,聚类相关的指标分为两类:有监督指标和无监督指标,这两类指标分别在sklearn.metric.cluster.supervised和sklearn.metric...
  • python实现聚类分析

    2021-04-29 11:31:39
     这里较为详细介绍了聚类分析的各种算法和评价指标,本文将简单介绍如何用python里的库实现它们。 二、k-means算法  和其它机器学习一样,实现聚类分析也可以调用sklearn中的借口。 from sklearn.cluster import ...
  • 聚类评价指标 最近在做聚类的项目,聚类得到结果后我们需要知道聚类的好坏,用哪个算法效果比较好。肯定要选择那个最好评价的算法。今天我们就不谈算法只谈算法结果的评价。 我也从网上看了很多的别人写的东西,总之...
  • 直接上代码,参考论文《文本聚类分析效果评价及文本表示研究》 #!/usr/bin/python # -*- coding:utf-8 -*- """ @Name cluster_metrics @Description 聚类评估方法 @Date 2019/4/4 """ import sys import math def ...
  • 使用k-means算法对数据进行聚类之后,通常需要验证一下聚类的效果。常用的验证方法包括entropy、purity、precious、F-measure、Recall,本文只介绍entropy和purity算法。Entropy:对于一个聚类i,首先计算。指的是...
  • 【机器学习】聚类结果评价指标及python3代码实现 本博客为博主原创,如需转载,请附上本文链接,谢谢 在机器学习、数据挖掘领域中,聚类算法有很多中,比方说K-Means、DBSCAN等等,这些也都是入门级的简单算法。...
  • python中的分群质量 主要参考来自官方文档:Clustering 部分内容来源于:机器学习评价指标大汇总 个人比较偏好的三个指标有:Calinski-Harabaz Index(未知真实index的模型评估)、Homogeneity, completeness and V-...
  • 无监督聚类评价指标,RI、ARI、MI、NMI等 最近在看无监督学习聚类的评价指标,主要看了RI、ARI、MI、NMI,在此写下我自己对于这些指标的理解。 1. **RI(Rand Index)**是比较两个聚类结果的参数,也可以比较一个...
  • 聚类模型 无标签、无监督学习 可以简化数据,有助于寻找数据的内部结构 基于相似度【能把不同领域的数据相似度的度量融合进去,还可加入核函数】;基于特征【可以直接考虑原始的数据,避免因为度量距离而丢失某些...
  • # 测试9种不同聚类中心数量下,每种情况的聚类质量,并作图 K = range(1, 10) meandistortions = [] for k in K: kmeans = KMeans(n_clusters=k) kmeans.fit(X) meandistortions.append(sum(np.min(cdist(X, ...
  • % D 原始待聚类数据[n,d] % labels 聚类后各个样本的类别标签[1,n] % cluster_center 聚类中心 % stdev 阈值 各个类/簇的平均标准差 % 输出: % 两个聚类中心 的中点 if length(density_list) == 2 center_u = ...
  •   本文介绍两种聚类评估方法,轮廓系数(Silhouette Coefficient)以及标准化互信息(NMI),并且用Python实现。 导航效果评估综述轮廓系数互信息参考文章 效果评估综述   这里直接贴上 聚类算法初探(七)聚类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,746
精华内容 2,698
关键字:

python聚类评价

python 订阅