Python数据挖掘算法与应用 课件 第4章 数据的描述与可视化_第1页
Python数据挖掘算法与应用 课件 第4章 数据的描述与可视化_第2页
Python数据挖掘算法与应用 课件 第4章 数据的描述与可视化_第3页
Python数据挖掘算法与应用 课件 第4章 数据的描述与可视化_第4页
Python数据挖掘算法与应用 课件 第4章 数据的描述与可视化_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DescriptionandVisualizationofData第4章数据的描述与可视化概述4.2学习目标4.14.34.44.5数据对象与属性类型数据的基本统计描述数据对象的相似性度量数据可视化1概述Summarize4.1数据描述从提取信息的角度来看,当我们采集到一堆杂乱无章的数据后,首先需要科学合理地描述这些信息。例如,对于连续变量数据进行分析时,可以用百分位值、集中趋势、离散趋势和数据分布的统计量来描述;对于分析数据向其中心值聚集的程度这类问题时,可以通过平均值、中位数和众数等数据来描述;对于讨论数据远离中心值程度的这些问题时,可以通过范围、标准差和方差等数据来描述;对于样本量较大情况下连续变量的研究,有时在数据描述时会提前提出假设,认为数据应当服从某种分布,可以采用一系列的指标来描述数据离散分布的程度。在数据描述方面,中学讲得比较多的是统计图表,有时我们还需要用列表,画图来描述,这就是数据的可视化问题,因此利用可视化反应信息是一种非常重要的数据描述方法。同时也要注意到不同的数据图和表反应的信息是不一样的。比如对数据分类时,如果需要了解数据分布,则可以选择条形图;如果需要了解数据结构,则选择饼图;而对于连续数据,也可以选择直方图。数据可视化数据可视化数据可视化(DataVisualization)是借助于图形化手段,清晰有效地表达数据信息。数据可视化的客体是数据,它是以数据为工具,可视化为手段,目的是描述真实的世界和探索世界。常用数据可视化工具:Tableau可以帮助用户快速分析、可视化并分享信息。QlikView是一个完整的商业分析软件,使开发者和分析者能够构建和部署强大的分析应用。DataFocus是一款新型的商业智能产品,主要用于智能的大数据分析领域。FineBI支持多种视图对数据表进行可视化管理。现代数据可视化技术指的是运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。它涉及到计算机图形学、图像处理、计算机辅助设计、计算机视觉和人机交互技术等多个领域。在数据分析的初始阶段,通常都要进行可视化处理。Python数据可视化是利用matplotlib,它是建立在Numpy之上的一个Python图库,包括了很多绘图函数,类似Matlab的绘图框架。2数据对象与属性类型DataObjectandAttributeTypes4.2数据对象(DataObject)是指客观存在并且可以相互区别事物的数据描述。又称为样本或实例。数据对象可以是外部实体(如产生或使用信息的任何事物)、事物(如报表)、行为(如打电话)、事件(如响警报)、角色(如教师、学生)、单位(如会计科)、地点(如仓库)或结构(如文件)的数据描述等。总之,可以由一组属性值来确定的实体都可以被认为是数据对象。数据对象例如,一个班级只有一个班长,而每个班长只在一个班级任职,则班级对象与班长对象的联系是一对一的。(1)一对一联系(1∶1)例如,一个班级有多名学生,而每名学生只属于一个班级,则班级对象与学生对象的联系是一对多的。(2)一对多联系(1∶N)例如,一名学生可以学习多门课程,而每一门课程又可以有多名学生来学,则学生对象和课程对象之间的联系是多对多的。(3)多对多联系(M∶N)数据对象彼此之间相互连接的方式称为联系,也称为关系。联系可分为以下3种类型:属性与属性类型属性(Attribute)是一个数据字段,表示数据对象的一个特征。数据对象可以由若干个属性来描述,但属性具有原子性,不可再分解。例如,学生是一个数据对象,可以由属性(字段)学号、姓名、性别、出生日期、专业等来描述。一个属性的类型由该属性可能具有的值集合决定,一般分为两大类,一类是定性描述的属性,即用文字语言进行相关描述的属性,如标称属性、二元属性和序数属性等;另一类是定量描述的属性,即用数学语言进行描述的属性,可以是整数值或连续值。标准属性标称属性(NominalAttribute)的值是一些符号或事物名称。每个值代表某种类别、编码或状态,因此标称属性又被看做是分类的(Categorical)。标称属性的值是枚举的,可以用数字表示这些符号或名称。如姓名、性别、籍贯、邮政编码或婚姻状态等。标称属性的值不仅仅是不同的名字,它提供了足够的信息用于区分对象。鉴于标称属性值并不具有有意义的序,因此统计它的中位数和均值是没有意义的,但是可以找出某个出现次数最多的值。比如,出现次数最多的姓名等,这个就可以用众数(Mode)来表示。因此,标称属性的中心趋势度量一般是众数。属性与属性类型二元属性分为对称的和非对称的:(1)对称的二元属性:如果两种状态具有同等价值,并且携带相同权重。如抛硬币的结果状态,出生婴儿的性别属性等,分别用0和1表示。(2)非对称的二元属性:两种状态的结果不是同等重要的。如新冠肺炎核酸检测的阳性和阴性结果。为了方便研究,通常将重要结果(通常是稀有的)的编码置为1,非重要结果的编码置为0。二元属性二元属性(BinaryAttribute)是标称属性的特例,只有两个状态:0或1,其中0通常表示该属性不出现,1表示该属性出现。常见的二元属性如抛一枚硬币是正面朝上还是反面朝上,新冠肺炎的核酸检测结果为阴性还是阳性等。二元属性又称布尔属性,两种状态分别对应False和True。属性与属性类型序数属性序数属性(OrdinalAttribute)的可能值之间存在有意义的序或秩评定,但是相继值之间的差是未知的,也就是说对应的值有先后次序。如五级评分标准:优秀(90≤X≤100)、良好(80≤X<90)、中等(70≤X<80)、及格(60≤X<70)和不及格(X<60)等,这些值都具有有意义的先后次序,因此也可以用数字如1、2、3、4、5分别对应属性的取值。序数属性可以通过把数值量的值域划分成有限个有序类别,如客户满意度评价:0-很不满意、1-不满意、2-中性、3-满意、4-很满意等,即可以把数值属性离散化。由于序数属性是有序的,它的中位数是有意义的,因此序数属性的中心趋势度量可以是众数和中位数。标称数属、二元数属和序数属性都是定性的,所以它们只能描述对象的特征,而不能给出实际大小或数值。属性与属性类型数值属性离散属性与连续属性数值属性(NumericAttribute)是可以度量的量,用整数或实数值表示,如成绩、年龄、体重等。数值属性分为区间标度和比率标度两类,区分的原则主要是该属性是否有固有的零点。区间标度属性(Interval-scaledAttribute):用相等的单位尺度度量,区间属性的值有序,取值可以为正、0、负。如温度属性表示为:-7℃~+3℃。比率标度属性(Ratiao-scaledAttribute):具有固定零点的数值属性,比值有意义。如重量、高度、速度和货币量等属性。由于比率标度数据属性值是有序的,因此可以计算均值、方差、中位数、众数等。机器学习中的分类算法通常把属性分为离散的和连续的。离散属性(DiscreteAttribute)是指具有有限个或无限个可数个数的属性。如年龄(有限个值)、顾客编号(无限可数)等属性。连续属性(ContinuousAttribute)是指非离散属性的那些属性。如人的身高属性取值是连续的。连续值是有范围的。在实践中,实数值用有限位数字表示,连续属性一般用浮点变量表示。3数据的基本统计描述BasicStatisticalDescriptionofTheData4.3中心趋势度量均值数据集“中心”的最常用的数值度量是(算术)均值(MeanValue)。设某属性X的N个观测值为x1,x2,…,xN,则该集合的均值(Mean)为:中心趋势在统计学中是指一组数据向某一中心值靠拢的程度,它反映了一组数据中心点的位置所在。中心趋势度量就是寻找数据水平的代表值或中心值。中心趋势度量包括均值、中位数、众数和中列数。在实际问题中,对于X的每个xi可以与一个权重

关联。权重反映它们所依附对应值的重要性或出现的频率。当各项权重不相等时,计算平均数时就要采用加权平均数(WeighedMean)。式(4-2)说明了加权平均值的大小不仅取决于总体中各单位数值的大小,而且取决于各数值出现的次数(频数)。(4-1)(4-2)中心趋势度量中位数中位数(Median)又称中点数或中值,它是按顺序排列的一组数据中居于中间位置的数。即在这组数据中,有一半的数据比它大,另一半的数据比它小。在概率论与统计学中,中位数一般用于数值型数据,在数据挖掘中可以把中位数推广到序数型数据中。假定有某属性X的N个值按递增顺序排列,如果N是奇数,则中位数是该有序数列的中间值;如果N是偶数,则中位数是中间两个值的任意一个。对数值型区间,一般约定中位数取中间两个数的平均值,中间数位置如式(4-3)所示。

(4-3)中心趋势度量众数众数(Mode)是一组数据中出现次数最多的数值,可以对定性和定量型属性确定众数。众数是一种位置平均数,是总体中出现次数最多的变量值。从分布的角度看,众数是具有明显集中趋势点的数值,一组数据分布最高峰点所对应的数值即为众数。有时众数在一组数中有好几个。具有一个、两个或三个众数的数据集分别称为单峰(Unimodal)、双峰(Bimodal)和三峰(Trimodal)。一般具有两个或两个以上众数的数据集称为多峰的(Multimodal)。在极端情况下,如果每个数值只出现一次则它没有众数。其中L表示众数所在的下限;Δ1表示众数所在组次数与其下限的邻组次数之差;Δ2表示众数所在组次数与其上限的邻组次数之差;d表示所在组组距。对于非对称的单峰型数据集,一般有下面的经验关系:mean-mode≈3×(mean-median)。中列数中列数(Midrange)在统计中指的是数据集里最大值和最小值的算术平均值,也可以度量数值数据的中心趋势。(4-4)例4.1某企业50名工人日加工零件的数据如表4.1所示,分别计算加工零件数值的均值、中位数和众数。表4.1加工零件数统计表按零件数分组(个)频数(人)105~1103110~1155115~1208120~12514125~13010130~1356135~1404

例4.2利用Python求均值、中位数和众数。importpandasaspdimportnumpyasnpss=pd.Series(np.random.randint(8,size=18))

#生成0~7的18个整数print(ss)print('均值:\n',ss.mean())print('中位数:\n',ss.median())print('众数:\n',ss.mode())数据散布的度量数据散布的度量用于评估数值数据散布或发散的程度。散布度量的测定是对统计资料分散状况的测定,即找出各个变量值与集中趋势的偏离程度。通过度量散布趋势,可以清楚地了解一组变量值的分布情况。数据散布的度量包括极差、分位数、四分位数、百分位数和四分位数极差。五数概括可以用盒图显示,它对于识别离群点是有用的;方差和标准差也可以反映数据分布的散布状况。极差(Range)又称范围误差或全距,是一组观测值的最大值与最小值之间的差距。它是标志值变动的最大范围,是测定标志变动的最简单指标。极差没有充分利用数据的信息,但计算十分简单,仅适用样本容量较小(n<10)情况。分位数又称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,常用的有中位数(即二分位数)、四分位数和百分位数等。四分位数是将全部数据由小到大(或由大到小)排序后,用3个点将全部数据分为4等份,与这3个点位置上相对应的数值称为四分位数,分别记为Q1(下四分位数,25%)、Q2(中位数,50%)、Q3(上四分位数,75%)。其中,Q3到Q1之间距离差的一半又称为半四分位差,半四分位差越小,说明中间部分的数据越集中;半四分位差越大,则意味着中间部分的数据越分散。Q1和Q3之间的距离是散布的一种简单度量,它给出被数据的中间一半所覆盖的范围。该距离称为四分位数极差(IQR),定义为:IQR=Q3-Q1极差、四分位数和四分位数极差数据散布的度量例4.3在一个班级中随机抽取10名学生,得到每名学生的英语考试分数(单位:分)如下:91,69,83,75,78,81,96,92,88,86。求IQR。解:第一步,9名学生考试分数进行排序:69,75,78,81,83,86,88,91,92,96第二步,计算机Q1、Q3:Q1位置=(10+1)/4=2.75,即Q1在第2个数值(75)和第3个数值(78)之间0.75的位置上,因此,Q1=75+(78-75)×0.75=77.25(分);Q3位置=3(10+1)/4=8.25,即Q3在第8个数值(91)和第9个数值(92)之间0.25的位置上,因此Q3=91+(92-91)×0.25=91.25(分)第三步,计算四分位数极差IQR:IQR=Q3-Q1=91.25-77.25=14(分)数据散布的度量在对称分布中,中位数(和其它中心度量)把数据划分成相同大小的两半。对于偏斜分布,除中位数之外,还提供两个四分位数Q1和Q3更加有益。识别可疑离群点的通常规则是,挑选落在上四分位数之上或下四分位数之下至少1.5×IQR处的值。

五数概括法(Five-numberSummary)即用下面的五个数来概括数据集,分别是最小值、下四分位数(Q1)、中位数(Q2)、上四分位数(Q3)和最大值。箱线图(BoxPlot)又称为盒图或盒式图,是一种用作显示一组数据分散情况的统计图,因形状像箱子而得名,箱线图体现了五数概括,在各种领域也经常用到,常见于品质管理,快速识别异常值等。一般异常对象被称为离群点。箱线图示意图如图4.1所示。离群点上限中位数上四分位数Q3下四分位数Q1下限图4.1箱线图示意图图4.1中的参数下限、下四分位数、中位数、上四分位数和上限统称为箱线图的五大参数。其中上限是非异常范围内的最大值,且上限=Q3+1.5×IQR,下限是非异常范围内的最小值,且下限=Q1-1.5×IQR。

图4.2例4.5程序运行结果4数据对象的相似性度量SimilarityMeasuresforDataObjects4.4数据矩阵与相似矩阵假设有n个对象(如人),被p个属性(又称维或特征,如年龄、身高、体重或性别)刻画,这些对象记作x1=(x11,x12,…,x1p),x2=(x21,x22,…,x2p),……,其中xij是对象xi的第j个属性的值,对象xi也称作对象的特征向量。把xi的集合叫做数据矩阵,各个对象之间的距离构成的矩阵,叫做相异性矩阵,通常情况下,常用的聚类算法都需要在这两种数据结构上运行。数据矩阵或称为对象-属性结构,这种数据结构用关系表的形式或n×p(n个对象×p个属性)矩阵存放n个对象,每行对应于一个对象。相异矩阵或称对象-对象结构:存放n个对象两两之间的相异度,通常用一个n×n矩阵表示。其中d(i,j)是对象i和对象j之间的相异性或“差别”的度量,一般而言,d(i,j)是一个非负的数值,对象i和j彼此高度相似或“接近”时,d(i,j)值接近于0;对象i和j越不同,d(i,j)值就越大。注意,d(i,i)=0,即一个对象与自己的相异性为0。此外,如果d(i,j)=d(j,i)时,则矩阵是对称的。标准属性的相异性两个标称属性对象i和j之间的相异性d可以根据不匹配率来计算:其中,m表示匹配的数目,即i和j取值相同状态的属性数;p表示对象的属性总数。有时可以通过赋予m较大的权重,或者赋给有较多状态属性的匹配具有更大权重来增加m的影响。对象i和j之间的相似性为:sim(i,j)=1-d(i,j)。例4.6标称属性之间相异性矩阵示例,数据如表4.2所示。表4.2例4.6数据表对象(标识)籍贯(标称属性)1北京2湖南3江苏4北京由于我们只有一个标称属性籍贯,即p=1,当对象i和j相匹配时,d(i,j)=0;当对象不匹配时,d(i,j)=1。于是,我们得到相异性矩阵:二元属性的相异性二元属性(DoubleAttributes)只有两种状态:0或1,其中0表示该属性不出现,1表示它出现。例如,给出一个描述患者的属性是吸烟,1表示患者吸烟,而0表示患者不吸烟。不能像数值一样来处理二元属性,需要采用特定的方法来计算二元数据的相异性。如果所有的二元数据都被看作具有相同的权重,则我们得到一个两行两列的列联表,如表4.3示,其中q是对象i和j都取1的属性数,r是在对象i中取1、在对象j中取0的属性数,s是在对象i中取0、在对象j中取1的属性数,而t是对象i和j都取0的属性数。属性的总数是p,其中p=q+r+s+t。对于对称的二元属性,每个状态都同样重要。基于对称二元属性的相异性称为对称二元相异性。如果对象i和对象j都用对称的二元属性刻画,则i和j的相异性为:(4-7)表4.3二元属性的列联表对象i对象j

10sum1qrq+r0sts+tsumq+sr+tp二元属性的相异性对于非对称的二元属性,两个状态不是同等重要的,如核酸检测的阳性(1)和阴性(0)结果。给定两个非对称的二元属性,两个都取值1的情况(正匹配)被认为比两个都取0的情况(负匹配)更有意义。因此,这样的二元属性经常被认为是“一元的”(只有一种状态),基于这种属性的相异性称为非对称的二元相异性,其中负匹配t被认为是不重要的,因此在计算时常常被忽略,如式(4-8)所示。(4-8)互补地,也可以基于相似性而不是基于相异性来度量两个二元属性的差别,则对于i和j之间非对称的二元相似性可以用下式计算:(4-9)式(4-9)的系数sim(i,j)被称为Jaccard系数,它在文献中被广泛使用。二元属性的相异性例4.7二元属性之间相异性矩阵示例。假设一个患者记录表(见表4.4)包含属性:姓名、性别、发烧、咳嗽、因素1、因素2、因素3和因素4,其中姓名是对象标识符,性别是对称属性,其余都是非对称二元的属性。表4.4患者记录的数据表姓名性别发烧咳嗽因素1因素2因素3因素4刘世元MYNPNNN李吉友MYYNNNN于金凤FYNPNPN……………………对于非对称属性,值Y和P被设置为1,值N被设置为0。假设患者(对象)之间的距离只基于非对称属性来计算。根据(4-7)式,三个患者刘世元、李吉友和于金凤两两之间的相异性如下:这些度量值显示了刘世元和李吉友、李吉友和于金凤都不大可能患类似的疾病,因为他们的相异性较高。在这三个患者中,刘世元和于金凤最有可能患类似的疾病。数值属性的相似性度量

在数据分析过程中,常常需要把数据对象区分为不同的类别,判断不同对象是否归于同一个类别的依据是对象之间的相似性较高,而对象相似性一般由对象之间的距离来度量。距离是指把一个对象看做N维空间中的一个点,并在空间中定义距离。基于距离的相似性是指当两个对象距离较近时其相似性就大,否则相似性就小。假设n维空间两个点Xi(xi1,xi2,…,xin),Xj(xj1,xj2,…,xjn),定义Xi与Xj的距离如下:欧几里得距离(EuclideanDistance)是数据分析算法中最常用的距离度量,表示空间中两点之间的直线距离。公式如下:欧几里得距离欧几里得距离(EuclideanDistance)是数据分析算法中最常用的距离度量,表示空间中两点之间的直线距离。公式如下:切比雪夫距离(4-10)(4-11)

数值属性的相似性度量曼哈顿距离(ManhattanDistance)表示城市中两个点之间的街区距离,也称为城市街区距离。公式如下:曼哈顿距离将曼哈顿距离与欧氏距离推广,可以得到闵可夫斯基距离(MinkowskiDistance),也叫范数。公式如下:闵可夫斯基距离(4-12)(4-13)其中p是一个可变参数,根据可变参数的不同,闵氏距离可以表示不同类型的距离:当p=1时,就是曼哈顿距离;当p=2时,就是欧氏距离;当p→∞时,就是切比雪夫距离。数值属性的相似性度量例4.8

Python计算各类距离。importnumpyasnpXi=np.array([1,2,3])Xj=np.array([4,5,6])d_Eu=np.sqrt(np.sum(np.square(Xi-Xj)))#欧氏距离d_Ch=np.abs(Xi-Xj).max()#切比雪夫距离d_Ma=np.sum(np.abs(Xi-Xj))#曼哈顿距离print('Xi与Xj的欧氏距离为:',d_Eu)print('Xi与Xj的切比雪夫距离为:',d_Ch)print('Xi与Xj的曼哈顿距离为:',d_Ma)序数属性的相似性度量在计算对象之间的相异性时,序数属性的处理与数值属性非常类似。假设f是用于描述n个对象的一组序数属性之一。关于f的相异性计算涉及如下步骤:第i个对象的f值为xif,属性f有Mf有序的状态,表示排位1,…,Mf。用对应的排位rif∈{1,…,Mf}取代xif。由于每个序数属性都可以有不同的状态值,所以通常需要将每个属性的值域映射到[0.0,1.0]上,以便每个属性都有相同的权重。用zif代替第i个对象的rif来实现数据规格化,其中(3)相异性可以用4.4.4节介绍的任意一种数值属性的距离度量计算,使用zif作为第i个对象的f值。

(4-14)例4.9序数型属性间的相异性示例。假定在表4.4中的样本数据中,某患病因素为高血压,共有三种状态,一级高血压、二级高血压、三级高血压。也就是Mf

=3。第一步,如果把血压的每个值替换为它的排位数1、2、3,假如4名患者血压属性分别被赋值为3、1、2、3。第二步,通过将排位数1映射为0.0、排位2映射为0.5、排位3映射为1.0来实现对排位的规格化。第三步,我们可以使用比如说欧几里得距离(4-10)式得到如下的相异性矩阵:由相异性矩阵可以看出,对象1与对象2不相似,对象2与对象4也不相似,即d(2,1)=1.0,d(4,2)=1.0。这符合直观,因为对象1和对象4都是三级高血压,对象2是一级高血压。序数属性的相似性值也可以由相异性值得到,如:sim(i,j)=1-d(i,j)。混合类型属性的相似性所谓混合类型属性是指一组数据拥有多种类型的属性。计算混合属性类型对象之间的相异性方法有两种:一种方法是将每种类型的属性分成一组,对每种类型分别进行数据挖掘分析(例如聚类分析)。如果这些分析得到兼容的结果,则这种方法是可行的。然而,在实际应用中,每种属性类型分别分析不大可能产生兼容的结果。另一种更为可取的方法是将所有属性类型一起处理,只做一次分析。这样就需要将不同的属性组合在单个相异性矩阵中,把有意义的属性都转换到共同的区间[0.0,1.0]上。假设数据集包含p个混合类型的属性,对象i和对象j之间的相异性d(i,j)定义为:(4-15)

混合类型属性的相似性例4.10混合类型属性间的相异性。我们来计算表4.5中对象的相异性矩阵。表4.5包含混合类型属性的样本数据集对象标识符属性1(标称的)属性2(序数的)属性3(数值的)1北京优秀452天津中等223上海良好644北京优秀28利用上面公式(与4.4.2和4.4.5方法相同)分别计算出属性1、属性2的相异性矩阵M1和M2:

由表4.5可以看出,对象1和对象4在属性1和属性2上的值相同,因此能够直观地猜测出它们两个最相似。这一猜测通过相异性矩阵得到了印证,因为d(4,1)是任何两个不同对象的最小值。余弦相似性余弦相似性是用向量空间中两个向量夹角的余弦值作为衡量两个对象间差异的大小,它的取值范围在-1到1之间。余弦值越接近1,也就是两个向量越相似,完全相同时数值为1;相反方向时为-1;正交或不相关为0。二维向量余弦相似性如图4.3所示。最常见的应用是计算文本相似度,具体做法是分别抽取两个文档的所有特征词,建立两个文本向量,计算这两个向量的余弦值,就可以知道两个文档在统计学方法中的相似情况。实践证明,这是一个非常有效的方法。θX1=(x11,x12)X2=(x21,x22)x1x2图4.3平面向量余弦相似性示意图假设n维向量Xi=(xi1,xi2,…,xin),Xj=(xj1,xj2,…,xjn),θ是Xi和Xj的夹角,余弦相似性公式如下:其中Xi·Xj为向量的内积(数量积),||Xi||为向量的模。例4.11用上述理论计算文本相似性。为了简单起见,这里只计算句子的相似度。句子A:这只皮靴号码大了,那只号码合适。句子B:这只皮靴号码不小,那只更合适。计算上面两个句子相似程度的基本思路是:如果这两个句子所用特征词相同的越多,则它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。第一步,分词:句子A:这只/皮靴/号码/大了,那只/号码/合适。句子B:这只/皮靴/号码/不/小,那只/更/合适。第二步,列出所有的词:这只,皮靴,号码,大了,那只,合适,不,小,更第三步,计算词频:句子A:这只1,皮靴1,号码2,大了1,那只1,合适1,不0,小0,更0句子B:这只1,皮靴1,号码1,大了0。那只1,合适1,不1,小1,更1第四步,写出词频向量:句子A:(1,1,2,1,1,1,0,0,0)句子B:(1,1,1,0,1,1,1,1,1)利用式(4-16)余弦相似性计算过程如下:例4.12利用Python求例4.11中文本向量的余弦相似性。求余弦相似性需要用到np.linalg.norm来求向量的范式,等同于求向量的欧式距离。

importnumpyasnpX1=np.array([1,1,2,1,1,1,0,0,0])X2=np.array([1,1,1,0,1,1,1,1,1])X1_norm=np.linalg.norm(X1)X2_norm=np.linalg.norm(X2)cos=np.dot(X1,X2)/(X1_norm*X2_norm)#引用计算内积函数np.dot()print('X1和X2余弦相似性:',cos)5数据可视化DataVisualization4.5基于像素的可视化技术基于像素的可视化技术(Pixel-orientedTechnique)在屏幕上创建m个窗口,每维一个,记录着m个维值映射到这些窗口中对应位置上的m个像素,像素的颜色反映对应的值。在窗口内,数据值按所有窗口共用的某种全局序安排,全局序可以用一种对研究问题有一定意义的方法,通过对所有记录排序得到。近些年来,基于像素的可视化技术在很多具体场景中得到了广泛的应用并且充分验证了该方法的有效性。例4.13基于像素的可视化示例。假设某电商的顾客信息表,包含4个维(属性):收入、信贷额度、成交量和年龄。通过可视化技术分析收入属性与其它属性之间的相关性。对所有顾客按收入递增序排序,并使用这个序,在四个可视化窗口安排顾客数据,如图4.4所示。像素颜色这样选择:值越小,颜色越淡。使用基于像素的可视化,可以很容易地得到如下观察:信贷额度随收入增加而增加;收入处于中部区间的顾客更可能从该电商处购物;收入与年龄之间没有明显的相关性。基于像素可视化技术的一个缺点是,它们对于理解多维空间的数据分布帮助不大,例如它们并不能显示在多维子空间是否存在稠密区域。几何投影可视化技术二维数据的散点图二维数据的散点图是在笛卡尔坐标系两个坐标轴下绘制的二维数据的散点图。也可以使用不同颜色或形状表示不同的数据点以增加到第三维。例4.14Python绘制二维散点图并用不同颜色显示。importmatplotlib.pyplotaspltimportnumpyasnpn=50x=np.random.rand(n)*2#随机产生50个0~2之间的x,y坐标值y=np.random.rand(n)*2colors=np.random.rand(50)#随产生50个0~1之间的颜色值area=np.pi*(10*np.random.rand(n))**2#点的半径范围:0~10plt.scatter(x,y,s=area,c=colors,alpha=0.5,marker=(9,3,30))plt.show()程序运行结果如图4.5所示。图4.5例4.14程序运行结果几何投影可视化技术三维数据的散点图三维数据散点图是在笛卡尔坐标系的三个坐标轴下绘制的散点图。如果使用颜色信息,也可以显示4维数据点。对于超过4维的数据集,散点图一般不太有效。例4.15利用鸢尾花数据集前三个特征,绘制三维散点图并用不同颜色显示。importpandasaspdimportmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportAxes3D#绘制3D坐标的函数fromsklearn.datasetsimportload_irisiris=load_iris()#导入鸢尾花df=pd.DataFrame(iris.data[:],columns=iris.feature_names[:])x=df['sepallength(cm)']#设置x、y、z轴y=df['sepalwidth(cm)']z=df['petallength(cm)']fig=plt.figure()#绘图ax=Axes3D(fig)ax.scatter(x,y,z)ax.set_xlabel('sepallength(cm)',fontdict={'size':10,'color':'black'})ax.set_xlabel('sepalwidth(cm)',fontdict={'size':10,'color':'black'})ax.set_xlabel('petallength(cm)',fontdict={'size':10,'color':'black'})plt.show()程序运行结果如图4.6所示。图4.6例4.15程序运行结果几何投影可视化技术散点图矩阵散点图矩阵(ScatterMatrix)是散点图的一种扩充,提供每个维与其它维的可视化。Python通过函数scatter_matrix()绘制散点图矩阵。例4.16绘制散点图矩阵示例。importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltv1=np.random.normal(0,1,100)#生成数据v2=np.random.randint(0,23,100)v3=v1*v2df=pd.DataFrame([v1,v2,v3]).T#3*100的数据集pd.plotting.scatter_matrix(df,diagonal='kde',color='b')#绘制散点图矩阵plt.show()程序运行结果如图4.7所示。图4.7例4.16程序运行结果几何投影可视化技术平行坐标图随着维度的增加,散点图矩阵变得不太有效。平行坐标图(ParallelCoordinatesPlot)是对具有多个属性问题的一种可视化方法。在平行坐标图中,数据集的一行数据在平行坐标图中用一条折线表示,纵向是属性值,横向是属性类别(用索引表示)。例4.17Pandas包绘制平行坐标图示例。importpandasaspdimportmatplotlib.pyplotaspltfrompandas.plottingimportparallel_coordinatesimportseabornasseadata=sea.load_dataset('iris')fig,axes=plt.subplots()parallel_coordinates(data,'species',ax=axes)plt.legend(loc='uppercenter',bbox_to_anchor=(0.5,-0.1),ncol=3,fancybox=True,shadow=True)plt.show()程序运行结果如图4.8所示。图4.8例4.17程序运行结果基于图符的可视化技术切尔诺夫脸切尔诺夫脸(ChernoffFaces)是统计学家赫尔曼·切尔诺夫于1973年引进的。切尔诺夫脸把多达18个变量的多维数据以卡通人物的脸显示出来,有助于揭示数据中的趋势。脸的要素有眼、耳、口和鼻等,用其形状、大小、位置和方向表示维度的值。切尔诺夫脸利用人的思维能力,识别面部特征的微小差异并且立即消化、理解许多面部特征。观察大型数据表可能是令人乏味的,切尔诺夫脸可以浓缩数据,从而更容易被人们消化理解,有助于数据的可视化。切尔诺夫脸有对称的切尔诺夫脸(18维)和非对称的切尔诺夫脸(36维)两种类型。如图4.9所示。图4.9切尔诺夫脸(每张脸表示一个n维数据)由于人类非常善于识别脸部特征,脸谱化使得多维度数据容易被分析人员消化理解,有助于数据的规律和不规律性的可视化。而切尔诺夫脸的局限性在于,它无法表示数据的多重联系,以及未能显示具体的数据值。这种方法已被应用于多地域经济战略指标数据分析,空间数据可视化等领域。基于图符的可视化技术人物线条画人物线条画(StickFigure)可视化技术是把多维数据映射到5-段人物线条画中,其中每幅画都有一个四肢和一个躯体。两个维度被映射到显示轴(X轴和Y轴),而其余的被映射到四肢角度和长度。下图显示的是人口普查数据,其中年龄和收入被映射到显示轴,而其他维被映射到人物线条画。如果数据项关于两个显示维相对稠密,则结果可视化显示纹理模式,从而反应数据趋势,如图4.10所示。图4.10人物线条画层次可视化技术对于大型高维数据集,很难同时对所有维可视化。层次可视化(HierarchicalVisualization)技术是把所有维划分成子集(即子空间),然后对这些子空间可视化。一种常用的方法就是给定某些变量固定值时的子空间的可视化,常常通过3D图形展现。为了绘制3D图形,需要调用Axes3D对象的plot_surface()方法来完成。Matplotlib的3D绘图函数plot_surface()功能非常强大,绘图质量很好。

程序运行结果如图4.11所示。图4.11u=[sin(x)+2]×cos(z)函数图像2

程序运行结果如图4.12所示。

层次可视化技术高维数据的可视化一般很难直观地理解高维(维数大于3)的数据,如果将这些数据转化为可视化的形式,就可以帮助理解和分析高维空间中的数据特性。高维数据可视化旨在用相关的低维数据图形表现高维度的数据,并辅之以交互手段,帮助人们分析和理解高维数据。降维方法降维方法是将高维数据投影到低维空间,尽量保留高维空间中原有的特性和聚类关系。常见的降维方法有主成分分析(PrincipleComponentAnalysis,PCA)、多维度分析(Multi-dimensionalScaling,MDS)和自组织图(Self-organizationMap,SOM)等。这些方法通过数学模型将高维数据降维,进而在低维空间中显示。通常,数据在高维空间中的距离越近,在投影图中两点的距离也越近。高维投影图可以很好地展示高维数据间的相似度以及聚类情况等,但并不能表示数据在每个维度上的信息,也不能表现维度间的关系。高维投影图损失了数据在原始维度上的细节信息,但直观地提供了数据之间宏观的结构。高维数据降维常用方法如图4.13所示。图4.13高维数据降维常用方法高维数据的可视化非降维方法非降维方法保留了高维数据在每个维度上的信息,可以展示所有的维度。各种非降维方法的主要区别在于如何对不同的维度进行数据到图像属性的映射。当维度较少时,可以直接通过与位置、颜色、形状等多种视觉属性相结合的方式对高维数据进行编码。当维度数量增多,数据量变大,或对数据呈现精度的需要提高时,这些方法难以满足需要。文本词云图绘制文本词云图需要用到wordcloud模块,该模块依赖numpy库和PIL库。Wordcloud模块中的WordCloud()函数用于生成或者绘制词云的对象。WordCloud()函数常用形式为:wordcloud.WordCloud(font_path=None,width=400,height=200,mask=None,scale=1,max_words=200,min_font_size=4,max_font_size=None,background_color='black',color_func=None,mode='RGB',prefer_horizontal=0.9,random_state=None,relative_scaling=0.5,font_step=1,regexp=None,collocations=True,colormap=’viridis’,contour_width=0,contour_color='black',repeat=False)文本词云图(1)font_path:系统中的中文字体文件一般都在C:\Windows\Fonts目录下(默认为wordcloud模块下的DroidSansMo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论