版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
绪论全套可编辑PPT课件当今社会,网络和信息技术已经融入进人类日常生活的方方面面,产生的数据量也呈现指数级增长的态势。现有数据的量级已经远远超越了目前人力所能处理的范畴。如何管理和使用这些数据,逐渐成为数据科学领域中一个全新的研究课题,同时也对促进了我国经济更快更好进入高质量发展阶段有重要的意义。本章主要介绍大数据分析与挖掘的基本概念、常见应用、基本任务、建模过程和建模工具。学习目标全套可编辑PPT课件1大数据分析与挖掘的行业应用目录大数据分析与挖掘的基本概念2大数据分析与挖掘的基本任务3大数据分析与挖掘的建模过程4大数据分析与挖掘的建模工具5全套可编辑PPT课件大约在2009年,“大数据”成为互联网信息技术行业的流行词汇。大数据(bigdata),指的是所涉及的资料量规模巨大到无法透过主流软件工具,在合理时间内达到撷取、管理、处理并整理的数据。随着大数据的发展,其特征在原本的4V基础上扩充了第5V:真实性(veracity)。真实性表示数据的准确性和可信赖度高,即数据的质量高。当前,数字经济成为社会经济的一个重要内涵,数据成为关键生产要素,大数据处理技术越来越深刻地影响着世界的运行状态。大数据分析与挖掘的基本概念全套可编辑PPT课件随着越来越多的数据被记录、收集和存储,如何深刻洞察数据分布规律、高效挖掘数据价值,成为智能化时代需要解决的关键问题。大数据分析是指对规模巨大、海量的数据进行分析,包含大数据和数据分析双重含义,大数据分析的本质是依托大数据进行数据分析,进而挖掘数据蕴含的价值和知识,将数据的深层价值体现出来并加以有效利用。而数据挖掘可以理解为从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、潜在有用的信息和知识的过程。大数据分析与挖掘的基本概念维克托·迈尔·舍恩伯格(ViktorMayerSchönberger)在《大数据时代》提出了大数据的4V特征:大量(Volume)、多样(Variety)、高速(Velocity)、价值(Value)。大数据的特征和其概述如下图所示。大数据分析与挖掘的基本概念特征概述大量(Volume)大数据的“大”首先体现在数据量上,网页或移动应用点击流、设备传感器所捕获的数据等每时每刻都在产生数据。在2020年创建、捕获、复制和消耗的数据总量可达到59ZB多样(Variety)多样化是指数据类型众多。传统数据属于结构化数据,能够整齐地纳入关系数据库。随着大数据的兴起,各种新的非结构化数据类型不断涌现,如文本、音频和视频等高速(Velocity)数据增长速度快,处理速度快,时效性要求高,某些联网的智能产品需要实时或近乎实时地运行,要求基于数据实时评估和操作价值(Value)大数据中隐藏着巨大价值,但是价值的密度较低,往往需要对庞大的数据进行挖掘分析处理,才能获得需要的信息1大数据分析与挖掘的行业应用目录大数据分析与挖掘的基本概念23大数据分析与挖掘的建模过程4大数据分析与挖掘的建模工具5大数据分析与挖掘的基本任务大数据分析与挖掘已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素.人们对于大数据的挖掘和运用,预示着新一波生产力增长。农业大数据应用制造业大数据应用服务业大数据应用大数据分析与挖掘的行业应用(1)农业大数据应用随着农业技术的不断发展,农业数据越来越丰富,传统的经验决策已经无法满足现代农业的需求。因此,利用大数据挖掘技术对农业数据进行挖掘和分析,可以为农民提供更加科学、准确的决策支持。通过分析土壤湿度、光照强度和植物生长速度等数据,预测农作物的产量和品质,并据此优化农业生产过程。例如,在种植水稻的过程中,通过分析水稻的生长数据和环境数据,可以得出最佳的灌溉时间、施肥量和农药使用量等参数,从而提高水稻的产量和质量。大数据分析与挖掘的行业应用(2)制造业大数据应用随着制造业市场竞争的日益激烈,制造企业需要不断提高产品质量和生产效率,以应对市场的挑战。而大数据分析技术可以帮助企业更好地掌握产品特性和生产过程,提高企业的竞争力。利用大数据分析技术对产品故障数据进行挖掘和分析,预测产品故障发生的概率和时间,并据此优化维修和保养计划。例如,在汽车制造领域,通过对汽车发动机的故障数据进行挖掘和分析,可以得出发动机的使用寿命、故障类型和维修方案等参数,从而为汽车制造商提供更加科学、准确的维修和保养计划。大数据分析与挖掘的行业应用06-9月-24(3)服务业大数据应用随着市场竞争的日益激烈,服务业企业需要不断提高服务质量和客户体验,以吸引更多的客户。而大数据分析技术可以帮助企业更好地了解客户需求和市场趋势,提高企业的竞争力。利用大数据分析技术对客户行为数据进行挖掘和分析,了解客户的需求和偏好,优化产品和服务设计。例如,在电商平台上,通过对用户浏览、搜索和购买等行为数据进行挖掘和分析,可以得出用户的消费习惯和偏好,从而为用户提供更加精准的商品推荐和广告投放。同时,还可以优化电商平台的页面设计和商品排序算法,提高用户购物体验和满意度。。大数据分析与挖掘的行业应用1大数据分析与挖掘的行业应用目录大数据分析与挖掘的基本概念2大数据分析与挖掘的基本任务3大数据分析与挖掘的建模过程4大数据分析与挖掘的建模工具5大数据分析与挖掘的基本任务包括利用分类与回归、聚类、关联规则、时间序列、异常检测等方法,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。其中,具体的方法介绍如下。分类与回归聚类关联规则时间序列异常检测大数据分析与挖掘的基本任务(1)分类与回归分类是一种对离散型随机变量建模或预测的方法,反映的是如何找出同类事物之间具有共同性质的特征和不同事物之间的差异特征,用于将数据集中的每个对象归结到某个已知的对象类中。回归是通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的一种有效工具。分类与回归广泛应用于医疗诊断、信用卡的信用分级、图像模式识别、风险评估等领域。大数据分析与挖掘的基本任务(2)聚类聚类是在预先不知道类别标签的情况下,根据信息相似度原则进行信息集聚的一种方法。聚类的目的是使得属于同一类别的个体之间的差别尽可能地小,而不同类别上的个体之间的差别尽可能地大。因此,聚类的意义在于将观察到的内容组织成类分层结构,将类似的事物组织在一起。通过聚类,人们能够识别密集的和稀疏的区域,从而发现全局的分布模式,以及数据属性之间的有趣的关系。聚类分析广泛应用于商业、生物、地理、网络服务等多种领域。归广泛应用于医疗诊断、信用卡的信用分级、图像模式识别、风险评估等领域。大数据分析与挖掘的基本任务(3)关联规则关联规则是一种使用较为广泛的模式识别方法,旨在从大量的数据当中发现特征之间或数据之间在一定程度上的依赖或关联关系。关联分析广泛用于市场营销、事务分析等应用领域。大数据分析与挖掘的基本任务(4)时间序列时间序列是对在不同时间下取得的样本数据进行挖掘,用于分析样本数据之间的变化趋势。时间序列广泛用于股指预测、生产过程监测、电气系统监测、销售额预测等应用领域。大数据分析与挖掘的基本任务(5)异常检测异常检测的目标是发现与大部分其他对象不同的对象。通常,异常对象也被称为离群点。异常检测广泛用于网络安全、金融领域、电商领域和安全关键系统的故障检测。值得一提的是异常检测在网络安全的应用为构建和谐社会提供助力。大数据分析与挖掘的基本任务1大数据分析与挖掘的行业应用目录大数据分析与挖掘的基本概念2大数据分析与挖掘的基本任务3大数据分析与挖掘的建模过程4大数据分析与挖掘的建模工具5目前,大数据分析与挖掘的建模过程包含明确任务、数据采集、数据探索、数据预处理、挖掘建模、模型评价,如下图所示。需要注意的是:这6个流程的顺序并不是严格不变的,可根据实际项目的情况进行不同程度的调整。大数据分析与挖掘的建模过程针对具体的应用需求,先要明确本次的分析和挖掘目标是什么,以及系统完成数据挖掘后能达到什么样的效果。因此必须分析应用领域,包括应用领域中的各种知识和应用目标,了解相关领域的有关情况,熟悉背景知识,确认用户需求。要想充分发挥数据挖掘的价值,必须对目标有一个清晰明确的定义,即确定到底想干什么。明确任务大数据挖掘的数据采集是整个分析过程的基础,其目的是从不同的数据源获取所需的数据,为后续的建模和分析提供基础数据。随着数据来源的多样化和数据量的快速增长,数据采集在大数据挖掘中的地位越来越重要。数据采集是大数据挖掘的重要前提,其质量的优劣直接影响到后续建模和分析的准确性和有效性。因此,在实际应用中,需要根据具体的问题和需求,选择合适的采集方法和技术,对数据进行有效的采集和处理,为后续的建模和分析提供可靠的基础数据。数据采集在大数据环境下,采集到的数据,可能由于数据量过于庞大,导致难以对数据进行分析,因此可以对数据进行抽样,通过对部分数据的分析来推断总体的特征。常见的抽样方式如下。(1)随机抽样。在采用随机抽样方式时,数据集中的每一组观测值都有相同的被抽中概率。例如,按10%的比例对一个数据集进行随机抽样,则每一组观测值都有10%的概率被抽取到。(2)等距抽样。如果按5%的比例对一个有100组观测值的数据集进行等距抽样,有,那么抽取的就是第20、40、60、80、100组这5组观测值。(3)分层抽样。在进行分层抽样操作时,需要先将样本总体分成若干层(或分成若干个子集)。每层中的观测值都具有相同的被选中概率,但对不同的层可设定不同的概率。这样的抽样结果通常具有更好的代表性,进而使模型具有更好的拟合精度。数据采集(4)按起始顺序抽样。这种抽样方式是从输入数据集的起始处开始抽样,对于抽样的数量,可以给定一个百分比,或直接给定选取观测值的组数。(5)分类抽样。前述几种抽样方式并不考虑抽取样本的具体取值,分类抽样则依据某种属性的取值来选择数据子集,如按客户名称分类、按地址区域分类等。分类抽样的方式就是前面所述的几种方式,只是抽样时以类为单位。数据采集前面所叙述的数据取样,或多或少是人们带着对如何实现数据挖掘目的的主观认识进行操作的。当拿到一个样本数据集后,它是否达到设想的要求,其中有没有什么明显的规律和趋势,有没有出现从未设想过的数据状态,属性之间有什么相关性,它可分成哪些类别等,这些都是需要先进行探索的内容。对所抽取的样本数据进行探索、审核和必要的加工处理,是保证最终挖掘模型的质量所必需的操作。可以说,挖掘模型的质量不会优于抽取的样本的质量。数据探索和预处理的目的是保证样本数据的质量,从而为保证模型质量打下基础。数据探索主要包括数据的质量分析、基本统计分析、可视化分析。数据探索不正确、不完整和不一致的数据是许多大型数据库和数据仓库的通病。不正确的数据可能是由收集数据的设备可能出现故障、人或计算机的错误输入等情况导致。同时数据的错误也可能在数据传输中出现。也可能是由命名约定或所用的数据代码不一致,或输入字段的格式不一致而导致的。不完整数据的出现同样存在多种原因。例如销售数据中顾客的信息,并非总是可以得到的。亦或某些字段在输入时认为是不重要的并允许缺少。此外,历史存在或修改的数据在转移过程中也可能造成数据缺失。而数据预处理技术可以改进数据的质量,从而有助于提高其后的挖掘过程的准确率和效率。由于高质量的决策必然依赖于高质量的数据,因此数据预处理是知识发现过程的重要步骤。数据预处理1.数据预处理的必要性
数据预处理的重要任务包括:数据清洗、数据集成、数据归约、数据变换和离散化。数据清洗主要是删除原始数据集中的重复数据、平滑噪声数据、筛选掉与分析主题无关的数据。数据集成主要是分析来自多个数据源的数据,涉及集成多个数据库、数据立方体或文件。通常,在为数据仓库准备数据时,数据清理和集成将作为预处理步骤进行。还可以再次进行数据清理,检测和删去可能由集成导致的冗余。数据归约则可以降低数据集的规模,数据归约得到数据集的简化表示,但能够产生几乎同样的分析结果。对于数据挖掘而言,离散化与是强有力的工具,因为其能使得数据的挖掘可以在多个抽象层上进行。规范化、数据离散化和概念分层产生都是某种形式的数据变换。数据变换操作是引导挖掘过程成功的附加的预处理过程。数据预处理2.数据预处理的主要任务样本抽取和预处理都完成后,需要考虑本次建模属于数据挖掘应用中的哪类问题(分类与回归、聚类、关联规则、智能推荐还是时间序列),还需考虑选用哪种算法进行模型构建更为合适。其中,模型所对应的算法如下。分类与回归算法主要包括线性模型、决策树、最近邻分类、支持向量机、神经网络、集成算法等;聚类算法主要包括K-Means聚类、密度聚类、层次聚类等;关联规则主要包括Apriori、FP-Growth等;时间序列模型主要包括AR模型、MA模型、ARMA模型、ARIMA模型等;异常值检测主要包括基于统计学、邻近性、聚类、分类的方法,以及高维数据的离群点检测。挖掘建模在建模过程中会得出一系列的分析结果,模型评价的目的之一就是依据这些分析结果,从训练好的模型中寻找出一个表现最佳的模型,并结合业务场景对模型进行解释和应用。适用于分类与回归模型、聚类分析模型、关联规则的评价方法是不同的,具体评价方法见各章节的评价部分。模型评价1大数据分析与挖掘的行业应用目录大数据分析与挖掘的基本概念2大数据分析与挖掘的基本任务3大数据分析与挖掘的建模过程4大数据分析与挖掘的建模工具5数据挖掘是一个反复探索的过程,只有将数据挖掘工具提供的技术和实施经验与企业的业务逻辑和需求紧密结合,并在实施过程中不断地磨合,才能取得好的效果。常用的几种数据挖掘建模工具如下。PythonIBMSPSSModelerApacheSparkRapidMinerTipDM大数据挖掘建模平台大数据分析与挖掘的建模工具Python是一种面向对象、解释型计算机程序设计语言,拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。但是Python并不提供一个专门的数据挖掘环境,而是提供众多的扩展库。如NumPy、SciPy和Matplotlib这3个十分经典的科学计算扩展库,它们分别为Python提供了快速数组处理、数值运算和绘图功能,scikit-learn库中包含很多分类器的实现以及聚类相关的算法。得益于丰富的扩展库,Python成为了数据挖掘常用的语言。PythonIBMSPSSModeler原名Clementine,2009年被IBM收购后对产品的性能和功能进行了大幅度改进和提升。它封装了先进的统计学和数据挖掘技术,来获得预测知识并将相应的决策方案部署到现有的业务系统和业务过程中,从而提高企业的效益。IBMSPSSModeler拥有直观的操作界面、自动化的数据准备和成熟的预测分析模型,结合商业技术可以快速建立预测性模型。IBMSPSSModelerApacheSpark是一种用于大数据工作负载的分布式开源处理系统,使用内存中缓存和优化的查询执行方式,可针对大规模的数据进行快速分析查询。ApacheSpark提供使用Java、Python和R语言的开发接口,支持跨多个工作负载重用代码的批处理、交互式查询、实时分析、图形处理等。ApacheSpark已经成为较为常用的大数据分布式处理框架之一。ApacheSparkRapidMiner也叫YALE(YetAnotherLearningEnvironment),提供图形化界面,采用类似Windows资源管理器中的树状结构来组织分析组件,树上每个节点表示不同的运算符(operator)。YALE中提供了大量的运算符,包括数据处理、变换、探索、建模、评估等各个环节。YALE是用Java开发的,基于Weka来构建,可以调用Weka中的各种分析组件。RapidMiner有拓展的套件Radoop,可以和Hadoop集成起来,在Hadoop集群上运行任务。RapidMinerTipDM大数据挖掘建模平台使用Java语言开发,采用B/S结构(Browser/Server,浏览器/服务器模式),用户不需要下载客户端,可通过浏览器进行访问。平台算法基于Python、R以及Hadoop/Spark分布式引擎,用于数据分析与挖掘。平台支持数据挖掘流程所需的主要过程:数据探索(相关性分析、主成分分析、周期性分析等);数据预处理(特征构造、记录选择、缺失值处理等);构建模型(聚类模型、分类模型、回归模型等);模型评价(R-Squared、混淆矩阵、ROC曲线等)。用户可在没有Python、R或Hadoop/Spark编程基础的情况下,通过拖拽的方式进行操作,将数据输入输出、数据预处理、挖掘建模、模型评估等环节通过流程化的方式进行连接,以达到数据分析挖掘的目的。TipDM大数据挖掘建模平台本章主要介绍了大数据分析与挖掘的基础知识,包括了大数据分析与挖掘的的基本概念、常见应用、基本任务、建模过程和建模工具。其中,数据挖掘的基本任务包括了明确任务、数据抽样、数据探索、数据预处理、挖掘建模、模型评价。常用的数据挖掘工具包括了Python、IBMSPSSModeler、ApacheSpark、RapidMiner、TipDM开源数据挖掘建模平台。小结Python安装在大数据时代,数据来源多样化,数据量也急剧增长,Python的简洁性和易读性使得编写和分析复杂的数据处理流程变得容易。同时,Python的语法简单、优雅,使得代码易于维护和调试。Python作为一种灵活且强大的编程语言,在大数据挖掘中发挥着至关重要的作用。Python提供了许多用于大数据处理的库和工具,如Pandas、NumPy和SciPy等,这些库可以帮助处理大规模的数据集并进行高级计算。Python还拥有许多深度学习库,如Keras和TensorFlow等,这些库为大数据挖掘提供了强大的支持。Python可以与其他编程语言(如Java、C++等)无缝集成。这使得在处理需要多种编程语言完成的大数据项目时,Python成为了一个理想的选择。Python安装Anaconda是一个Python的集成开发环境,可以便捷的地获取库,且提供对库的管理功能,同上对环境可以进行统一管理。读者可以进入Anaconda发行版官方网站,下载Windows系统下Anaconda安装包,选择Python3.9.13版本。安装Anaconda的具体步骤如下。单击右图所示的“Next”按钮进入下一步。Python安装单击下图所示的“IAgree”按钮,同意上述协议进入下一步。Python安装选择下图所示的“JustMe(recommend)”选项,然后单击“Next”按钮,进入下一步。Python安装单击下图所示选择的“Browse…”按钮选择在指定的路径安装Anaconda,选择完成后单击“Next”按钮,进入下一步。Python安装在下图所示的两个选框分别代表了允许将Anaconda添加到系统路径环境变量、Anaconda使用的Python版本为3.9。勾选完成后,单击“Install”按钮,等待安装结束。Python安装当安装进度条满格时,如下图所示,然后一直单击“Next”按钮。Python安装当出现下图所示的对话框时,可取消勾选界面上的“AnacondaDistributionTutorial”“GettingStartedwithAnaconda”选项,单击“Finish”按钮,即可完成Anaconda安装。Python安装Python编程基础在Python编程语言中,基本命令、数据类型、运算符、函数是编程的基础。这些基本概念对于Python初学习者至关重要。只有通过掌握这些基础知识,才能编写出简洁、可读性高的代码,实现各种复杂的数据处理和计算操作。Python编程基础1数据类型目录基本命令2运算符3函数4Python包含了许多命令用于实现各种各样的功能。对于初学者,通过掌握其基本命令的使用,如基本运算、判断与循环、库的安装和导入等,便可快速的打开Python语言的大门。基本命令1.
基本运算认识Python的第一步,可以将其当作一个方便的计算器。读者可以打开Python,试着输入下述命令。上述命令是Python几个基本的运算,第一个是赋值运算,第二是乘法运算,最后是一个是幂运算(即a3),这些基本上是所有编程语言通用的。a=3a*3a**3不过Python支持多重赋值,方法如下。基本命令a,b,c=1,2,3这句多重赋值命令相当于如下命令。a=1b=2c=3Python支持对字符串的灵活操作,如下所示。a='ThisisthePythonworld'a+'Welcome!'#将a与'Welcome!'拼接,得到'ThisisthePythonworldWelcome!'a.split('')#将a以空格分割,得到列表['This','is','the','Python','world']判断和循环是所有编程语言的基本命令,Python的判断语句格式如下。基本命令2.判断与循环if条件1:语句2elif条件3:语句4else:语句5需要特别指出的是,Python一般不使用花括号{},也没有end语句,可使用缩进对齐作为语句的层次标记。同一层次的缩进量要一一对应,否则会报错。一个错误的缩进示例,如下所示。基本命令ifa==0:print('a为0')#缩进2个空格else:print('a不为0')#缩进3个空格不管是哪种语言,正确的缩进都是一个优雅的编程习惯。Python的循环对应地有for循环和while循环#for循环i=0forjinrange(51):#该循环过程是求1+2+3+...+50i=i+jprint(i)基本命令#while循环i=0j=0whilej<51:#该循环过程也是求1+2+3+...+50i=i+jj=j+1print(i)在上述代码中,for循环含有in和range语法。in是一个非常方便、而且非常直观的语法,用于判断一个元素是否在列表或元组中。range函数用于生成连续的序列,一般语法为range(a,b,c),表示以a为首项、c为公差且不超过b-1的等差数列,如下所示。基本命令foriinrange(1,5,1):print(i)使用range生成等差数列的输出结果如下。1234在Python的默认环境中,并不会将所有的功能加载进来,因此需要手动加载更多的库(或模块、包等),甚至需要额外安装第三方的扩展库,以丰富Python的功能,达到所需的目的。(1)安装第三方库虽然Python自带了很多库,但是不一定可以满足所有的需求。就数据分析和数据挖掘而言,还需要安装一些第三方库用于拓展Python的功能。基本命令3.
库的安装和导入安装第三方库有多种方法,如下表所示。基本命令思路特点下载源代码自行安装安装灵活,但需要自行解决上级依赖问题用pip命令安装比较方便,自动解决上级依赖问题用conda命令安装比较方便,自动解决上级依赖问题下载编译好的文件包一般是Windows系统才提供现成的可执行文件包系统自带的安装方式Linux或Mac系统的软件管理器自带了某些库的安装方式使用pip命令来安装numpy如下所示。pipinstallnumpypipinstallnumpy==1.19.5#安装指定版本的库Python本身内置了很多强大的库,如数学相关的math库,可以提供更加丰富复杂的数学运算,如下所示。基本命令(2)库的导入importmathmath.sin(2)#计算正弦math.exp(2)#计算指数math.pi#内置的圆周率常数导入库的方法,除了直接“import库名”命令外,还可以为库起一个别名。importmathasmm.sin(2)#计算正弦此外,如果不需要导入库中的所有函数,那么可以特别指定导入函数的名字,如下所示。基本命令frommathimportexpase#只导入math库中的exp函数,并起别名ee(2)#计算指数math.sin(2)#此时math.sin(2)都会出错,因为没被导入直接导入库中的所有函数,如下所示。#直接导入math库中包含的所有函数,若大量地这样引入第三库,则可能会容易引起命名冲突frommathimport*exp(2)sin(2)可以通过help('modules')命令获得已经安装的所有模块名。1数据类型目录基本命令2运算符3函数4Python数据类型比较多,这里本节主要介绍常用的6个数据类型:数字(Number)、字符串(String)、List(列表)、Tuple(元组)、Dictionary(字典)和Set(集合)。Python语言对数据类型有着特定的优化,这意味着在遇到该不同的数据类型时有着特定的处理方式,可以以更高效的方式处理该类型数据,同时数据类型的声明能让变量充分利用内存资源。数据类型在Python中数字(Number)数据类型用于存储数值,需要注意的是该数据类型是不允许改变的,即如果改变该数据类型的值,将重新分配内存空间。Python中主要包括3种不同的数字类型,如下表所示。数据类型1.数字数字类型解释整型(int)通常也称为整数,是正或负整数,在Python3.x的版本中包含了长整型(long)浮点型(floatingpointrealvalues)浮点型由整数部分和小数部分组成,可以使用科学计数法表示复数(complexnumbers)复数由实数部分和虚数部分构成,可以用a+bj,或complex(a,b)表示对数据进行类型转换如下所示。数据类型x=123456y=12.6int(y)#将y转换为一个整数,输出:12float(x)#将x转换到一个浮点数,输出:123456.0complex(x,78)#创建一个复数,输出:(123456+78j)在将浮点类型数据转为整型时,只保留数据的整数部分,小数点部分全部舍弃,不会进行四舍五入。字符串(String)字符串是由Unicode码位构成的不可变序列。Python不支持单字符类型(只占一个字节的字符),单字符在Python中也是作为一个字符串使用。通过将字符括在单引号、双引号和三重引号中来即可完成字符串创建。使用三重引号的字符串可以跨越多,其中所有的空白字符都将包含在该字符串字面值中。字符串只能通过新建另一个字符串来改变原字符串内的元素。同时,字符串中的字符不能被删除,但是使用del关键字可以完全删除字符串。数据类型2.
字符串由于字符串是有序的,因此可以通过“字符串变量[头下标:尾下标]”的形式对字符串中的值进行访问。字符串的下标示例如下图所示。数据类型简单的字符串切片如下所示。a='坚持中国特色社会主义'print('a[6]:',a[6])#输出为:社print('a[-5]:',a[-5])#输出为:色print('a[2:6]:',a[2:6])#输出为:中国特色列表和元组都是序列结构,两者很相似,但又有一些不同的地方。从外形上看,列表与元组的区别是,列表使用方括号进行标记,如m=[0,2,4],而元组使用圆括号进行标记,如n=(6,8,10),访问列表和元组中的元素的方式都是一样的,如m[0]等于0,n[2]等于10等。因为容器的数据结构可以是任意的,所以如下关于列表p的定义也是成立的。数据类型3.
列表和元组从功能上看,列表与元组的区别是,列表可以被修改,而元组不可以。例如,列表m=[0,2,4],那么语句m[0]=1会将列表m修改为[1,2,4],而对于元组n=(6,8,10),语句n[0]=1将会报错。要注意的是,如果已经有了一个列表m,同时想复制m,命名为变量n,那么n=m是无效的,这时n仅仅是m的别名(或引用),修改n也会修改m的。正确的复制方法应该是n=m[:]。数据类型与列表有关的函数是list,与元组有关的函数是tuple,但list函数和tuple函数的用法和功能几乎一样,都是将某个对象转换为列表或元组,例如,list('cd')的结果是['c','d'],tuple([0,1,2])的结果是(0,1,2)。一些常见的与列表或元组相关的函数,如下表所示。数据类型函数功能函数功能cmp(m,n)比较两个列表或元组的元素min(m)返回列表或元组元素最小值len(m)返回列表或元组元素个数sum(m)将列表或元组中的元素求和max(m)返回列表或元组元素最大值sorted(m)对列表的元素进行升序排序此外,列表作为对象,列表的本身自带了很多实用的方法(元组不允许修改,因此方法很少),如下表所示。数据类型方法功能m.append(1)将1添加到列表m末尾m.count(1)统计列表m中元素1出现的次数m.extend([1,2])将列表[1,2]的内容追加到列表m的末尾中m.index(1)从列表m中找出第一个1的索引位置m.insert(2,1)将1插入列表m的索引为2的位置m.pop(1)移除列表m中索引为1的元素此外,列表还有“列表解析”这一功能,该功能能够简化列表内元素逐一进行操作的代码。使用append函数对列表元素进行操作,如下所示。数据类型c=[1,2,3]d=[]foriinc:d.append(i+1)print(d)#输出结果为[2,3,4]使用列表解析进行简化,如下所示。c=[1,2,3]d=[i+1foriinc]print(d)#输出结果也为[2,3,4]特别地,Python引入了自编这一概念,在数学上,实际上是一个映射。简而言之,字典也相当于一个列表,然而其下标不再是以0开头的数字,而是自定义的键(Key)。创建一个字典的基本方法如下。数据类型4.字典a={'January':1,'February':2}其中,“January”“February”就是字典的键,在整个字典中必须是唯一的,而“1”“2”就是键对应的值。访问字典中元素的方法也很直观,如下所示。a['January']#该值为1a['February']#该值为2还有其他一些比较方便的方法可以创建一个字典,如通过dict函数转换,或通过dict.fromkeys创建,如下所示。数据类型dict([['January',1],['February',2]])#也相当于{'January':1,'tomorrow':2}dict.fromkeys(['January','February'],1)#相当于{'January':1,'tomorrow':1}Python内置了集合这一数据结构,与数学上的集合概念基本上是一致的,集合与列表的区别在于:集合的元素是不重复的,而且是无序的;集合不支持索引。一般通过花括号{}或set函数创建一个集合,如下所示。数据类型5.
集合k={1,1,2,3,3}#注意1和3会自动去重,得到{1,2,3}k=set([1,1,2,3,3])#同样地,将列表转换为集合,得到{1,2,3}由于集合的特殊性(特别是无序性),因此集合有一些特别的运算,如下所示。a=f|g#f和g的并集b=f&g#f和g的交集c=f–g#求差集(项在f中,但不在g中)d=f^g#对称差集(项在f或g中,但不会同时出现在二者中)1数据类型目录基本命令2运算符3函数4运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。在Python中主要包括以下几种。算术运算符比较运算符赋值运算符逻辑运算符位运算符成员、身份运算符2.2.3运算符算术运算符及其描述如下表所示。算术运算符运算符描述+两个对象相加-得到负数或是一个数减去另一个数*两个数相乘或是返回一个被重复若干次的字符串/x除以y%返回除法的余数**返回x的y次幂//x除以y后向下取整数a=21b=10print(a+b)#输出为:31print(a-b)#输出为:11print(a*b)#输出为:210print(a/b)#输出为:2.1print(a%b)#输出为:1a=5b=2print(a**b)#输出为:25print(a//b)#输出为:2算术运算符算术运算符的简单实例,如下所示。比较运算符及其描述如下表所示。比较运算符的返回结果均为逻辑真(True)或逻辑假(False)。比较运算符运算符描述==比较对象是否相等!=比较两个对象是否不相等>
返回x是否大于y<
返回x是否小于y>=返回x是否大于等于y。<=返回x是否小于等于y。a=21b=10print(a==b)#输出为:Falseprint(a!=b)#输出为:Trueprint(a<b)#输出为:Falseprint(a>b)#输出为:Trueprint(a<=b)#输出为:Falseprint(a>=b)#输出为:True比较运算符比较运算符的简单实例,如下所示。赋值运算符及其描述如下表所示。赋值运算符运算符描述=简单的赋值运算符+=加法赋值运算符,c+=a等效于c=c+a-=减法赋值运算符,c-=a等效于c=c-a*=乘法赋值运算符,c*=a等效于c=c*a/=除法赋值运算符,c/=a等效于c=c/a%=取模赋值运算符,c%=a等效于c=c%a**=幂赋值运算符,c**=a等效于c=c**aa=21b=10c=a+b#print(c)输出为:31c+=a#print(c)输出为:52c*=a#print(c)输出为:1092c/=a#print(c)输出为:52.0c=2c%=a#print(c)输出为:2c**=a#print(c)输出为:2097152c//=a#print(c)输出为:99864赋值运算符赋值运算符的简单实例,如下所示。逻辑运算符及其描述如下表所示。逻辑运算符运算符逻辑表达式描述andxandy如果x为False,返回x,否则返回yorxory如果x是True,返回x,否则返回ynotnotx如果x为True,返回False。如果x为False,返回True。a=21b=10print(aandb)#输出为:10print(aorb)#输出为:21a=0print(aandb)#输出为:0print(aorb)#输出为:10print(not(aandb))#输出为:True逻辑运算符逻辑运算符的简单实例,如下所示。计算机中的数据都是以二进制形式进行存储,而位运算就是直接对整数存储在内存中的对应二进制位进行操作,因此其执行效率非常高,在程序中使用位运算进行操作,可以极大提高程序的性能。位运算符及其描述如下表所示。位运算符运算符描述&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1^按位异或运算符:当两对应的二进位相异时,结果为1~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x
类似于
-x-1<<
左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。>>
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数a=60#60=00111100b=13#13=00001101print(a&b)#12=00001100print(a|b)#61=00111101print(a^b)#49=00110001print(~a)#-61=11000011print(a<<2)#240=11110000print(a>>2)#15=00001111位运算符位运算符的简单实例,如下所示。成员运算符的功能是运算某个变量是否包含某个元素,可以简单的理解为不包含的意思。身份运算符,判断两个变量是不是引用自不同对象,可以简单的理解为非引用同一对象。这两种运算符的返回结果都是逻辑真(True)或逻辑假(False)成员、身份运算符及其描述如下表所示。成员、身份运算符运算符描述成员in如果在指定的序列中找到值返回True,否则返回False。notin如果在指定的序列中没有找到值返回True,否则返回False。身份isis是判断两个标识符是不是引用自一个对象isnotisnot是判断两个标识符是不是引用自不同对象a=1b=20list1=[1,2,3,4,5];print(ainlist1)#输出为:Trueprint(binlist1)#输出为:Falseprint(bnotinlist1)#输出为:Trueprint(aisb)#输出为:Falsea=20print(aisb)#输出为:True成员、身份运算符成员、身份运算符的简单实例,如下所示。1数据类型目录基本命令2运算符3函数4函数式编程(Functionalprogramming)或函数程序设计,又称泛函编程,是一种编程范型。函数式编程可将计算机运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。在Python中,函数式编程主要由lambda、map、reduce、filter几个函数构成。函数defpea(x):returnx+1print(pea(1))#输出结果为2自定义函数Def用于自定义函数,如下所示。#返回列表defpeb(x=1,y=1):#定义函数,同时定义参数的默认值
return[x+3,y+3]#返回值是一个列表#返回多个值defpec(x,y):returnx+1,y+1#双重返回a,b=pec(1,2)#此时a=2,b=3返回列表和返回多个值的自定义函数自定义函数其实很普通,但是与一般编程语言不同的是,Python的函数返回值可以是各种形式,如返回列表,甚至返回多个值,如下所示。c=lambdax:x+1#定义函数c(x)=x+1d=lambdax,y:x+y+6#定义函数d(x,y)=x+y+6使用lambda定义函数类似使用def自定义代码226所示的peb函数,需要规范的命名、计算和返回值会比较麻烦,Python支持使用lambda对简单的功能定义“行内函数”,如下所示。a=[5,6,7]b=[i+3foriina]print(b)#输出结果为[8,9,10]使用列表解析操作列表元素对于map函数,假设有一个列表a=[5,6,7],要给列表中的每个元素都加3得到一个新列表,使用“列表解析”可简化为代码,如下所示。a=[5,6,7]b=map(lambdax:x+3,a)b=list(b)print(b)#输出结果也为[8,9,10]使用map函数操作列表元素利用map函数进行运算,如下所示。使用map函数操作列表元素代码中,首先定义一个函数,再用map函数中的命令逐一应用到列表a中的每个元素,最后返回一个数组。map函数也接受多参数的设置,例如,map(lambdax,y:x*y,a,b)表示将a、b两个列表的元素对应相乘,将结果返回新列表。其实列表解析虽然代码简短,但是本质上还是for循环。在Python中,for循环的效率并不高,而map函数实现了相同的功能,并且效率更高。reduce函数与map函数不同的是,map用于逐一遍历,而是reduce用于递归计算。在Python3中,reduce函数已经被移出了全局命名空间,被置于fuctools库中,当使用时需要通过fromfuctoolsimportreduce导入reduce。使用reduce计算n的阶乘fromfuctoolsimportreduce#导入reduc函数Reduce(lambdax,y:x*y,range(1,n+1))使用reduce计算n的阶乘使用reduce函数可以算出n的阶乘,如下所示。在代码中,range(1,n+1)相当于给出了一个列表,元素是1~n这n个整数。lambdax,y:x*y构造了一个二元函数,返回两个参数的乘积。reduce函数首先将列表的头两个元素作为函数的参数进行运算,然后将运算结果与第3个数字作为函数的参数,然后再将运算结果与第4个数字作为函数的参数……依此递推,直到列表结束,返回最终结果。a=1foriinrange(1,n+1):a=a*i使用循环命令计算n的阶乘如果用循环命令计算n的阶乘,则需要写成如下所示的形式。a=filter(lambdax:x>2andx<6,range(10))a=list(a)print(a)#输出结果为[3,4,5]使用filter筛选列表元素filter函数的功能类似于一个过滤器,可用于筛选出列表中符合条件的元素,如下所示。使用filter首先需要一个返回值为bool型的函数,如代码中的lambdax:x>2andx<6定义了一个函数,判断x是否大于2且小于6,然后将这个函数作用到range(10)的每个元素中,若为True,则取出该元素,最后将满足条件的所有元素组成一个列表返回。fromfuctoolsimportreduce#导入reduce函数reduce(lambdax,y:x*y,range(1,n+1))使用列表解析筛选上页代码中的filter语句,也可以使用列表解析,如下所示。由代码可见使用列表解析并不比filter语句复杂。但是要注意,使用map、reduce或filter,最终目的是兼顾简洁和效率,因为map、reduce或filter的循环速度比Python内置的for或while循环要快得多。Python数据分析工具Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。本书用到的库有NumPy、Scipy、Matplotlib、pandas、scikit-learn、Keras、Gensim等,下面将对这些库的安装和使用进行简单的介绍。如果读者安装的是Anaconda发行版,那么它已经自带了以下库:NumPy、Scipy、Matplotlib、pandas、scikit-learn。本章主要是对这些库进行简单的介绍,在后面的章节中,会通过各种案例对这些库的使用进行更加深入的说明。本书的介绍是有所侧重的,读者可以到官网阅读更加详细的使用教程。值得一提的是,本书所介绍的扩展库,它们的官网上的帮助文档都相当详细。Python数据分析工具用Python进行科学计算是很丰富的学问,本书只是用到了它的数据分析和挖掘相关的部分功能,所涉及到的一些库如下表所示。读者可以参考书籍《用Python做科学计算》了解更多信息。Python数据分析工具扩展库简介NumPy提供数组支持,以及相应的高效的处理函数Scipy提供矩阵支持,以及矩阵相关的数值计算模块Matplotlib强大的数据可视化工具、作图库pandas强大、灵活的数据分析和探索工具statsmodels统计建模和计量经济学,包括描述统计、统计模型估计和推断续上图Python数据分析工具扩展库简介scikit-learn支持回归、分类、聚类等的强大的机器学习库mlxtend机器学习的拓展库,旨在增强scikit-learn的功能Keras深度学习库,用于建立神经网络以及深度学习模型Gensim用来做文本主题模型的库,文本挖掘可能用到此外,限于篇幅,本节仅仅介绍了本书的案例中会用到的一些库,还有一些其他的很实用的库并没有介绍。如涉及到图片处理可以用Pillow(旧版为PIL,目前已经被Pillow代替)。涉及到视频处理可以用OpenCV、高精度运算可以用GMPY2等。而对于这些额外的知识,建议读者在遇到相应的问题时,自行到网上搜索相关资料。相信经过本书的学习后,读者解决Python相关问题的能力一定会大大提高的。Python数据分析工具NumPy的前身Numeric最早是由JimHugunin与其他协作者共同开发,2005年,TravisOliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其他扩展而开发了NumPy。NumPy是用Python进行科学计算的基础软件包,同时还是一个Python库。NumPy提供多维数组对象和各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数、基本统计运算和随机模拟等,因而能够快速的处理数据量大且繁琐的数据运算。NumPy还是很多更高级的扩展库的依赖库,后面介绍的pandas、Matplotlib、SciPy等库都依赖于NumPy。值得强调的是,NumPy内置函数处理数据的速度是C语言级别的,因此在编写程序的时候,应当尽量使用NumPy中的内置函数,避免效率瓶颈的现象(尤其是涉及到循环的问题)。NumPySciPy是数学、科学和工程领域的常用开源软件。SciPy库依赖于NumPy,可提供方便快捷的n维数组操作。SciPy库是用NumPy数组构建的,可提供许多用户友好和高效的数值例程,如用于数值积分和优化的例程。SciPy和NumPy运行在所有流行的操作系统上,安装起来很快,而且是免费的,同时NumPy和SciPy易于使用,且功能强大到足以被一些世界领先的科学家和工程师所依赖。SciPy库包含有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理、图像处理、常微分方程求解和其他科学与工程中常用的计算等功能。显然,这些功能都是挖掘与建模必备的。NumPy提供了多维数组功能,但只是一般的数组,并不是矩阵,例如,当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。SciPy提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。SciPy不论是数据挖掘还是数学建模,都免不了数据可视化的问题。Matplotlib是JohnD.Hunter在2008年左右的博士后研究中发明出来的,最初只是为了可视化癞痢病人的一些健康指标,慢慢的Matplotlib变成了Python上最广泛使用的可视化工具包。同时Matplotlib还是Python最著名的绘图库,主要用于二维绘图,也可以进行简单的三维绘图。Matplotlib还提供了一整套和MATLAB相似但更为丰富的命令,可以非常快捷地使用Python可视化数据,而且允许输出达到出版质量的多种图像格式,还十分的适合交互式地进行制图,同时也可方便地作为绘图控件,嵌入GUI应用程序或CGI、Flask、Django中。Matplotlib不仅支持交互式还支持非交互式绘图;支持曲线(折线)图、条形图、柱状图、饼图;绘制的图形可进行配置;支持Linux、Windows、MacOSX与Solaris的跨平台绘图;迁移学习的成本比较低,这是由于Matplotlib的绘图函数基本上都与MATLAB的绘图函数作用差不多;支持LaTeX的公式插入。Matplotlibpandas的名称源自于面板数据(paneldata)和Python数据分析(DataAnalysis),最初是被作为金融数据分析工具而开发出来,由AQRCapitalManagement于2008年4月开发,并于2009年底开源出来。pandas是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas还建造在NumPy之上,因此pandas使得以NumPy为中心的应用很容易使用,与其它第三方科学计算支持库也能够完美的集成。pandaspandas包含了高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单。pandas中的常用的数据结构为Series(一维数据)与DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。pandas的功能非常强大,提供高性能的矩阵运算;可用于数据挖掘和数据分析,同时也提供数据清洗功能。pandas支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据等。pandasstatsmodels是一个Python库,为SciPy提供了统计计算的补充,包括描述统计学、统计模型的估计和推断。statsmodels还提供对许多不同统计模型估计的类和函数,并且可以进行统计测试、数据的探索、可视化,statsmodels也包含一些经典的统计方法,如贝叶斯方法和一些机器学习的模型。由于statsmodels偏向于注重数据的统计建模分析,因此statsmodels使得Python有了R语言的味道。statsmodels支持与pandas进行数据交互,因此,statsmodels与pandas结合,还可成为了Python下强大的数据挖掘组合。statsmodelsscikit-learn(简称sklearn)项目最早是由数据科学家DavidCournapeau在2007年发起,其需要NumPy和SciPy等其他库的支持,而经研发过后,scikit-learn成为了一个开源的算法库。scikit-learn还是Python下强大的机器学习工具包,提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测、模型分析等。scikit-learn同时还是一种简单高效的数据挖掘和数据分析工具,且可在各种环境中重复使用。scikit-learn的内部还实现了各种各样成熟的算法,容易安装和使用,样例也十分的丰富。由于scikit-learn依赖于NumPy、SciPy和Matplotlib,因此,只需要提前安装好这几个库,基本可以正常安装与使用scikit-learn。scikit-learn若使用scikit-learn创建机器学习模型,则需注意一下几点。(1)所有模型提供的接口为:model.fit(),训练模型。而关于训练模型的语句使用需要注意的是,用于分类与回归算法的是fit(X,y);用于非分类与回归算法的是fit(X)。(2)分类与回归类型模型提供如下接口。①model.predict(X_new):预测新样本。②model.predict_proba(X_new):预测概率,仅对某些模型有用(例如逻辑回归)。③model.score():得分越高,模型拟合效果越好。(3)非分类与回归类型模型提供如下接口。①model.transform():在fit的基础上,进行标准化,降维,归一化等数据处理操作。②model.fit_transform():fit和transform的组合,既包括了训练又包含了数据处理操作。scikit-learn本身还提供了一些实例数据用于练习,常见的有安德森鸢尾花卉数据集、手写图像数据集等。scikit-learnmlxtend主要是一个scikit-learn扩展库,提供了一些用于数据处理、特征工程和模型构建的函数和工具。mlxtend的一些功能包括数据标准化、数据归一化、数据平滑、数据填充、特征提取、特征选择、特征转换、交叉验证、网格搜索、模型调参等。但是,mlxtend也可以作为一个单独的机器学习库,并提供了多种分类和回归算法的函数,包括多层感知机、stacking分类器、逻辑回归等。mlxtendKeras是由Python编写而成并使用TensorFlow、Theano以及CNTK作为后端,是深度学习框架中最容易使用的一个。同时利用Keras不仅可搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等,由于Keras是基于Theano的,因此速度也相当快。Theano是Python的一个库,是由深度学习专家YoshuaBengio带领的实验室开发出来的,用于定义、优化和高效地解决多维数组数据对应数学表达式的模拟估计问题。Theano具有高效地实现符号分解、高度优化的速度和稳定性等特点,最重要的是Theano实现了GPU加速,使得密集型数据的处理速度是CPU的数十倍。Keras用Theano即可搭建起高效的神经网络模型,对于普通读者而言门槛还是相当高的,Keras正是为此而生。Keras大大简化了搭建各种神经网络模型的步骤,允许普通用户轻松地搭建并求解具有几百个输入节点的深层神经网络,而且定制的自由度非常大。因此,对于Keras深度学习库而言,Keras具有高度模块化、用户友好性和易扩展特性;支持卷积神经网络和循环神经网络,以及两者的组合;可无缝衔接CPU和GPU的切换。而用Keras搭建神经网络模型的过程相当简洁,也相当直观,纯粹地就像搭积木一般。可以通过短短几十行代码,即可搭建起一个非常强大的神经网络模型,甚至是深度学习模型。值得注意的是,Keras的预测函数scikit-learn有所差别,Keras用model.predict()方法给出概率,model.predict_classes()给出分类结果。Keras在Gensim的官网中,它对自己的简介只有一句话:topicmodellingforhumans!Gensim是用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要比较多的背景知识,通常的情况是:研究这方面的读者,已经不需要我再多说什么;不研究这方面的读者,在这里也说不清楚。(所以Gensim的介绍只有一句话也就不奇怪了)。因此,在这一节中,我们相当于只是提醒读者有这么一个库的存在,而且这个库很强大,如果用得到这个库,请读者去阅读官方帮助文档或参考链接。需要一提的是,Gensim把Google在2013年开源的著名的词向量构造工具Word2Vec编译好了,作为它的子库,因此需要用到Word2Vec的读者也可以直接用Gensim而无需自行编译了。据说Gensim的作者对Word2Vec的代码进行了优化,所以它在Gensim下的表现据说比原生的Word2Vec还要快。(为了实现加速,需要准备C++编译器环境,因此,建议用到Gensim的Word2Vec的读者在Linux下环境运行。)Gensim数据类型政策支持:我国颁布了《网络安全法》、《数据安全法》等法律,明确数据的重要性和规范了数据的处理、传输、保护措施。企业需求:政府、企业等各个领域都需要通过数据分析来了解社会经济的发展趋势,制定相应的政策和战略。个人需要:于个人来说,数据分析也可以更好地理解自己的需求和行为,从而更加有效地实现自我价值。本章将从数据类型、数据质量以及数据的相似性之间的度量等方面来系统阐述数据的基本概念和性质。数据类型1属性的定义目录数据集的类型2属性的分类3结构化数据集是指以表格形式组织的数据集合,并且每个数据项都有固定的属性和数据类型。结构化数据集每一行代表一条记录,每一列代表一个属性。结构化数据集通常存储在关系型数据库中或以csv、xlsx等格式存储。例如,数据库中的表、Excel中的数据等都属于结构化数据集。数据集的类型1.结构化数据集记录数据是一种典型的结构化数据。记录数据型数据集是指由多个记录组成的数据集合,每个记录包含一组属性和与之对应的值。这些记录可以是表格中的行,也可以是其他数据结构中的元素。记录数据型数据集的优点在于它可以方便地对单个实体或对象进行描述和分析。通过使用SQL等关系型数据库管理系统,可以轻松地对数据进行增删改查、分组聚合等操作,从而更好地支持数据分析和决策制定。数据集的类型在数据挖掘领域,数据矩阵是一种记录数据,其中行表示不同的记录,列表示不同的属性。每个单元格表示一个特定记录在某个属性上的取值。数据矩阵可以使用关系数据库和其他结构化数据技术进行存储和处理。例如,一个学生成绩表可能包含多条成绩记录,每条记录表示一个学生不同科目的成绩,如下表所示。需要注意的是,数据矩阵并不包含表头,本书为方便读者理解,所有的矩阵都添加了表头。数据集的类型学号语文成绩数学成绩英语成绩1859078292887637885924959188事务数据是一种特殊类型的记录数据,其中每个记录(事务)涉及一系列的项。顾客一次购物所购买的商品的集合就构成一个事务,而购买的每个商品是一个项,这种类型的数据称作购物篮数据,因此购物篮数据属于事务数据。一个购物篮数据如下表所示。数据集的类型订单号购买物品0001西瓜0002苹果0003西瓜、苹果非结构化数据集是指没有固定的表格形式或预定义属性的数据集合。这类数据没有明确的结构,通常以自由文本、图像、音频、视频等形式存在。非结构化数据集通常需要通过自然语言处理(NLP)、图像处理、音频处理等技术进行分析和处理。例如,社交媒体帖子、电子邮件、数字图像、音频录音等都属于非结构化数据集。数据集的类型2.非结构化数据集图形数据是一种常见的非结构化数据,它使用图形来描述对象之间的联系或数据对象本身。常见的图形数据如知识图谱、计算机视觉数据集等。图形数据可以直观地展示数据的形状和内容,但是存储空间大、读取速度慢,并且很难进行比较。一个图形数据的示例如图31所示。数据集的类型半结构化数据集是介于结构化数据集和非结构化数据集之间的数据集合。半结构化数据具有一定的结构,但没有严格的表格形式,通常采用某种标记语言(如XML、JSON等)来表示数据的层次结构。半结构化数据集在一些属性上可以有固定的格式,而其他属性可能是自由文本或图像。例如,XML文件、JSON数据等都属于半结构化数据集,一个XML文件如下。数据集的类型3.半结构化数据集这些不同类型的数据集在数据处理中需要采用不同的方法。结构化数据通常可以在数据库中进行处理。非结构化数据通常包括文本、图像、音频和视频等,可以使用文本分析、图像处理等对应的技术进行处理。半结构化数据有结构化的部分,也有非结构化的部分,需要结合数据的结构信息进行处理。数据集的类型4.三种数据集的区别1属性的定义目录数据集的类型2属性的分类3属性是一个数据字段,又可以称作维度、特征和变量等。刻画一个给定对象的属性集合被称为属性向量(或特征向量)。通过不同年龄、性别和职业的人群的收入情况来说明属性的含义与意义,示例数据如下。属性的定义姓名年龄性别职业收入(元)张三28男工程师10000李四35女医生15000王五42男教师8000赵六29男程序员90001属性的定义目录数据集的类型2属性的分类3属性根据其性质和可处理程度大致可以分为标称属性、序数属性和数值属性。在标称属性中,如果属性所取值是二元的,那么可以称为二元属性。如果一个属性同时包含了多种数据类型,那么这个属性可能是多态属性。属性的分类标称属性也被称为分类型属性。标称属性的值是一些符号或事物的名称,不具有意义的序并且不是定量(可度量的量)的,每个值都只代表某种类别或状态,只能用于区分对象。例如,人的姓名只用于对人进行区分,不同的姓名包含顺序关系。属性的分类1.标称属性
因此,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论