精华内容
下载资源
问答
  • SQL Server 2008 Analysis Services多维数据分析,包括项目创建、定义和部署多维数据集。
  • 多维信息空间分析是构筑数字城市最为关键的技术之一,而空间数据立方体是解决这个关键技术问题...在分析操作过程中,采用具体分析功能和例子数据相结合的直观方式列举了多维信息的缓冲区分析、连接分析、网络分析实例
  • 多维数据集示例 多维数据集是轻量级Python在线分析处理(OLAP)框架。 此软件包包含包含数据的多维数据集的示例用法。 内容 采购-斯洛伐克公共采购 网上商店-虚构的网上商店的样本模型和数据
  • 本文实例讲述了C#中使用ADOMD.NET查询多维数据集的实现方法,分享给大家供大家参考。具体实现方法分析如下: ADOMD.NET 是用于与 Microsoft SQL Server Analysis Services 进行通信的 Microsoft .NET Framework 数据...
  • 数据分析之—基于模型的复杂数据多维聚类分析 随着现实和虚拟世界的数据产生速度越来越迅猛,人们开始关注如何从这些数据中获取信息,知识,以及对于决策的支持。这样的任务通常被称作大数据分析(BigData ...

    大数据分析之—基于模型的复杂数据多维聚类分析

    随着现实和虚拟世界的数据产生速度越来越迅猛,人们开始关注如何从这些数据中获取信息,知识,以及对于决策的支持。这样的任务通常被称作大数据分析(BigData Analytics)。大数据分析的难点很多,比如,由于海量数据而带来的分析效率瓶颈,使用户不能及时得到分析结果;由于数据源太多而带来的非结构化问题,使传统的数据分析工具不能直接利用。


    本文讨论大数据内部关系的复杂性,以及复杂数据所带来的对于聚类分析的挑战。聚类分析的目标是依据数据本身的分布特征(无监督),把整个数据(空间)划分成不同的类。基本的准则是同类的数据应该具有某种的相似性,而异类的数据应该具有某种差异性。现有工作假设在这些数据中存在单一的聚类划分的方法,而聚类目标就是找到这样的一种划分。然而,我们在大数据中所面对的复杂数据是多侧面的,比如在网页数据中既有关于内容的文本属性,也有指向这个网页的链接属性。多侧面数据本身就存在着多种有意义的划分,强制地将数据按照单一的方法聚类,得不到有效的、明确清晰的、可诠释的结果。针对这个问题,多维聚类方法针对数据的不同侧面,得到数据聚类的多种方法,最后让使用者决定需要的聚类划分。


    高维复杂数据的聚类分析是本文作者在香港科技大学跟随Nevin Zhang教授攻读博士期间的主要工作。研究论文Model-based multidimensional clustering ofcategorical data发表在今年《ArtificialIntelligence》杂志的第176期。《ArtificialIntelligence》从1970年开始出版,是人工智能领域老牌顶级期刊。因为版权原因,可能网上下载不到免费的全文,感兴趣的同学可以联系tao.chen2@emc.com。关于文中所用的隐树模型的介绍以及免费软件参见隐树模型项目主页。

    (二)多维聚类的概念

    假设我们需要对图中的所有图片进行聚类,可能的聚类方法不止一种:按照图片的内容,我们可以把左边的图片标注成袋鼠,而右边的标注成树;而按照图片风格属性,我们可以把上面的图片称为色彩图,而下面的称为线条图。简而言之,关注数据的不同侧面,有可能得到不同的聚类结果。同时这些聚类结果也都是有意义,可以解释的。


    生活中多维聚类的例子很多,比如对于人群的划分,可以按照男女等人口统计学信息划分,也可以按照对于某个事件的看法划分。那么从机器学习的角度如何公式化这样的问题,之后又怎么利用概率统计的方法去解决这样的问题呢?下面我们先给出问题的定义。

    如图所示,在聚类分析这样的无监督学习中,输入是一个数据表。表的每一行表示一个数据点,而每一列表示描述这个点的一维属性。大数据的一个重要特征就是维度很高(包含很多列),从而带来的维度灾难(curseof dimensionality)。在聚类分析中,表现为:这些维度可能自然地分成一些组,每组包含一些属性,反应了数据某一侧面(facet)的特征。用户可以根据其中一个侧面的属性,对这个数据进行聚类。比如在右表的数据中,一个学生的数据包含了数学成绩,理综成绩,文综成绩,和语文成绩这些属性。我们可以关注学生的数学和理综成绩,按照理科成绩(分析能力)对学生进行聚类;同时也可以关注学生的文综和语文成绩,按照文科成绩(语言能力)对学生进行聚类。

    所以多维聚类的问题定义为:


    如何发现数据中包含的多个侧面,即属性的自然分组,针对这些不同侧面进行聚类,从而得到多种聚类方法。

    (三)多维聚类分析的工具和原理

    贝叶斯网络是一种表示和处理随机变量之间复杂关系的工具。它是通过在随机变量之间加箭头而得到的有向无圈图。箭头表示直接概率依赖关系,具体依赖情况由条件概率分布所定量刻画。出于对计算复杂度的考虑,人们会对贝叶斯网络进行一些限制,在实际中使用一些特殊的网络结构。隐树模型(latent tree model)是一类特殊的贝叶斯网,也称为多层隐类模型(hierarchical latent class model), 是一种树状贝叶斯网, 其中叶节点代表观察到的变量,也称为显变量,其它节点代表数据中没有观察到的变量,也称为隐变量。




    图中给出了隐树模型的一个例子。其中,学生的“数学成绩”、“理综成绩”、“语文成绩”和“文综成绩”是显变量,而“智力”、“分析能力”和“语言能力”则是隐变量。从“分析能力”到“数学成绩”有一个箭头, 表示“数学成绩”直接依赖“分析能力”,具体依赖情况由右图中的条件概率表所定量所刻画。表中的内容是说,分析能力低的学生在数学科有0.5的概率不及格、0.4的概率及格、0.1的概率得良,而得优的概率则是0; 等等。模型中的其它箭头代表其它变量之间直接依赖关系,每个箭头都有相应的条件概率分布。


    在隐树模型中,一个隐变量对应一种数据聚类的方法。隐树模型允许模型中有多个隐变量,所以自然地可以多维同时聚类。在例子模型中,可以按照分析能力或者语言能力对学生聚类,也可以按照智力对学生聚类。在隐树模型中,聚类分析可以通过计算给定学生成绩的后验概率进行判断。所以,利用隐树模型进行多维聚类分析的技术重点就在如何通过观测数据学习一个最优的模型。抽象地说,就是找到能够最好地解释数据的一个生成隐树模型(Generative Latent tree model)。


    (四)隐树模型的学习

    隐树模型的学习是一个对模型逐步优化的过程,优化的目标函数是一个称为贝叶斯信息准则(Bayes information criterion, 简称BIC) 的函数:

    BIC(m|D) = max θ log P(D|m, θ) – d(m)logN/2

    BIC准则要求模型与数据尽量紧密地拟合,但其复杂不能过高。所以式中第一项表示拟合程度,而第二项是对于模型复杂度的一个惩罚项。我们的优化过程是一个基于搜索的爬山算法(Hill-Climbing)。以只包含一个隐变量的简单的隐树模型作为搜索的起始模型,在搜索的过程中,逐步引入新的隐变量、增加隐变量的取值个数、或者调整变量之间的连接。这是一个逐步修改模型的过程,在这个过程中,模型与数据的拟合程度不断改进,从而BIC分逐步增加。当模型就变得太复杂时,BIC会不升反降,于是搜索过程停止。


    隐树模型的学习是一个非常耗时的过程,主要原因在于对于BIC分数的计算。BIC函数的第一项叫做最大似然函数,在模型包含缺失值或者隐变量时,计算最大似然函数需要调用EM(Expectation-Maximization)算法。尽管我们已经对于限制了模型结构为简单的树状结构,但是在这样的模型上进行EM的计算依然是非常困难。围绕隐树模型的很多工作都是在研究如何对模型学习进行加速的,这儿就不赘述了。

    (五)基于隐树模型的多维聚类分析实例

    我们以一个真实的数据分析实例来展现多维聚类分析。数据来自某地区的关于贪污的社会调查问卷。通过一些数据预处理,我们的数据(如图所示)包含了1200份的问卷,以及31个问题。比如说C_City表示被访问者对于该地区的贪污普遍性的看法,可以有4个选项,分别是非常普遍,普遍,不普遍,以及非常不普遍。C_Gov和C_Bus分别表示受访者对于该地区政府部门或商业部门的贪污普遍性的看法,同样也有四个选项。Tolerance_C_Gov和Tolerance_C_Bus则分别表示受访者对于该地区的政府部门以及商业部门的贪污的容忍程度,可以选择完全不能容忍,不能容忍,能容忍,完全能容忍。数据表里面的-1表示受访者对该问题的回答缺失。



    利用隐树的学习算法,我们从这个数据得到了一个如图所示的模型。叶节点对应问卷问题,即显变量。中间结点,Y0-Y8是从数据中发现的隐变量,括号里面的数字表示这个变量所取的状态个数。我们发现这些隐变量都有一定的意义,比如,Y2和问卷中的Sex,Age,Income,Education这些问题紧密连接,说明Y2应该是表示受访人的人口统计信息。Y3和问卷中的Tolerance_C_Gov和Tolerance_C_Bus紧密联系,说明Y3是反映受访者总体对于贪污的看法。


    模型中的每个隐变量表示数据聚类的一种方式。比如,变量Y2有4个值,说明Y2提示数据可以分成四个类。这种聚类主要基于Sex,Age,Income,Education这些人口统计信息相关变量的,所以可以说当我们关注人群的人口统计信息这个侧面时,我们可以根据Y2把人群分成四类。具体地研究这四类的类条件概率(Class-Conditional ProbabilityDistribution)特性,我们进一步发现它们分别代表:低收入的年轻人群,低收入的女性人群,受过高等教育的高收入人群,以及只接受初等教育的一般收入人群。同时,我们看到Y3有3个取值,这说明从人群对于贪污总体看法这个侧面出发,可以把人群分成三类,分别是对于贪污完全不能容忍的人群,对于贪污比较不能容忍的人群,对于贪污可以容忍的人群。同样地,我们的聚类也可以基于其他隐变量所代表的侧面。这样从模型中我们得到了9种聚类的方法,达到了多维同时聚类的效果。


    除了聚类,对于这个数据的分析还告诉我们一些隐藏很深的关系。比如在模型中变量Y2和Y3有连线,这表明一个人的背景信息和他对于贪污的容忍程度应该有一定的关联关系。具体地说,在Y2所表示的4类人中,你觉得哪一类是最能容忍贪污,而哪一类是最不能容忍贪污的呢?在模型中,通过对这两个变量的条件概率的分析,我们得到了一个答案,有兴趣的同学可以去论文中验证一下自己的猜测。


    (六)相关学术工作

    隐树模型在密度估计,近似推理及隐结构发现等方面都有具体的应用。在多维聚类分析的应用上,我们分析过市场学数据(COILChallenge 2000),某地区的社会调查数据(ICAC),NBA篮球运动员比赛统计数据。最近,随着算法的提速,隐树模型开始被尝试用于文本分析,比如对于网页数据,博客数据等的话题分析。隐树模型最开始的提出是为了对中医的证候分析提供统计解释,有兴趣的同学可以参考隐结构模型与中医证研究。


    最近两年,多维聚类分析引起了很多机器学习研究人员的兴趣。从2010年开始的MultiClust Workshop已经举办了两届,其中第一届是和KDD2010一起举办,第二届是和ECML/PKDD2011一起举办。而第三届也会与SDM2012一起举办。具体参考文献这儿也不罗列了。


    多维聚类分析和基于多视图的学习不应该混淆。多视图学习假设数据的多个视图已知,要求视图之间存在充分性(Sufficiency)和冗余性(Redundancy),通过协同训练等技术,主要提高半监督学习,主动学习的性能。多视图学习中针对聚类这样的无监督任务的研究很少,而且它的目标也是如何提高单一的聚类划分的质量,而不是找到多种划分方法。多视图学习也极少涉及如何发现多个视图,而不是假设他们已知。这方面南京大学周志华教授在今年的中国机器学习及其应用研讨会上提到一些初步研究。实际中,可以考虑先用多维聚类分析找到数据的多个侧面(视图),然后再应用多视图学习的方法。


    (七)总结

    对于一个复杂数据,比如文本,视频,图像,或者生物实验数据,人们可以从不同的角度去诠释这样的数据。数据分析家们已经有了这样的共识,那就是以前的单维聚类方法不再适合大数据的多样性特征。多维聚类分析通过对单维聚类问题的扩展,为复杂数据提供了一种新的探索性分析的方式。我们通过找到数据的不同侧面,按照这些侧面进行分别聚类,然后把各种聚类结果全部以一种简单的方式呈现给领域专家,由专家决定他认为最合适的聚类方法。这样的工作流程清晰定义数据科学家和领域专家的职能,通过两者的合作,提高数据的聚类结果,并且提升数据的可解释性。cda数据分析师官网

    转载于:https://www.cnblogs.com/amengduo/p/9587315.html

    展开全文
  • 1.多维数据的存储 a.tofile(frame,sep=’ ‘,format=’%s’) ????frame:文件、字符串 ????sep:数据分隔字符串,如果是空串,写入文件为二进制 ????format:写入数据的格式 实例 import numpy as np a=np.arange...

    函数

    1.多维数据的存储
    a.tofile(frame,sep=’ ‘,format=’%s’)
    🎈frame:文件、字符串
    🎈sep:数据分隔字符串,如果是空串,写入文件为二进制
    🎈format:写入数据的格式

    实例

    import numpy as np
    a=np.arange(100).reshape((5,20))
    a.tofile("b.dat",format='%d')
    

    生成了b.dat文件,是二进制文件。用文本编辑器无法看懂。
    但是二进制文件很小,节省空间,可作为文件备份的一种方式。

    2.读入文件

    np.fromfile(frame,dtype=float,count=-1,sep=’ ')
    🎈frame:文件、字符串
    🎈dtype:读取的数据类型
    🎈count:读取元素的个数,-1表示读取整个文件
    🎈sep:数据分隔字符串,如果是空串,写入文件为二进制

    Tip:
    ①该方法需要读取时,知道存入文件时数组的维度和元素类型。
    ②a.tofile()与a.fromfile()需要配合使用
    ③可以通过元数据文件来存储额外信息

    实例

    import numpy as np
    
    a=np.arange(100).reshape((5,20))
    a.tofile("b.dat",sep=",",format='%d')
    
    c=np.fromfile("b.dat",dtype=np.int,sep=",")
    d=np.fromfile("b.dat",dtype=np.int,sep=",").reshape((5,10,2))
    
    print(c)
    print("------------------")
    print(d)
    

    d使用了reshape()
    在这里插入图片描述

    Numpy的便捷文件存取

    1.存储文件

    np.save(fname,array) 或np.savez(fname,array)
    🎈frame:文件名、以.npy为扩展名,压缩扩展名为.npz
    🎈array:数组变量

    2.读取文件
    np.load(fname)
    🎈frame:文件名,以.npy为扩展名,压缩名为.npz

    实例

    import numpy as np
    
    a=np.arange(100).reshape(2,5,10)
    print(a)
    print("------------------")
    np.save("a.npy",a)
    
    b=np.load("a.npy")
    print(b)
    

    生成的a.npy文件中,第一行如下。它存储了这个多维数据的各个属性。
    所以我们调用np.load()时如此便利。
    在这里插入图片描述
    运行结果输出的b与a完全相同。
    在这里插入图片描述

    展开全文
  • 数据分析之——基于模型的复杂数据多维聚类分析 来自:http://qing.weibo.com/2294942122/ EMC中国研究院大数据实验室senior research scientist 陈弢 (一)引言 随着现实和虚拟世界的数据产生...

    来自:http://qing.weibo.com/2294942122/

    EMC中国研究院大数据实验室senior research scientist   陈弢 

    (一)引言

    随着现实和虚拟世界的数据产生速度越来越迅猛,人们开始关注如何从这些数据中获取信息,知识,以及对于决策的支持。这样的任务通常被称作大数据分析(BigData Analytics)。大数据分析的难点很多,比如,由于海量数据而带来的分析效率瓶颈,使用户不能及时得到分析结果;由于数据源太多而带来的非结构化问题,使传统的数据分析工具不能直接利用。

     

    本文讨论大数据内部关系的复杂性,以及复杂数据所带来的对于聚类分析的挑战。聚类分析的目标是依据数据本身的分布特征(无监督),把整个数据(空间)划分成不同的类。基本的准则是同类的数据应该具有某种的相似性,而异类的数据应该具有某种差异性。现有工作假设在这些数据中存在单一的聚类划分的方法,而聚类目标就是找到这样的一种划分。然而,我们在大数据中所面对的复杂数据是多侧面的,比如在网页数据中既有关于内容的文本属性,也有指向这个网页的链接属性。多侧面数据本身就存在着多种有意义的划分,强制地将数据按照单一的方法聚类,得不到有效的、明确清晰的、可诠释的结果。针对这个问题,多维聚类方法针对数据的不同侧面,得到数据聚类的多种方法,最后让使用者决定需要的聚类划分。

     

    高维复杂数据的聚类分析是本文作者在香港科技大学跟随Nevin Zhang教授攻读博士期间的主要工作。研究论文Model-based multidimensional clustering ofcategorical data发表在今年《ArtificialIntelligence》杂志的第176期。《ArtificialIntelligence》从1970年开始出版,是人工智能领域老牌顶级期刊。因为版权原因,可能网上下载不到免费的全文,感兴趣的同学可以联系tao.chen2@emc.com。关于文中所用的隐树模型的介绍以及免费软件参见隐树模型项目主页

    (二)多维聚类的概念

     

    假设我们需要对图中的所有图片进行聚类,可能的聚类方法不止一种:按照图片的内容,我们可以把左边的图片标注成袋鼠,而右边的标注成树;而按照图片风格属性,我们可以把上面的图片称为色彩图,而下面的称为线条图。简而言之,关注数据的不同侧面,有可能得到不同的聚类结果。同时这些聚类结果也都是有意义,可以解释的。

     

    生活中多维聚类的例子很多,比如对于人群的划分,可以按照男女等人口统计学信息划分,也可以按照对于某个事件的看法划分。那么从机器学习的角度如何公式化这样的问题,之后又怎么利用概率统计的方法去解决这样的问题呢?下面我们先给出问题的定义。

     

    如图所示,在聚类分析这样的无监督学习中,输入是一个数据表。表的每一行表示一个数据点,而每一列表示描述这个点的一维属性。大数据的一个重要特征就是维度很高(包含很多列),从而带来的维度灾难(curseof dimensionality)。在聚类分析中,表现为:这些维度可能自然地分成一些组,每组包含一些属性,反应了数据某一侧面(facet)的特征。用户可以根据其中一个侧面的属性,对这个数据进行聚类。比如在右表的数据中,一个学生的数据包含了数学成绩,理综成绩,文综成绩,和语文成绩这些属性。我们可以关注学生的数学和理综成绩,按照理科成绩(分析能力)对学生进行聚类;同时也可以关注学生的文综和语文成绩,按照文科成绩(语言能力)对学生进行聚类。

     

    所以多维聚类的问题定义为:

    如何发现数据中包含的多个侧面,即属性的自然分组,针对这些不同侧面进行聚类,从而得到多种聚类方法。

     

     

    (三)多维聚类分析的工具和原理

     

    贝叶斯网络是一种表示和处理随机变量之间复杂关系的工具。它是通过在随机变量之间加箭头而得到的有向无圈图。箭头表示直接概率依赖关系,具体依赖情况由条件概率分布所定量刻画。出于对计算复杂度的考虑,人们会对贝叶斯网络进行一些限制,在实际中使用一些特殊的网络结构。隐树模型(latent tree model)是一类特殊的贝叶斯网,也称为多层隐类模型(hierarchical latent class model), 是一种树状贝叶斯网, 其中叶节点代表观察到的变量,也称为显变量,其它节点代表数据中没有观察到的变量,也称为隐变量。

     

    图中给出了隐树模型的一个例子。其中,学生的“数学成绩”、“理综成绩”、“语文成绩”和“文综成绩”是显变量,而“智力”、“分析能力”和“语言能力”则是隐变量。从“分析能力”到“数学成绩”有一个箭头, 表示“数学成绩”直接依赖“分析能力”,具体依赖情况由右图中的条件概率表所定量所刻画。表中的内容是说,分析能力低的学生在数学科有0.5的概率不及格、0.4的概率及格、0.1的概率得良,而得优的概率则是0; 等等。模型中的其它箭头代表其它变量之间直接依赖关系,每个箭头都有相应的条件概率分布。

     

    在隐树模型中,一个隐变量对应一种数据聚类的方法。隐树模型允许模型中有多个隐变量,所以自然地可以多维同时聚类。在例子模型中,可以按照分析能力或者语言能力对学生聚类,也可以按照智力对学生聚类。在隐树模型中,聚类分析可以通过计算给定学生成绩的后验概率进行判断。所以,利用隐树模型进行多维聚类分析的技术重点就在如何通过观测数据学习一个最优的模型。抽象地说,就是找到能够最好地解释数据的一个生成隐树模型(Generative Latent tree model)。

     

    (四)隐树模型的学习

    隐树模型的学习是一个对模型逐步优化的过程,优化的目标函数是一个称为贝叶斯信息准则(Bayes information criterion, 简称BIC) 的函数:

    BIC(m|D) = max θ log P(D|m, θ) – d(m)logN/2

    BIC准则要求模型与数据尽量紧密地拟合,但其复杂不能过高。所以式中第一项表示拟合程度,而第二项是对于模型复杂度的一个惩罚项。我们的优化过程是一个基于搜索的爬山算法(Hill-Climbing)。以只包含一个隐变量的简单的隐树模型作为搜索的起始模型,在搜索的过程中,逐步引入新的隐变量、增加隐变量的取值个数、或者调整变量之间的连接。这是一个逐步修改模型的过程,在这个过程中,模型与数据的拟合程度不断改进,从而BIC分逐步增加。当模型就变得太复杂时,BIC会不升反降,于是搜索过程停止。

     

    隐树模型的学习是一个非常耗时的过程,主要原因在于对于BIC分数的计算。BIC函数的第一项叫做最大似然函数,在模型包含缺失值或者隐变量时,计算最大似然函数需要调用EM(Expectation-Maximization)算法。尽管我们已经对于限制了模型结构为简单的树状结构,但是在这样的模型上进行EM的计算依然是非常困难。围绕隐树模型的很多工作都是在研究如何对模型学习进行加速的,这儿就不赘述了。

     

    (五)基于隐树模型的多维聚类分析实例



     

    我们以一个真实的数据分析实例来展现多维聚类分析。数据来自某地区的关于贪污的社会调查问卷。通过一些数据预处理,我们的数据(如图所示)包含了1200份的问卷,以及31个问题。比如说C_City表示被访问者对于该地区的贪污普遍性的看法,可以有4个选项,分别是非常普遍,普遍,不普遍,以及非常不普遍。C_Gov和C_Bus分别表示受访者对于该地区政府部门或商业部门的贪污普遍性的看法,同样也有四个选项。Tolerance_C_Gov和Tolerance_C_Bus则分别表示受访者对于该地区的政府部门以及商业部门的贪污的容忍程度,可以选择完全不能容忍,不能容忍,能容忍,完全能容忍。数据表里面的-1表示受访者对该问题的回答缺失。

     

    利用隐树的学习算法,我们从这个数据得到了一个如图所示的模型。叶节点对应问卷问题,即显变量。中间结点,Y0-Y8是从数据中发现的隐变量,括号里面的数字表示这个变量所取的状态个数。我们发现这些隐变量都有一定的意义,比如,Y2和问卷中的Sex,Age,Income,Education这些问题紧密连接,说明Y2应该是表示受访人的人口统计信息。Y3和问卷中的Tolerance_C_Gov和Tolerance_C_Bus紧密联系,说明Y3是反映受访者总体对于贪污的看法。

     

    模型中的每个隐变量表示数据聚类的一种方式。比如,变量Y2有4个值,说明Y2提示数据可以分成四个类。这种聚类主要基于Sex,Age,Income,Education这些人口统计信息相关变量的,所以可以说当我们关注人群的人口统计信息这个侧面时,我们可以根据Y2把人群分成四类。具体地研究这四类的类条件概率(Class-Conditional ProbabilityDistribution)特性,我们进一步发现它们分别代表:低收入的年轻人群,低收入的女性人群,受过高等教育的高收入人群,以及只接受初等教育的一般收入人群。同时,我们看到Y3有3个取值,这说明从人群对于贪污总体看法这个侧面出发,可以把人群分成三类,分别是对于贪污完全不能容忍的人群,对于贪污比较不能容忍的人群,对于贪污可以容忍的人群。同样地,我们的聚类也可以基于其他隐变量所代表的侧面。这样从模型中我们得到了9种聚类的方法,达到了多维同时聚类的效果。

     

    除了聚类,对于这个数据的分析还告诉我们一些隐藏很深的关系。比如在模型中变量Y2和Y3有连线,这表明一个人的背景信息和他对于贪污的容忍程度应该有一定的关联关系。具体地说,在Y2所表示的4类人中,你觉得哪一类是最能容忍贪污,而哪一类是最不能容忍贪污的呢?在模型中,通过对这两个变量的条件概率的分析,我们得到了一个答案,有兴趣的同学可以去论文中验证一下自己的猜测。

     

    (六)相关学术工作

    隐树模型在密度估计,近似推理及隐结构发现等方面都有具体的应用。在多维聚类分析的应用上,我们分析过市场学数据(COILChallenge 2000),某地区的社会调查数据(ICAC),NBA篮球运动员比赛统计数据。最近,随着算法的提速,隐树模型开始被尝试用于文本分析,比如对于网页数据,博客数据等的话题分析。隐树模型最开始的提出是为了对中医的证候分析提供统计解释,有兴趣的同学可以参考隐结构模型与中医证研究

     

    最近两年,多维聚类分析引起了很多机器学习研究人员的兴趣。从2010年开始的MultiClust Workshop已经举办了两届,其中第一届是和KDD2010一起举办,第二届是和ECML/PKDD2011一起举办。而第三届也会与SDM2012一起举办。具体参考文献这儿也不罗列了。

     

    多维聚类分析和基于多视图的学习不应该混淆。多视图学习假设数据的多个视图已知,要求视图之间存在充分性(Sufficiency)和冗余性(Redundancy),通过协同训练等技术,主要提高半监督学习,主动学习的性能。多视图学习中针对聚类这样的无监督任务的研究很少,而且它的目标也是如何提高单一的聚类划分的质量,而不是找到多种划分方法。多视图学习也极少涉及如何发现多个视图,而不是假设他们已知。这方面南京大学周志华教授在今年的中国机器学习及其应用研讨会上提到一些初步研究。实际中,可以考虑先用多维聚类分析找到数据的多个侧面(视图),然后再应用多视图学习的方法。

     

    (七)总结

    对于一个复杂数据,比如文本,视频,图像,或者生物实验数据,人们可以从不同的角度去诠释这样的数据。数据分析家们已经有了这样的共识,那就是以前的单维聚类方法不再适合大数据的多样性特征。多维聚类分析通过对单维聚类问题的扩展,为复杂数据提供了一种新的探索性分析的方式。我们通过找到数据的不同侧面,按照这些侧面进行分别聚类,然后把各种聚类结果全部以一种简单的方式呈现给领域专家,由专家决定他认为最合适的聚类方法。这样的工作流程清晰定义数据科学家和领域专家的职能,通过两者的合作,提高数据的聚类结果,并且提升数据的可解释性。

    关于作者

     

    陈弢:香港科技大学计算机系博士,本科毕业于北大数学学院。现为EMC中国研究院大数据实验室senior research scientist。专注大规模数据分析,研究数据挖掘和机器学习算法在医疗、推荐、互联网等领域的应用。

    posted on 2011-12-21 12:51 wentingtu 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/wentingtu/archive/2011/12/21/2295691.html

    展开全文
  • 文章目录写在前面一、数据分析与Numpy二、多维数组三、Numpy的数据类型 写在前面 代码中的np表示的是numpy,因为导入的时候是:import numpy as np 一、数据分析与Numpy 1、数据分析 MATLAB:专业化数据分析工具 ...

    写在前面

    代码中的np表示的是numpy,因为导入的时候是:import numpy as np

    一、数据分析与Numpy

    1、数据分析
    MATLAB:专业化数据分析工具
    Numpy:更简单上手,且结合了MATLAB大部分功能

    2、Numpy介绍

    • 应用于数值分析领域的Python语言工具
    • 是一个开源的科学计算库
    • 弥补了作为通用编程语言的Python在数值计算方面能力弱、速度慢的不足
    • 拥有丰富的数学函数、强大的多位数组和优异的运算性能
    • 与Scipy、scikit、matplotlib等其他科学计算库可以很好协调
    • 可以取代matlab等工具,允许用户进行快速开发的同时完成交互式的原型设计

    3、Numpy的效率
    11
    可以清楚看到,使用Numpy计算的效率是普通python语句计算的近60倍,这里使用的是微秒(10的-6次方)

    4、练习代码

    import datetime as dt
    import numpy as np
    
    n = 100000
    start = dt.datetime.now()
    A, B = [], []  # 两个空列表
    for i in range(n):
        A.append(i ** 2)  # 计算i的平方
        B.append(i ** 3)  # 计算i的3次方
    C = []
    # 用zip拉链拉起来就可以同时遍历两个列表
    for a, b in zip(A, B):
        C.append(a + b)
    print("直接:", (dt.datetime.now() - start).microseconds)  # 输出直接用py语句来实现计算的运行时间
    
    # 使用Numpy来实现
    start = dt.datetime.now()
    C = np.arange(n) ** 2 + np.arange(n) ** 3
    print("Numpy:", (dt.datetime.now() - start).microseconds)
    

    二、多维数组

    1、多维数组
    数组:空间上内存连续,元素同类型
    Numpy中的数组:是numpy.ndarray这个类实例化来的对象,用于表示数据结构中的
    任意维度的数组(ndarray表示数组名)

    2、创建多维数组对象

    • numpy.arange(起始,终止,步长)
    • numpy.array:被解释为数组的容器
    • ndarray.dtype属性:表示元素的数据类型,astype()方法可以修改元素类型(ndarray表示数组名)
    • ndarray.shape属性:表示数组的维度,reshapre()方法可以改变维数,如b = np.arange(1, 25).reshape(2, 3, 4)
    • 元素索引:数组[页索引][行索引][列索引];数组[页索引,行索引,列索引]

    3、练习代码

    import numpy as np
    
    a = np.arange(1,10,2)
    print(a)
    
    # 一维数组里面放入一个列表
    b = np.array([2,4,6,8,10])
    print(b)
    # 二维数组里面放入两个一维列表
    c = np.array([[1,3,5,7,9],
                  [2,4,6,8,10]])
    print(c)
    
    d = np.array(['1','2','3'])
    
    # 查看数组类型,查看元素类型
    print(c.dtype)
    print(type(c))
    print(type(c[0][3]))
    print(type(d[1]))
    
    # 给数组指定类型
    e = np.array(['1','2','3'], dtype=np.int32)
    print(type(e[0]))
    f = e.astype(np.str)
    print(type(f[0]))
    
    # 查看数组的维度
    print(c.shape)
    # 创建一个2*3*4的数组,一个[]就是一个维度
    # 最内部arange()又代表一个维度,因此是三维
    g = np.array([
        [np.arange(1,5), np.arange(2,6), np.arange(3,7)],
        [np.arange(2,6), np.arange(7,11), np.arange(12,16)]
    ])
    print(g.shape)
    print(g.shape[0])  # 输出数组的页数,2*3*4,所以是2页
    print(g)
    
    # 遍历每个索引下的元素
    h = np.array([
        [
            [1,2],[3,4]
        ],
        [
            [5,6],[7,8]
        ]
    ])
    # shape[0]代表页数,1代表行数,2代表列数……以此类推
    for i in range(h.shape[0]):
        for j in range(h.shape[1]):
            for k in range(h.shape[2]):
                print(h[i,j,k])
    

    三、Numpy的数据类型

    1、numpy的内置类型
    bool_:1字节布尔型

    int8:1字节,有符号整型(正负),-128~127
    int16:2字节,有符号整型(正负)
    uint8:1字节无符号整型,0~255
    uint64:8字节无符号整型

    float16:2字节浮点型
    float64:8字节浮点型

    complex64:8字节复数型
    complex128:16字节复数型

    str_:字符串型

    2、自定义类型
    通过dtype将多个相同或者不同的numpy内置类型组合成某种复合类型
    除了使用内置类型的全称(后面的数字代表位数),还可以通过类型编码字符串(后面的数字代表字节数,1字节=8位)来简化类型的说明

    • numpy.int8——>i1
    • numpy.nint32——>u4
    • numpy.float64——>f8
    • numpy.complex128——>c16
    • numpy.str_——>U字符数
    • numpy.bool_——>b

    3、字节序
    对于多字节的整数可以加上 字节序 前缀:

    <:小端字节序,低数位低地址,前高后低
    
    >:大端字节序,低数位高地址,前低后高
    =:处理器(CPU)系统默认
    

    <:0x1234

    L H
    0x34 0x12

    >:0x1234

    L H
    0x12 0x34

    4、练习代码

    import numpy as np
    
    a = np.array([('abc',[1,2,3,4,5])],dtype='U3, 5i4')
    # U3, 5i4表示一个新的类型,3个字符长度的字符串,5个4字节大小的int类型
    # 访问各个字符,用默认字段名f:['f0'],['f1'],['f2']……
    # print(a[0]['f0'])  # 访问到abc
    # print(a[0]['f1'])  # 访问到数字
    # print(a[0]['f0'][1])  # 访问b
    # print(a[0]['f1'][2])  # 访问3
    
    # 自定义 字段名:字段名,类型(全称),字符数/字节大小
    b = np.array([('abc',[1,2,3,4,5])],
                 dtype=[('ss', np.str, 3), ('ii', np.int, 5)])
    # 使用自定义字段名来访问
    # print(b[0]['ss'])  # 访问到abc
    # print(b[0]['ii'])  # 访问到数字
    # print(b[0]['ss'][1])  # 访问b
    # print(b[0]['ii'][2])  # 访问3
    
    # 第三种方式:既可以自定义字段名,又可以使用类型简称
    c = np.array([('abc',[1,2,3,4,5])],dtype={
        "names":['ss', 'ii'],
        "formats":['U3', '5i4'],
    })
    # 使用自定义字段名来访问
    # print(c[0]['ss'])  # 访问到abc
    # print(c[0]['ii'])  # 访问到数字
    # print(c[0]['ss'][1])  # 访问b
    # print(c[0]['ii'][2])  # 访问3
    
    # 第四种方式:类型后面跟内存偏移量,也是既可以自定义字段名,又可以使用类型简称
    d = np.array([('abc',[1,2,3,4,5])],dtype={
        "ss":('U3', 0),
        "ii":('5i4', 12)
    })
    # 使用自定义字段名来访问
    # print(d[0]['ss'])  # 访问到abc
    # print(d[0]['ii'])  # 访问到数字
    # print(d[0]['ss'][1])  # 访问b
    # print(d[0]['ii'][2])  # 访问3
    
    # 字节偏移量
    # 同时拥有两个类型:一个u2,一个u1,u1的one偏移量为0,two偏移量为1
    # >表示是大端字节序,前低后高,偏移量为0则是的低的,即12;偏移量为1则是高的,即34
    e = np.array([0x1234], dtype=(
        '>u2',{'one':('u1',0), 'two':('u1',1)}
    ))
    print('{:x}'.format(e[0]))  # {:x}表示以16进制访问,e[0]表示第一个类型u2
    print('{:x}、{:x}'.format(e['one'][0],e['two'][0]))
    # 改为小端字节序,前高后低,偏移量为0则是的低的,即34;偏移量为1则是高的,即12
    e = np.array([0x1234], dtype=(
        '<u2',{'one':('u1',0), 'two':('u1',1)}
    ))
    print('{:x}、{:x}'.format(e['one'][0],e['two'][0]))
    
    展开全文
  • 今天来讲讲数据仓库中多维数据集的构建方法,其他数据仓库系列文章请点击这里查看,这里就不多说了。多维数据集向导可以帮助我们为多维数据集定义度量值组和维度。在下面的任务中,将使用多维数据集向导来构建多维...
  • 多维数据模型是为了满足用户从多角度多层次进行数据查询和分析的需要而建立起来的基于事实和维的数据库模型,其基本的应用是为了实现OLAP(Online Analytical Processing)。 当然,通过多维数据模型的数据展示、...
  • 它们不仅是业务操作的记录,也是进一步进行统计、分析和决策所需要的原始数据,是企业和管理部门的宝贵信息资源。操作数据可以经过适当的抽取、净化、聚合后存入数据仓库。数据仓库存储的是“战术性”的信息,如“第...
  • 多维数据模型

    2018-12-26 13:42:16
    多维数据模型是数据仓库的一大特点,也是数据仓库应用和实现的一个重要的方面,通过在数据的组织和存储上的优化,使其更适用于分析型的数据查询和获取。 多维数据模型的定义和作用 多维数据模型是为了满足用户从多...
  • 二、选中分析-度量-多维刻度 再在选项中勾中组图。 结果分析 古典解的迭代过程和有关压力指标值 Young氏压力指标值为0.21764 K压力指标值为0.16856,RSQ=0.82424,说明模型拟合得还不错。 拟合点在二维...
  • 多维olap报表 One of the most asked questions is how to link an OLAP cube with a relational database, or in another way how to join the result of an MDX query with a table stored in a relational .....
  • 多维交叉分析

    2012-04-13 16:56:09
    我们在进行数据分析的时候,大部分时间都在使用趋势分析、比较分析、细分分析这三类方法,但其实还有一个方法我们也会经常使用——交叉分析,尤其是在排查数据异常的问题时,交叉分析就能展现其强大的威力。...
  • 主要介绍了php递归遍历多维数组的方法,实例分析了php数组遍历的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 数据仓库多维数据模型设计

    万次阅读 2017-11-09 18:14:59
    建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,...数据仓库的建模方法同样也有很多种,每一种建模方法其实代表了哲学上的一个观点,代表了一种归纳,概括世界的一种方法。 目前业界较为流行的数据...
  • 这篇文章主要介绍了php简单构造json多维数组的方法,结合实例形式分析了php数据库查询结果的json格式转换操作技巧,需要的朋友可以参考下本文实例讲述了php简单构造json多维数组的方法。分享给大家供大家参考,具体...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,380
精华内容 8,952
关键字:

多维数据分析方法实例