• 《集体智慧编程》读书笔记 1 聚类简介


    1、聚类算法的目的是采集数据,然后从中找出不同的群组。

    2、Universal Feed Parser

    可以方便地解析RSS订阅源,即从RSS或Atom订阅源中得到标题、链接和文章的内容。

    3、皮尔逊相关度其实判断的是两组数据与某条直线的拟合程度,当两者完全匹配时,计算结果为1.0,当两者毫无关系时,计算结果为0.0.

    4、分级聚类

    分级聚类的结果会产生一棵树:

    分级聚类虽然会返回一棵形象直观的树,但这种方法有两个缺点。在没有额外指定的情况下,树形视图不会真正将数据拆分成不同的组,而且该算法的计算量惊人。因为我们必须计算每两个数据项之间的关系,并且在合并项之后这些关系还得再计算,所以在处理大规模的数据集时,该算法的运行速度会非常缓慢。

    5、K-均值聚类

    会预先告诉算法希望聚成几类

    K-均值聚类算法首先会随机确定k个中心位置,然后将各个数据项分配给最临近的中心点。待分配完成后,聚类中心会移动到分配给该聚类的所有节点的平均位置处,然后整个分配过程重新开始。这一过程会一直重复下去,知道分配过程不再产生变化为止。

    例如5个数据项的2个聚类:

    K-均值聚类的计算效率会比分级聚类快一些,但是k值的选取会影响聚类的效果。

    6、Beautiful Soup

    是一个解析网页和构造结构化数据表达形式的优秀函数库。它允许我们利用类型(type)、id或者任何属性来访问网页的任何元素。它可以很好的处理包含不规范HTML标记的web页面,当我们根据站点的内容来构造数据集时,这一点非常有用。

    7、Tanimoto系数

    Tanimoto coefficient,它代表的是交集(两个集合中均出现的项)与并集(两个集合中只要有一次出现即可)的比率。

    这个系数很容易计算:

    def tanimoto(v1,v2)
        c1,c2,shr = 0,0,0
        
        for i in range(len(v1))
            if v1[i] != 0 : c1 += 1; #出现在v1中
            if v2[i] != 0 : c2 += 1; #出现在v2中
            if v1[i] != 0 and v2[i] != 0 : shr += 1; #在v1和v2中都出现了
    
    return 1.0 - (float(shr)/(c1+c2-shr))

    数据格式为:

    8、多维缩放(multidimentional scaling)技术

    其目标是尝试绘制出一幅图来,图中各数据项之间的距离远近对应于它们彼此之间的差异程度。为了做到这一点,算法首先需要计算出所有项之间的目标距离。

     step1:距离信息矩阵(目标距离)

    step2:将所有数据项随机放置在二维图上

    step3:计算各项数据之间的实际距离(当前距离)

    step4:对数据项施力,将它推向目标距离

    如A,它与B之间的目标距离为0.2,而实际距离为0.4,因此应该将A推向B。同理,应将A远离C和D

    每一个节点的移动,都是所有其他节点施加在该节点上的推或拉的综合效应。节点每移动一次,其当前距离和目标距离之间的差距就会减小一些。这一过程会不断的重复多次,直到我们无法再通过移动节点来减少总体的误差为止。

  • 相关阅读:
    vr这么火我来看看there.js
    简明现代魔法博客图书馆之php学习记录
    ecshop学习记录
    mysql学习笔记
    linux服务器自动备份mysql数据库
    thinkphp分页及分页样式
    php手册学习(2)
    非常不错的ajax原理总结
    最全的HTTP头部信息分析
    利用curl并发来提高页面访问速度
  • 原文地址:https://www.cnblogs.com/elaron/p/3038353.html
Copyright © 2020-2023  润新知