首页 > 其他分享 >大数据分析与应用笔记

大数据分析与应用笔记

时间:2023-10-31 22:11:07浏览次数:28  
标签:数据分析 笔记 项集 频繁 算法 应用 聚类 数据 属性

定义
    大数据:是需要新处理模式才能具有更强的决策力、洞察发 现力和流程优化能力的海量、高增长率和多样化的信息资产。
    数量(Volume)、种类(Variety)、速度 (Velocity)、价值(Value)、准确性(Veracity)
    (1)数据清理:消除噪声和删除不一致数据。
    (2)数据集成:多种数据源可以组合在一起,形成数据 集市或数据仓库。
    (3)数据选择:从数据库中提取与分析任务相关的数据。
    (4)数据变换:通过汇总或聚集操作,把数据变换统一 成适合挖掘的形式。
    (5)数据挖掘:使用智能方法提取数据模式。
    (6)模式评估:根据某种兴趣度量,识别代表知识的真 正有趣的模式。
    (7)知识表示:使用可视化和知识表示技术,向用户提 供挖掘的知识。
 
数据获取和准备:原始数据获取直到可以用来进行数据分析,中间还要经过几个步骤。数据获取只是其中的第一步,称为加载(Loading),还需要经历清洗(Cleaning)和整理(Integration),然后才进行分析。通常只有用来分析的数据质量足够高,才能保证分析出来的结果更有效。
 
数据质量评估
    准确性:数据记录的信息是否存在异常或错误。
    完整性:数据是否存在缺失,缺失可能是整个记录数据,也可能是记录数据中某个关键字段的缺失。
    一致性:数据是否遵循了统一的规范,数据集是否保持统一的格式。
    时效性:数据从产生到可以查看的时间间隔。


属性的定义
    什么是属性:一个数据字段,表示数据对象的一个特征,属性、维、特征和变量可以互换地使用
    属性类型分为两大类:定性描述和定量描述

    标称属性:是一些符号或事物的名称,每个值代表某种类别、编码或状态
    二元属性:一种标称属性,只有两个值或状态:0或1,又可以称为布尔属性(值为true 或false)
        对称的二元属性:两种状态具有同等价值并且携带相同的权重
        非对称的二元属性:两种状态的结果不是同样重要
    序值属性:其可能的值之间具有有意义的序或秩评定,但是相继值之间的差是未知的

    以上三种属性都是对对象的定性描述,描述的是对象的特征,而不给出实际大小或数量

    数值属性:
    比例标度属性:在非线性的标度取正的度量值,例如指数标度
    区间标度属性:用相等的单位尺度度量,其值有序,可以为正,0,或负
    混合类型变量:在许多真实的数据集中,对象是混合类型的变量描述的。一般,一个数据库可能包含上面列举的全部各种变量类型


数据的基本统计描述角度
    度量数据的中心趋势
    度量数据的离中趋势
    算术均值:数据集中心,最常用、最有效的数值度量方法
    加权平均:又称加权算术平均,集合中每个值与一个权值相关联
    截断均值:可以抵消少数极端值的影响。去掉最高和最低值的影响
    中位数:是倾斜数据集的最好度量方式。一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数)
    众数:(单峰、双峰、三峰或多峰)是在一组数据中,出现次数最多的数据
    中列数:数据集的最大和最小值的算术平均值
    近似中位数:首先根据数据值划分区间,并且已知每个区间的频率,令包含中位数的区间为中位数区间
    方差:方差值越大说明该数据项波动越大。数值数据趋向于分散的程度
    极差:最大值与最小值之差
    百分位数:百分之K的数据项位于或低于Xi
    四分位数:把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。
    四分位距:第三四分位数与第一四分位数的差距
    五数概括:数据集分布形状的完整概括包含中位数、四分位数Q1和Q3,最小和最大观测值
    盒图:五数概括可视化
        盒图由五个数值点组成:最小值(min),下四分位数(Q1),中位数(median),上四分位数(Q3),最大值(max)
        下四分位数、中位数、上四分位数组成一个“带有隔间的盒子”。上、下四分位数到最大、最小值之间建立一条延伸线,这个延伸线称为“胡须”
        IQR = Q3-Q1,即上四分位数与下四分位数之间的差,也就是盒子的长度。
        最小观测值为min = Q1 - 1.5*IQR,如果存在离群点小于最小观测值,则胡须下限为最小观测值,离群点单独以点绘出。
        最大观测值为max = Q3 + 1.5*IQR,如果存在离群点大于最大观测值,则胡须上限为最大观测值,离群点单独以点绘出。


数据对象关系的计算方法
    数据相似性计算方法
        序值属性相似性 转为 数值属性相似性,计算两两对象之间距离。
        相似性计算方法依赖于对象属性的数据类型,下面我们将分别对标称属性、二元属性、序值属性以及数值属性等的相似性度量方法进行探讨。
        在实际应用中,数值属性是最常用到的一种属性类型。我们有很多方法来计算数值属性刻画的对象之间的邻近性。最常用的有欧几里得距离(又称为欧氏距离)、曼哈顿距离和闵可夫斯基距离等。
            欧式距离(Euclidean distance)是高维空间中两点之间的距离,它计算简单、应用广泛,但是没有考虑属性之间的相关性,当多个属性参与计算时会影响结果的准确性,同时它对向量中的每个分量的误差都同等对待,一定程度上放大了取值范围较大的属性误差在距离计算中的作用。
            曼哈顿距离(Manhattan distance)也称为城市街区距离,想象在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是“曼哈顿距离”。
            切比雪夫距离(Chebyshev distance)也称上确界距离,是向量空间中的一种度量,两个点之间的切比雪夫距离可定义为其各坐标数值差中最大的差值。
            闵可夫斯基距离(Minkowski distance)是衡量数值点之间距离的一种非常常见的方法,它是欧氏距离与曼哈顿距离的推广
            标准化欧氏距离(Standardized euclidean distance)是针对简单欧氏距离的缺点而作的一种改进,其基本思想是先将数据对象的各个分量都进行均值为μ或标准差为s的标准化,然后再计算欧式距离。
        序值属性的值之间具有有意义的序或排位。通过把数值属性的值域划分成有限个类别,再离散化数值属性得到序值属性。即将数值属性的值域经过离散化映射到具有Mf个类别的序值属性。
        编辑距离
            一个字符串变换为另一个字符串需要几步,编辑距离就是几。
            只适用于字符串比较,其计算方法有两种,一种是字符串A到B的编辑距离等于将字符串A变换为字符串B所需要的单字符插入及删除等操作的最小数目。最基本的编辑距离计算中字符操作仅仅包括插入、删除和替换三种操作,一些扩展的编辑距离计算方法,如Damerau–Levenshteindistance距离中加入了交换操作。另一种计算编辑距离的方法是基于字符串A到B的最长公共子序列(LCS, Longest common subsequence),通过在A和B的某些位置上进行删除操作能够构造出它们的最长公共字符串,这时的编辑距离就等于A与B的长度之和减去它们的LCS长度的两倍。

        海明距离(Hamming distance)
            有几个位置的元素不相同,距离就是几。
            定义为两个向量中不同分量的个数。显然,海明距离是一种距离测度,其值非负,当且仅当两个向量相等时,海明距离为0。其中向量分量的取值可以来自于任意集合,但实际使用时常用于布尔向量,即这些向量仅仅包含0和1的取值
    数据相关性计算方法
        皮尔逊相关系数(Pearson correlation coefficient)也称为简单相关系数,它是一种线性相关系数,是描述两组随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高,负值表示负相关,即一个变量的值越大另一个变量的值反而会越小,正值表示正相关,即一个变量的值越大,另一个变量的值也会越大。要注意的是以上并不代表变量间存在因果关系。若相关系数值为0,表明两个变量间不是线性相关,但有可能是其他方式的相关(比如曲线方式)
        斯皮尔曼秩相关系数(Spearman rank correlation coefficient)与皮尔逊相关系数一样,它也可以反映两组变量联系的紧密程度,取值在[-1,1]之间,计算方法上也完全相同,不同的是它建立在秩次的基础之上,对原始变量的分布和样本容量的大小不作要求,属于非参数统计方法,适用范围更广。
        在概率论和统计学中,协方差用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。现实生活中,我们经常遇到多维数据,为了了解两个维度数据间是否有一些联系,我们可以计算其协方差。

数据准备
    数据的预处理
        数据清洗与集成
            忽略空缺属性太多或者缺少类标号的数据对象
            人工填写空缺属性值
            使用全局常量填写空缺属性值
            使用属性的最可能的值填写空缺属性值
            使用与给定元组属同一类的所有样本的平均值或中位数值

            分箱法:通过考察“邻居”(周围的值)来平滑存储数据的值,分箱的主要目的是去噪,或将连续数据离散化,增加粒度。
                等深分箱:不同的箱里有相同个数的数据
                等宽分箱:每个箱值的取值区间相同
                平滑技术:箱中值平滑、箱均值平滑、箱边界平滑
            回归:通过让数据来适合一个拟合的回归函数来平滑噪声点数据
        数据归约
            处理冗余数据,以达到降维目的。
            冗余属性处理
            允许用数据小得多的随机样本表示大型数据集
            随机选择数据的代表子集
                对于倾斜数据(数据分布不合理,有些数据特别多,有些特别少),缩到1:2 或 1:3 比较合理
                简单随机取样对于倾斜数据时可能会执行地比较差
        数据转换
            规范化:把属性数据按比例缩放,使之落入一个特定的小区间
                最大-最小规范化、z-score规范化、小数定标规范化、离散化:数值属性的原始值用区间标签或概念标签替换


高维数据可视化
    数据变换
        线性方法
            主成分分析(PCA)
            多维尺度分析(Multidimensional Scaling,MDS)
            非负矩阵分解(NMF)
        非线性方法
            ISOMAP
            局部线性嵌套(LLE)

    数据呈现
        呈现单个数据点各属性的数据值分布,以及比较多个高维数据点之间的属性关系,从而提高高维数据分析的效率
        点的方法
            散点图矩阵:使用一个二维散点图表达每对维度之间的关系
            径向布局:基于弹簧模型的圆形布局方法,将代表N维的N个锚点至于圆周上
        线的方法
            线图:单变量可视化方法。通过多子图、多线条等方法可以延伸表示高维数据。
             平行坐标:基于几何形状的方法。用平行的轴代表数据属性,一个数据点转化成穿过每一条轴线的一条折线

     网络数据可视化
         网络数据表现为更加自由、更加复杂的关系网络
        分析网络数据的核心是挖掘关系网络中的重要结构性质,如节点相似性、关系传递性、网络中心性等
        网络数据可视化方法应清晰表达个体间关系以及个体的聚类关系
        主要布局策略
            结点链接法: 
                力引导布局
                    核心思想:采用弹簧模型模拟动态布局过程
                    以质点为结点,弹簧为边,借助弹簧模型引入质点间的力
                    本质上是一个能量优化问题
                多维尺度布局
                    弥补力引导布局局部优化的局限性
                    结点数据看成高维空间的点,用降维方法将数据从高维空间降到低维空间,力求保持数据之间的相对位置不变
                    MDS是一种全局控制
            相邻矩阵法
                N*N矩阵,代表有N个结点
                矩阵中位置(i, j)的值表达第i个结点与第j个结点间的关系数
                相关算法:排序、路径搜索
                混合布局:
                    首先对网络数据进行聚类
                    类内关系采用相邻矩阵表达,类间关系采用结点链接表达


数据关联分析算法
    关联规则挖掘:在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性、或因果结构
    频繁模式:频繁地出现在数据集中的模式(如项集、子序列或树和图)
    项目(item)与项集(item-set)
        设I={i1,i2,…,im}是m个不同项目的集合,每个ik(k=1,2,……,m)称为一个项目(Item)。
        项目的集合I称为项目集合(Itemset),简称为项集。其元素个数称为项集的长度,长度为k的项集称为k-项集(k-Itemset)。
    交易
        每笔交易T(Transaction)是项集I上的一个子集,即T∈I,但通常T∈I。每一个交易有一个唯一的标识——交易号,记作TID
        交易的全体构成了交易数据库D,交易集D中包含交易的个数记为|D|。 

项集支持度:设项集,项集X的支持度(support)定义如下

项集的支持度反映了项集在交易集中的重要性

频繁项集:支持度大于或等于最小支持度阈值的项集称为频繁项集,简称频繁集,反之则称为非频繁集。通常k-项集如果满足最小支持度阈值,称为k-频繁集,记作Lk。
关联规则(Association Rule):可以表示为一个蕴含式:R:X→Y
其中关联规则来源于某一个频繁项集,X,Y分别是同一个频繁项集的子集

关联规则是否可用,必须考察它的支持度和置信度(可信度)两个指标
支持度:

 置信度(confidence):

 强关联规则:规则X→Y必须满足:

 

闭频繁项集:如果不存在真超项集Y使得Y与X在S中有相同的支持度,则称项集X在数据集S中是闭的,如果X在S中是闭的和频繁的,就称X是S中的闭频繁项集
极大频繁项集:如果X是频繁的,并且不存在超项集Y使得XY并且Y在S中是频繁的。就称X是S中的极大频繁项集
稀有模式:又称为非频繁模式。给定一个用户指定的正常数 δ,其满足(0<δ<1),则该类模式的最小支持度阈值通常定义为 R min sup= δ *min sup,其中minsup为频繁项集的最小支持度阈值,若一个模式其支持度低于(或远低于)该最小支持度阈值,这个模式就称为稀有模式。
负模式:在数据集D中,某数据项集X的出现会减少另一数据项集Y的出现,甚至使得Y不出现,这一类模式称为负模式,由此产生的关联规则称为负关联规则。例如在超市商品销售中,分别购买可口可乐和百事可乐的支持度都非常高,但是二者存在很强的负相关性,因此它们可以组成负数据项集,由此而生成的关联规则称为负关联规则。

Apriori关联规则算法
经典的Apriori关联规则挖掘算法
    关联规则挖掘步骤
            找出所有频繁项集:这些项集的每一个出现的频繁性至少与预定义的最小支持度一样
            由频繁项集产生强关联规则:这些规则必须满足最小支持度、最小置信度和相关度
    Apriori关联规则算法基本思想
        频繁项集的任何非空子集也一定是频繁的

        找出候选集:有可能成为频繁集的项集
        通过数据库扫描筛选出满足条件的候选集形成又一层频繁集
            频繁集的子集也一定是频繁的:如, 如果{AB} 是频繁集,则 {A} {B} 也一定是频繁集
            从1到k(k-频繁集)递归查找频繁集
        用得到的频繁集生成关联规则
        连接: 用 Lk-1自连接得到候选k-项集Ck,连接时只能将只差最后一个项目不同的项集进行连接
        修剪: 一个候选k-项集Ck,如果它的一个k-1项集(它的子集 )不是频繁的,那它本身也不可能是频繁的。

        由频繁项集产生关联规则
            产生步骤如下:
            对于每个频繁项集l,产生l的所有非空子集
            对于l的每个非空子集s和它的补集(l-s),如果条件概率大于最小置信度阈值,则输出规则“s→(l-s)”

    Apriori关联规则算法步骤
    Apriori关联规则算法的缺陷
        Apriori算法的核心:
            用频繁的(k – 1)-项集生成候选的频繁 k-项集
            用数据库扫描和模式匹配计算候选集的支持度
        Apriori 的瓶颈: 
            巨大的候选集
            多次扫描数据库: 如果最长的频繁模式是n的话,则需要 (n +1 ) 次数据库扫描
    提高Apriori效率的方法:不用生成候选集的关联规则挖掘算法FP-growth


改进的A-Priori算法
    DHP算法的核心思想是在使用Apriori算法获取频繁项集的第一步里,将会仅仅使用不到10%的内存空间,因为只需要两个表,一个用来保存每个项的名字到一个整数的映射,随后的计算中用这些整数值代表项,另一个是定义一个数组来对这些整数代表的项进行计数,因此会有很多内存空间空闲。
    DHP算法充分使用这些空闲的内存来另外定义了一个整数数组,将这个数组看作一个哈希表,表的每个桶中装的是代表各个项的整数值,在扫描计数获得每个项出现的次数时,项对同时也被哈希到这些桶中,由此推出各个2-项集是否为2-频繁项集。归纳起来,DHP算法主要有两个优化思想,定义哈希表和用位图(bitmap)方式对其进行存储。

经典的FP-Growth算法关联规则算法
    FP-Growth算法采用了模式段增长的方式分而治之地构建频繁项集。当数据集比较稠密时,本算法使用扩展的前缀树FP-Tree(Frequent-Pattern Tree),将全部的数据集压缩入主存,由此采用分治策略将对整体数据集的分析转化为对各个条件模式库分析的子任务,显著减少了搜索空间。
    FP-Growth算法的核心思想
    频繁模式树(Frequent pattern tree)定义:简称为FP-tree,它是指一棵将代表频繁项集的数据库压缩之后形成的树,该树仍保留项集的关联信息。其结构满足下列条件:由一个根节点(值为null)、项前缀子树(作为子女)和一个频繁项头表组成。


分类/聚类算法
    决策树的优点
        可以生成可以理解的规则;
        计算量相对来说不是很大;
        可以处理连续和离散字段;
        决策树可以清晰的显示哪些字段比较重要
    不足之处
        对连续性的字段比较难预测
        当类别太多时,错误可能会增加的比较快
        一般的算法分类的时候,只是根据一个属性来分类。
        不是全局最优

    k-means算法的基本步骤如下:
        1  从数据集中随机取k个对象,作为k个簇的初始聚类中心。
        2  计算剩下的对象到k个簇中心的相似度,将这些对象分别划分到相似度最高的簇。
        3  根据聚类结果,更新k个簇的中心,计算方法是取簇中所有对象各自维度的算术平均数。
        4  将数据集中全部元素按照新的中心重新聚类。
        5  达到算法停止条件,转至步骤6;否则转至步骤3。
        6  输出聚类结果
    k-means聚类算法的停止条件一般有以下几种:
        1 设定迭代次数。
        2 聚类中心不再变化 。
        3 前后两次聚类结果的目标函数函数变化很小。

    DBSCAN聚类认为,在整个样本空间中,目标类簇是由一群稠密样本点构成,这些稠密样本点被低密度区域(噪声)分割,而算法的目的就是要过滤低密度区域,发现稠密样本点。
    DBSCAN是一种基于高密度联通区域的聚类算法,它将类簇定义为高密度相连点的最大集合。它本身对噪声不敏感,并且能发现任意形状的类簇。
    DBSCAN特点
        发现任意形状的聚类
        处理噪音
        一遍扫描
        需要密度参数作为终止条件

    在K-Means算法中,最终的聚类效果受初始的聚类中心的影响,K-Means++算法的提出,为选择较好的初始聚类中心提供了依据,但是算法中,聚类的类别个数k仍需事先制定,对于类别个数事先未知的数据集,K-Means和K-Means++将很难对其精确求解,对此,有一些改进的算法被提出来处理聚类个数k未知的情形。Mean Shift算法,又被称为均值漂移算法,与K-Means算法一样,都是基于聚类中心的聚类算法,不同的是,Mean Shift算法不需要事先制定类别个数k。
    Mean Shift的概念最早是由Fukunage在1975年提出的,在后来由Yizong Cheng对其进行扩充,主要提出了两点的改进:定义了核函数,增加了权重系数。核函数的定义使得偏移值对偏移向量的贡献随之样本与被偏移点的距离的不同而不同。权重系数使得不同样本的权重不同。
    Mean Shift算法在很多领域都有成功应用,例如图像平滑、图像分割、物体跟踪等,这些属于人工智能里面模式识别或计算机视觉的部分;另外也包括常规的聚类应用。
    图像平滑:图像最大质量下的像素压缩;
    图像分割:跟图像平滑类似的应用,但最终是将可以平滑的图像进行分离已达到前后景或固定物理分割的目的;
    目标跟踪:例如针对监控视频中某个人物的动态跟踪;
    常规聚类,如用户聚类等。
    Mean Shift算法的关键操作是通过感兴趣区域内的数据密度变化计算中心点的漂移向量,从而移动中心点进行下一次迭代,直到到达密度最大处(中心点不变)。从每个数据点出发都可以进行该操作,在这个过程,统计出现在感兴趣区域内的数据的次数。该参数将在最后作为分类的依据。
    与K-Means算法不一样的是,Mean Shift算法可以自动决定类别的数目。与K-Means算法一样的是,两者都用集合内数据点的均值进行中心点的移动。

 

标签:数据分析,笔记,项集,频繁,算法,应用,聚类,数据,属性
From: https://www.cnblogs.com/zhaot1993/p/17801670.html

相关文章

  • 读书笔记chapter?2
    1#03超市抹零2bill=float(input("请输入商品的总价格"))3print("{:.0f}".format(bill))1#04成绩分差和平均值2importmath34grade1=int(input())5grade2=int(input())6grade3=int(input())7gap1=abs(grade1-grade2)8gap2=abs(grade2-grade3)......
  • Linux中中括号{}应用与for循环的可迭代对象
     001、[root@pc1test]#foriinab8ab23ab98;doecho$i;done##直接迭代ab8ab23ab98[root@pc1test]#foriinab{8,23,98};doecho$i;done##可以写成如下形式ab8ab23ab98[root@pc1test]#foriinab{8,23yt,98};doecho$i;done......
  • [学习笔记]TypeScript查缺补漏(一):类
    @目录基础知识创建类型类的初始化类型和值JSDoc注释字段私有字段可选和非可选字段字段类型约束Getter/Setter静态成员函数重载构造函数参数属性类的实例化箭头函数this的作用域全局类和对象方法泛型泛型类泛型接口泛型函数装饰器基础知识创建类型classAbc{}类的初始化co......
  • 第二章读书笔记
    #03超市抹零结账行为print('学号:3121')print("\n03")n=eval(input('应付:'))print('实付:',int(n))#04计算学生成绩的分差和平均分print("\n04")print('学号:3121')A=eval(input('学生A的成绩:'))B=eval(input('学生B的成绩:')......
  • 【Django-DRF】多年积累md笔记 0基础到高手. 第(3)篇:使用Django开发REST 接口
    本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计RESTAPI,通过使用Django来实现一个RESTAPI为例,明确后端开发RESTAPI要做的最核心工作,然后介绍DjangoRESTframework能帮助我们简化开发RESTAPI的工作。完整版笔记直接地址:请移步这里共5章,24子模块,总计1.7......
  • 第二章读书笔记
    #03超市抹零结账3131money=eval(input("请输入商品总价:"))print("抹零后应收{}元".format(int(money)))#04计算学生成绩的分差和平均分3131student1_point=eval(input("请输入学生成绩:"))student2_point=eval(input("请输入学生成绩:"))print("分差为{},平均分为{}".f......
  • C语言笔记2
     程序的三种基本结构1.顺序结构:按照语句的顺序书写次序2.选择结构:通过特段特定条件,选择一个分支执行3.循环结构:在给定的条件下,反腐执行循环体,直到条件不满足为止 程序设计的步骤1.分析问题,建立数学模型2.确定数据结构3.确定算法,描述算法4.编制程序,调试程序5.运行结果......
  • 阅读笔记
    这个学期,我们开始了我们的软件需求分析的课程,这门课程教会了我软件需求分析的重要性以及必要性。在上课的时候,老师给我们推荐了几本书,对于我们现阶段的学习有着一定的帮助,于是我就看了其中的《实例化需求:团队如何交付正确的软件》这本书。这本书是在世界各地调查了多个团队软件交......
  • 2023年10月31日阅读笔记
    《代码整洁之道》书中介绍了一些编程原则和实践,如DRY(不要重复自己)、单一职责原则(SRP)、开闭原则(OCP)等,这些原则有助于编写更好的代码。不仅如此还强调了良好的代码质量对于软件开发的重要性。良好的代码不仅仅是能够运行的代码,还应该易于理解和维护。我认为书中的一个观点特别值得......
  • 第二章读书笔记
    print("3140")#超市抹零结账#可以通过浮点数转换为整数实现抹零操作p=float(input("请输入商品总价:"))print("最终结账为:",int(p))#计算学生成绩分差和平均分t1=eval(input("请输入学生课程a成绩:"))t2=eval(input("请输入学生课程b成绩:"))print("课程a与课程b的分差为:",abs(t1-t2)......