`

python实现数据的多维缩放(集体智慧编程)

阅读更多

多维缩放可以为数据集找到一种二维表达形式。算法根据每对数据项之间的差距情况,尝试绘制出一幅图来,图中的各数据项之间的距离远近,对应于它们彼此间的差异程度。

 

分类聚集算法中的数据为例

第一步:计算所有数据项两两间的实际距离(可参考皮尔逊算法欧几里德算法

第二步:将数据项随机放置在二维图上。

第三步:针对每两两构成的一对数据项,将它们的实际距离与当前在二维图上的距离进行比较,求出一个误差值

第四步:根据误差的情况,按照比例将每个数据项的所在位置移近或移远少许量。(每一个节点的移动,都是所有其它节点施加在该节点上的推或拉的结合效应。)

第五步:重复第三步、第四步(节点每移动一次,其当前距离与实际距离的差距就会减少一些)。这一过程会不断地重复多次,直到无法再通过移动节点来减少总体误差为止。

 

 

下面我们用PYTHON来实现此算法:

 

def scaledown(data, distance=pearson, rate=0.01):
    n = len(data)
    print n
    # 每一对数据项的真实距离
    realdist = [[distance(data[i], data[j]) for j in range(n)]
                for i in range(0, n)]

    # 生成随机的二维LIST,表示各数据项在二维空间的初始坐标
    loc = [[random.random(), random.random()] for i in range(n)]

    fakedist = [[0.0 for j in range(n)] for i in range(n)]
    lasterror = None
    for m in range(0, 100000):
        # 计算各数据项初始坐标的距离
        for i in range(n):
            for j in range(n):
                fakedist[i][j] = sqrt(sum([pow(loc[i][x] - loc[j][x], 2) for x in range(len(loc[i]))]))

        # Move points
        grad = [[0.0, 0.0] for i in range(n)]

        totalerror = 0
        for k in range(n):
            for j in range(n):
                if j == k:
                    continue
                # 计算误差的比例
                errorterm = (fakedist[j][k] - realdist[j][k]) / realdist[j][k]

                # Each point needs to be moved away from or towards the other
                # point in proportion to how much error it has
                grad[k][0] += (
                    (loc[k][0] - loc[j][0]) / fakedist[j][k]) * errorterm
                grad[k][1] += (
                    (loc[k][1] - loc[j][1]) / fakedist[j][k]) * errorterm

                # 求得所有数据项的误差和
                totalerror += abs(errorterm)

        # 如果移动后,误差变得更大,则结束
        if lasterror and lasterror < totalerror:
            break
        lasterror = totalerror

        # 移动节点
        for k in range(n):
            loc[k][0] -= rate * grad[k][0]
            loc[k][1] -= rate * grad[k][1]

    return loc

//作图的方法
def draw2d(data, labels, jpeg='mds2d.jpg'):
    img = Image.new('RGB', (1000, 1000), (255, 255, 255))
    draw = ImageDraw.Draw(img)
    #设置字体类型与大小
    font = ImageFont.truetype('simsun.ttc', 24)

    for i in range(len(data)):
        x = (data[i][0] + 0.5) * 500
        y = (data[i][1] + 0.5) * 500
        #此处注意编码
        draw.text((x, y), unicode(labels[i], 'utf-8'), (0, 0, 0), font=font)
    img.save(jpeg, 'JPEG')

 

利用之前算法已得的数据进行测试下:

 

#encoding=utf-8
import clusters
blognames,words,data = clusters.readfile('blogdata1.txt')

coords = clusters.scaledown(data)

clusters.draw2d(coords,blognames)

 

 

得到图:



 
 

 

 

  • 大小: 33.2 KB
4
5
分享到:
评论

相关推荐

    集体智慧编程

    《集体智慧编程》是一本专为初学者设计的Python数据分析与机器学习应用书籍。它以Python语言为基础,通过丰富的实例,逐步引导读者深入理解和掌握数据分析和机器学习的关键概念和技术。 在Python数据分析方面,本书...

    Python数据分析班

    Python数据分析是现代数据科学中的重要工具,它以其易读性、强大的库支持...通过这个“Python数据分析班”,学员将不仅掌握Python编程基础,还能熟练运用Python进行数据处理和分析,为未来的数据分析工作奠定坚实基础。

    数据分析试题_python数据分析.zip

    Python是一种广泛应用于数据科学、机器学习和数据分析领域的编程语言,因其语法简洁和丰富的库支持而备受青睐。以下将详细阐述Python在数据分析中的核心知识点: 1. **Python基础**:在进行数据分析之前,首先需要...

    集体智慧编程.[美]西格兰(带详细书签) PDF 下载

    《集体智慧编程》由美国计算机专家西格兰编著,以机器学习与计算统计为主题背景,专门讲述如何挖掘和分析Web上的数据和资源,如何分析用户体验、市场营销、个人品味等诸多信息,并得出有用的结论,通过复杂的算法来...

    基于Python的数据分析

    Python是一种广泛应用于数据分析领域的编程语言,其简洁的语法和丰富的库使得数据处理、统计分析以及可视化变得简单易行。在"基于Python的数据分析"这个主题中,我们将深入探讨Python在数据科学中的应用。 首先,...

    Python实现公司员工数据的统计分析源代码

    在本项目中,"Python实现公司员工数据的统计分析源代码"是一个利用Python进行数据分析的实践案例,主要针对企业内部员工的数据进行各种统计和分析。这个项目可能包含多个Python脚本,这些脚本可能用于数据预处理、...

    python数据分析与可视化.pdf

    Python 作为一种功能强大的编程语言,在数据科学领域有着广泛的应用。以下是几个常用的数据分析库及其主要功能: 1. **NumPy**: - **简介**:NumPy 是一个为 Python 设计的库,专门用于处理大型多维数组和矩阵...

    [图灵程序设计丛书].Python数据科学手册_Python数据科学手册_

    1. Python基础:书中的内容首先会涵盖Python的基础语法,包括变量、控制流(如if语句和for循环)、函数定义、类与对象等,这些都是进行数据科学工作时不可或缺的编程基础。 2. NumPy库:NumPy是Python中用于处理...

    37304-Python数据分析与应用-PPT课件.rar

    通过37304-Python数据分析与应用的PPT课件,学习者不仅可以掌握Python编程的基本技能,还能深入了解数据分析的全貌,从而在实践中有效地应用Python解决实际问题。无论你是数据分析师、数据科学家还是对数据感兴趣的...

    Python 数据挖掘实践配套代码及数据.zip

    首先,Python是数据科学中的首选编程语言,因为其简洁的语法和丰富的库支持。在数据挖掘实践中,我们可能会用到以下Python库: 1. **Numpy**: 提供高效的多维数组对象和矩阵运算功能,是处理数值计算的基础。 2. **...

    《Python大数据分析与机器学习》PPT.zip

    - Python基础:Python作为一门易于学习且功能强大的编程语言,是数据分析的首选工具。 - NumPy:用于处理数组的库,是科学计算的基础,提供了高效的多维数组操作。 - Pandas:提供高效的数据结构DataFrame,方便...

    基于Python数据分析与机器学习案例实战教程.rar

    《基于Python数据分析与机器学习案例实战教程》是一个深入学习Python在数据分析和机器学习领域应用的教程。本教程通过丰富的案例,旨在帮助学员掌握Python的基本语法、数据处理工具以及机器学习算法,从而提升解决...

    基于python的数据分析

    Python是一种广泛应用于各种领域的编程语言,特别是在数据分析领域,它的易用性和丰富的库使其成为首选工具。本主题将深入探讨如何利用Python进行高效的数据处理、分析和可视化。 在Python中,我们通常使用Pandas库...

    吴恩达机器学习系列课程的编程作业,用python实现。.zip

    通过Python语言实现这些作业,学生可以掌握机器学习的基本原理和技巧,同时提升编程能力。 1. **Python编程基础**:Python是一种高级编程语言,以其简洁的语法和丰富的库支持而闻名。在解决机器学习问题时,Python...

    Python在数据分析和可视化领域的应用.zip

    同时,Pandas的merge、join等函数能轻松合并多个数据源,实现数据集成。 数据分析过程中,NumPy和SciPy提供了强大的数学函数,如统计分布、回归分析和假设检验等。Pandas的groupby和pivot_table等函数用于数据分组...

    create data_python生成数据_

    在Python编程语言中,生成数据是一项常见的任务,特别是在数据分析、机器学习和测试用例的创建中。本教程将深入探讨如何使用numpy库来创建并处理数据,以及如何去除重复的数据。 首先,`numpy`是Python中一个强大的...

    Python Data Science Handbook+2017.pdf (高清非扫描影音文字)带书签目录

    1. **Python基础**:Python是一种高级编程语言,因其简洁明了的语法和丰富的库而深受数据科学家喜爱。书中会介绍Python的基本语法、数据结构(如列表、元组、字典和集合),以及控制流语句(如if语句和for循环)。 ...

    采用Python实现各种机器学习算法,基于机器学习实战、西瓜书、统计学习方法等.zip

    Python是一种广泛应用于数据分析和机器学习领域的编程语言,其丰富的库和简洁的语法使得它成为实现机器学习算法的理想选择。在这个压缩包中,"kwan1117"可能包含了一系列与机器学习相关的代码示例、笔记或者教程,...

    python数据挖掘入门与实战以及配套代码

    1. **Python基础**:首先,你需要熟悉Python编程语言的基本语法,包括变量、数据类型(如整型、浮点型、字符串和列表)、控制结构(如if语句、for循环和while循环)以及函数的使用。 2. **Numpy库**:在数据处理中...

    Python数据分析与可视化-PPT.zip

    Python数据分析与可视化是现代数据科学领域中的核心技能之一,它结合了强大的编程语言Python和丰富的数据分析库,使得处理、理解并展示数据变得高效且直观。本资料“Python数据分析与可视化-PPT”似乎是一系列关于该...

Global site tag (gtag.js) - Google Analytics