数据采集与预处理(第2版)-课后习题答案_第1页
数据采集与预处理(第2版)-课后习题答案_第2页
数据采集与预处理(第2版)-课后习题答案_第3页
数据采集与预处理(第2版)-课后习题答案_第4页
数据采集与预处理(第2版)-课后习题答案_第5页
已阅读5页,还剩19页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

课后习题参考答案

【项目1:数据采集与预处理准备】

1、通过网络收集资料,了解常用的ETL工具有哪些?

(1)Kettle:KelUe是一款国外开源的ETL工具。KelUe是纯java编写,具有高效且

稳定的数据抽取功能。

(2)FineDataLink:FineDataLink数据集成平台(简写:FDL)是国内知名商业智能

厂商帆软面向IT人员推出的企业级一站式数据集成平台产品,拥有实时同步和离线计算两

大引擎,具备实时数据同步、ETL和ELT定时数据计算等核心能力。

(3)Talend:Talend中文名拓蓝,是一个开源的ETL数据集成解决方案,与企业内

部和云端的数据源都兼容。该平台包括数百个预建的集成,简化了数据处理流程。除了开

源版本,Talend还提供了一个付费的数据管理平台,包括用于生产力、设计、管理、监控

和数据治理的额外工具和功能。

(4)DataStage:DataStage是IBM公司的商业软件,它为整个ETL过程提供了一个

图形化的开发环境,是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化

和自动化,并将其输入数据集或数据仓库的集成工具,适合大规模的ETL应用。

2、通过网络收集资料-了解日志采集系统有哪些?基于python的网络爬虫框架有哪

些?

流行的日志采集系统包括:

Cloudera/ApacheFlume:这是一个高可用的、高可靠的、分布式的海量日志兴集、聚

合和传输系统。

FacebookScribe:Facebook开发的日志采集系统。

ManageEngineEventLogAnalyzer:适用于Windows操作系统的日志管理系统c

MicrosoftLogParser:微软开发的日志解析工具。

Filebeat:用于转发和集中日志数据的轻量级传送程序,可以收集日志事件并转发到

Elasticscarch或Logstash进行索引。

Graylog:一个开源的日志聚合、分析、审计、展现和预警工具,功能上类似于ELK,

但更简单、高效且部署使用简单。

LogDNA:提供基于代理和无代理的日志收集,支持syslog和HTTP(S)以及全文搜

索和可视化,可以作为SaaS或内部使用。

基于python的网络爬虫框架有:

Scmpy是一个可以爬取网站数据,提取结构性数据而编写的应用框架,能够应用在数

据挖掘、信息处理、存储历史数据等一系列的程序中。

Pyspider是用pylhon实现的的网络爬虫系统,可以在浏览器界面上编写脚本,也可以

实时查看功能的调度和爬取结果。后端使用常用的数据库进行爬取结果的存储,并且还能

定时设置任务与任务优先级。

Crawley可以快速爬取对应网站的相关内容,支持关系和非关系数据库,数据可以导

出的格式为JSON、XML等。

Portia是scrapyhub开源的一款可视化爬虫规则编写工具。它提供可视化Web页面,

用户只需耍通过点击标注页面上需要抽取的数据,不需要任何编程知识即可完成规则开发。

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它可以通

过用户喜欢的转换器实现惯用的文档导航、查找、修改文档的功能。

Grab是一个用于构建Web模板的Python框架,用户可以通过Grab构建各种复杂的网

页抓取工具,从简单的儿行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab能够

提供一个API用于执行网络请求和处理接收到的内容,比如与HTML文档的DOM树进行

交互。

3^布隆过滤器(BloomFilter)的基本思想是什么?

布隆过滤器的基本思想是,当一个元素被加入集合时,通过上个散列函数将这个元素

映射成一个位数组中的攵个点,把它们置为1。检索时,只要看看这些点是不是都是1就知

道集合中有没有被检元素:如果这些点有任何一个是0,则被检元素一定不在;如果都是1,

则被检元素很可能存在。

4、现实世界采集到的大量的、各种各样的数据一般具有哪些特征?

(1)不完整性。不完整性指的是数据记录中可能会出现有一些数据属性的值丢失或不

确定的情况,还有可能缺失必需的数据。

(2)含噪声。含噪声指的是数据具有不正确的属性值,包含错误或存在偏离期望的离

群值(指与其他数值比较差异较大的值)。

(3)杂乱性(不一致性)。原始数据是从各个实际应用系统中获取的,由于各应用

系统的数据缺乏统一标准的定义,数据结构也有较大的差异,因此各系统间的数据存在

较大的不一致性。

5、数据采样技术分为哪几种?

数据采样技术分为加权采样、随机采样和分层采样3类,其目的是从数据集口采集部

分样本进行处理。

6、填补遗漏的数据值,处理不完备数据集的方法主要有哪些类型?

①删除元组

删除元组就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完

备的信息表。

②数据补齐

这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根

据决策表中其余对象取值的分布情况来对•个空值进行填充,数据挖掘中常用的补齐方法

有以下几种。

a.人工填写:由于最了解数据的是用户自己,因此这个方法产生的数据偏离最小,可

能是填充效果最好的一种。然而,一一般来说,此方法很费时;当数据规模很大、空值很多

的时候,此方法是不可行的。

b.特殊值填充:将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值,

如所有的空值都用“unknown”填充。如果该缺失值与预测值具有高度相关性,可能导致

严重的数据偏离,一般不推荐使用。

c.平均值填充:将信息表中的属性分为数值属性和非数值属性来分别进行处理如

果空值是数值型的,则使用该属性在其他所有对象的取值的平均值来填充该缺失的属性

值;如果空值是非数值型的,则根据统计学中的众数原理,用该属性在其他所有对象的

取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。

d.热卡填充(或就近补齐):对于一个包含空值的对象,热卡填充法在完整数据

中找到一个与它最相似的对象,并用这个相似对象的信来进行填充。

e.火近邻法:先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的2个样

本,再将这七个值加权平均来估计该样本的缺失数据。

f.使用所有可能的值填充:这种方法用空缺属性值的所有可能的属性取值来填充,

能够得到较好的补齐效果。

g.组合完整化方法:这种方法用空缺属性值的所有可能的属性取值来尝试,并从最

终属性的约简结果中选择最好的一个作为填补的属性值。

h.回归:基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知

属性值代入方程可估计未知属性值,以此估计值来进行填充。

③平滑有噪声数据

噪声是•个测量变量中的随机错误或偏差,包含错误值或偏离期望的孤立点值。数据

平滑技术包括以下几种。

a.分箱:分箱方法通过考察数据的“近邻”(即周围的值)来平滑有序数据值。

b.回归:也可以用一个函数拟合数据来平滑数据。

c.聚类:可以通过聚类来检测离群点,将类似的值组织成群或簇。

【项目2:]

一、单项选择题

(1)关于urllib.parse模块中的urlencode。函数的说法,正确的是(C)。

A.它用来给传输数据送行加密

B.它接受字符串作为参数,对参数中的中文进行编码

C.它接受字典作为参数,对参数中的中文进行编码

D.如果传入的参数不包括中文,则会报错

(2)关于urllib.parse模块中的quote。函数的说法,正确的是(B)。

A.它用来给传输数据达行加密

B.它接受字符串作为参数,对参数中的中文进行编码

C.它接受字典作为参数,对参数中的中文进行编码

D.如果传入的参数不包括中文,则会报错

(3)使用urHib中Request类构建请求,添加请求头最常见的方法是通过修改(A)来

伪装浏览器。

A.User-Agent

B.add_hcadcr

C.heads

D.add

(4)利用urllib.request模块中最基本的(C)方法,可以完成对简单网页的请求和抓取。

A.urlparse

B.urlencode

C.urlopen

D.urlunparse

(5)urllib库中能用于构建一个HTTP请求的函数是(A)

A.request()

B.get()

C.urlparse()

D.post()

(6)在Selenium中,如何模拟鼠标操作?(A)

A.使用click。方法

B.使用sendKeys。方法

C.使用submit。方法

D.使用get()方法

⑺在Selenium中,如何模拟键盘操作?(B)

A.使用click。方法

B.使用sendKeys。方法

C.使用submit。方法

D.使用get。方法

(8)在Selenium中,如何处理弹出窗口?(C)

A.使用switch」o.alerl()方法

B.使用switch_to.frame()方法

C.使用switch_to_window()方法

(9)下列选项中,不属于请求报头的是(D)。

A、User-Agent

Cookie

C、Referer

D、Content-Type

(10)下列状态码中,表示客户端的请求有错误的是(C)。

A、200

B、304

C、403

D、500

(11)下列请求报头中,可以记载用户信息实现模拟登录的是(B)。

A、User-Agent

B、Cookie

C、Connection

D、Host

二、填空题

(1)在下面的表格中,列出了一些路径表达式,请写出表达式的含义

路径表达式结果|

/bookstore/book[l]选取属于bookstore子元素的第一个book元

素。

/bookstore/book[last()]选取属于bookstore子元素的最后一个book

元素。

/bookstore/book|last()-1]选取属于bookstore子元素的倒数第二个book

兀素O

/bookstorc/book[position()<3选取最前面的两个属于bookstore元素的子元

1素的book元素。

//title[@lang]选取所有拥有名为lang的属性的title元素。

//title[@lang='eng']选取所有title元素,且这些元素拥有值为eng

的lang属性。

/bookstore/book[price>35.00选取bookstore元素的所有book元素,且其中

]的price元素的值须大于35.00。

/bookstore/book[price>35.00选取bookstore元素中的book元素的所有

]/titletitle元素,且其中的price元素的值须大于35.00。

//book/title|//book/price选取book元素的所有title和price元素c

//title|//price选取文档中的所有title和price元素。

/bookstore/book/title|//price选取属于bookstore元素的book元素的所有

title元素,以及文档中所有的price元素。

(2)HTML部分结构如下:

<Iibrary>

<books>

<bookid="book1">数据采集与预处理</book>

<bookid="book2">大数据运维技术v/book>

<bookid="book3">数据分析v/book>

</books>

<records>

<items>

<date>2022-05-02</date>

<personname="张三丰"class=="boxl"/>

</items>

<items>

<date>2022-05-01</date>

<pcrsonnamc="张无忌"class="box2"/>

</items>

</records>

</library>

通过Xpath实现如下元素定位:

(1)查询所有的book节点:/library/books/book。

(2)查询第二个book节点:/library/books/book|2]0

(3)查询person的同性:/library/records/items/Derson/attributeO。

(4)查询所有book节点值中带有“运维”字符串的book节点:

/library/books/book[contains(textQ,'实例')]

(5)查询所有date节点值中带有“05”字符串的items节点:

/library/rccords/itcms/datc[contains(tcxt0、'05')]/parcm::itcms。

(6)查询所有属性节点值带有“box”字符串的person节点:

/librarY/records/items/person[contains(@name,'box')orcontains(@class,'box')l。

(7)查询所有的book节点的文本值:/Iibrary/books/book/lexl。

三、操作题

答案建源代码附件

【项目3:日志数据采集实践】

1、FlumefitlSource,Sink,Channel的作用?

(1)Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,

包括avro、thrift、exec、jms、spoolingdirectorynetcal、sequencegeneratorsyslog^http^

legacyo

(2)Channel组件对采集到的数据进行缓存,可以存放在Memory或File中。

(3)Sink组件是用于把数据发送到目的地的组件,目的地包括Hdfs、Logger,avro.

thrift、ipc>file、Hbase、solr、自定义。

2、如何通过Flume参数设置进行调优?

(1)Source参数设置

增力IISource个数(使月TairDirSource时可增力IIFileGroups个数)可以增大Source的

读取数据的能力。例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个

文件目录,同时配置好多个Source以保证Source有足够的能力获取到新产生的数据。

batchSize参数决定Source一次批量运输到Channel的event条数,适当调大这个参数可.以

提高Source搬运Event至ljChannel时的性能。

(2)Channel参数设置

type选择memory时Channel的性能最好,但是如果Flume进程意外挂掉可能会丢失

数据。type选择file时Channel的容错性更好,但是性能上会比memorychannel差。使用

fileChannel时dataDirs配置多个不同盘下的目录可以提高性能。

Capacity参数设置,Capacity参数决定Channel可容纳最大的event条数。

transactioncapacity参数设置,transactioncapacity参数决定每次Source往channel里面

写的最大event条数和每次Sink从channel里面读的最大event条数。transactioncapacity

需要大于Source和Sink的batchSize参数。

(3)Sink参数设置

增加Sink的个数可以增加Sink消费event的能力。Sink也不是越多越好,过多的Sink

会占用系统资源,造成系统资源不必要的浪费。batchSize参数决定Sink一次批量从Channel

读取的event条数,适当调大这个参数可以提高Sink从Channel消费event的性能。

3、请简单介绍一下Flume中的事务机制

Flume的事务机制(类似数据库的事务机制):Flume使用两个独立的事务分别负责

从Soucrce至ljChannel,以及从Channel至I]Sink的事件传递。比如spoolingdirectorysource为

文件的每一行创建一个事件,一旦事务中所有的事件全部传递到Channel且提交成功,那

么Soucrce就将该文件标记为完成。同理,事务以类似的方式处理从Channel到Sink的传

递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保

持到Channel中,等待重新传递。

4、若Flume采集日志过程中突然停止,己经采集但尚未写入的数据会不会丢失?请说

明原因?

数据丢失与否的关键在于Channel是否开启了持久化。Flame的Channel充当了数据缓

冲区,负责在Source(数据源)和Sink(数据目的地)之间暂存数据。

Flume本身采用了事务机制来保证数据传输的可靠性,即Source到Channel和Channel

到Sink都是事务性的,只有当下一个环节确认成功接收,上一个环节才会将数据移除。因

此,理论上只要数据被成功写入Channel,就不会轻易丢失。但不同类型的Channel在持久

化能力上存在根本差异,具体如下:

存储数据持久

Channel类型宕机后数据是否会丢失?适用场景

位置性

对吞L量要求极高,

会丢失“存储在内存队列中的未处理数据会随着

MemoryChannel内存非持久化且能容忍少量数据

JVM进程-■起消失,无法恢第。

丢失的业务。

不会丢失。它基于WAL(预写式日志)技术,所对数据可靠性要求

本地

FileChannel持久化有操作先写磁盘,右机重启后可恢发崩溃前已提交的高,不允许日志丢失

磁盘

所有事务。的生产环境。

不会丢失。注意,这是两种特殊的Source,并非

Spooling监控本地日志文件,

Source自Channel,它们通过记录已读取文件的位置来保证可

DirectorySourceN/A这是比ExecSource

带可靠性鸵性,即使Agent重启,也能从断点处继续读取,避

/TaildirSource更可靠的Source选择

免数据丢失。

Flume通过事务来串联数据传输的各个环节,确保了“At-leasl-once”(至少一次)的投

递语义。这意味着在正常情况下,数据不会在传输过程中“意外”丢失。唯一可能导致丢

失的场景,就是作为临时缓冲区的Channel本身不具备持久化能力。

MemoryChannel的工作原理:它将数据存储在内存队列中,速度极快。一旦Agent进

程因故障、断电等原因停止,这部分存在内存中且尚未被Sink消费的数据会立刻消失,无

法找回。

FileChannel的保障机制:它会先将数据写入磁盘中的日志文件,并定期执行Checkpoint

(检查点)操作。即使Flume突然崩溃,重启后系统会通过重新执行WAL来恢复Channel

到崩溃前的状态,确保已提交的数据不丢失。

5、简述AvroSource、ExecSource>SpoolingDirectorySource的主要区别?

这三个Source是Flume中非常经典的日志采集方式,它们的核心区别在于数据来源、

可靠性保证以及适用场景。下面是它们的主要区别总结:

-数据来源不同:AvroSource通过网络接收数据;ExecSource通过执行命令(如“lail

-F”)获取输出;SpoolingDirectorySource则通过读取本地指定目录下的静态文件来采集。

■可.靠性不同:ExecSource在进程崩溃或命令重启时,可能丢失数据或产生重复,可

靠性最低。而AvroSource和SpoolingDirectorySource都通过事务机制保证"至少一次”

的语义,可靠性更高。SpoohngSource还支持记录文件读取位置,避免重复。

-实时性不同:AvroSource和ExecSource支持接近实时的流式传输;Spooling

DirectorySource则更接近于“准实时”的批量读取,因为它基于检测并读取目录中的文件。

-典型应用场景:

-AvroSource:常用于多层FlumeAgent架构中,作为接收上一层Agent转发的数据

的节点,实现跨网络、跨节点的数据传输。

-ExecSource:适合测试环境,或采集少量、临时的命令输出,但因可靠性不足,

不建议在生产环境中使用。

-SpoolingDirectorySource:常用于采集已落盘的日志文件(如由日志服务轮转后的

文件),适合不要求毫秒级实时性的场景。

下面详细展开这三个Source的机制和注意事项:

I.AvroSource

-工作方式:它是一个基于ApacheAvroRPC(远程过程调用)协议的服务器,会监

听一个端口,等待上游的FlumeAgent通过AvroSink发送数据。

-可靠性:高。它采用事务机制,只有当数据成功写入Channel后,才会向发送端

确认,保证“至少一次”的语义。

-主要用途:作为Flume多层架构中的“接收端”,用于汇总多个Agent的数据,

或将数据跨网络传输(比如从应用服务器发送到中央口志收集器)。

特点:天生是跨节点的流式传输,与Avr。Sink配对使用,是构建分布式日志收集

链路的基石。

2.ExecSource

-工作方式:在启动时运行一个用户指定的Unix命令(例如“tail・F

/var/log/nginx/access.logM),并读取该命令的标准输出(Stdout)作为数据源。

-可靠性:低。这是其最大缺点。如果Agent崩溃或命令进程中断,重启后命令会

从头或从某个不确定的位置开始执行,这期间产生的数据无法被正确采集,容易导致数据

丢失或重复。同时,它不支持事务。

-主要用途:官方文档明确提示ExecSource不具备可靠性,仅建议用于测试、演示

或对数据丢失不敏感的场景。许多线上事故就是因使用“tail-F”的ExecSource引起的数

据丢失。

3.SpoolingDirectorySource

-工作方式:监听一个本地磁盘上的目录,读取目录中写入后不再被修改的“静态”

文件(例如由日志轮转生成的“.log”文件或“.tmp”文件)。

-可靠性:高。它会记录每个文件已读到的位置(基于偏移量),并采用事务机制,

支持“至少一次”的语义。即使在读取过程中Agent重启,也能从断点继续,不会丢数据。

-主要用途:用于采集已经落盘的日志文件,适合日志量不大、对实时性要求不高

的场景,或者应用无法修改以直接输出到网络/控制台时。

生产实践建议

-绝对要避免在生产环境的核心链路中使用ExecSource,特别是用来“tail”实时

日志。

对于实时采集不断写入的本地文件,推荐使用更可靠的TaildirSource(Flume1.7+

引入)。它结合了SpoolingDirectory的高可靠性和Exec的实时跟随能力,支持断点续传

和通配符监控多个文件。

-对于跨节点传输,AvroSource+AvroSink是标准、可靠的方案。

-对于离线批量采集已经完稿的静态日志文件,SpoolingDirectorySource非常适

合。

【项目4:使用Sqoop进行数据迁移】

1.问答题

请简述如下参数的含义?

参数含义

—table导出的源表表名

—columns从表中导出指定的列数据

-where指定导出时所使用的查询条件

-target-dir上传到hdfs的目录

-dclctc-targct-dir如果指定目录存在,则先删除掉

—fields-terminated-by数据导入hdfs中需要的分隔符

-num-mappers指明sqoop任务的mapper个数

—split-by设置按照哪个列去分割数据,如果mappers个数为1就

没必要传split-by参数

-compress表明输出的文件需要压缩

-compression-codec声明压缩格式

-null-string是string类型的字段,当Value是NULL,替换成指定

的字符

—null-non-string是非string类型的字段,当Value是NULL,替换成指

定字符

2.操作题

(1)准备数据

在tesi数据库中创建如下数据表

CREATETABLE'st_info'(

'id'int(10)DEFAULTNULL,

'name'varchar(50)DEFAULTNULL,

'school'varchar(lO)DEFAULTNULL,

'agesint(10)DEFAULTNULL,

'high'varchar(lO)DEFAULTNULL

)ENGINE=InnoDBDEFAULTCHARSET=latinl;

并在数据中插入如下数据。

INSERTINTO'stjnfo'VALUES('2023040l\'HarryPotter?Hogwarts'J8'」68');

INSERTINTO'st_info'VALUES('20230402';HermioneGranger','Hogwarts';17:160');

INSERTINTO'stjnfo'VALUES('20230403,:AlbusDumbledore'/Hogwarts';1507178t);

INSERTINTO'stjnfo'VALUES('20230404,;SeverusSnape':Hogwarts':50,;175');

INSERTINTO'st_infoxVALUES('20230405','RubcusHagrid','Hogwarts','50','260');

(2)请使用sqccp把数据全量导入到HDFS的人SQL2HDESI目录下,要求使用一个map

sqoopimport\

—connectjdbc:mysql://inaster:3306/test?useSSL=false\

—usernameroot\

—password123456\

-delete-target-dir\

-target-dir/SQL2HDFS1\

—tablest_infd\

-fields-terminated-byV\

-num-mappers1

(3)请使用sqoop把部分数据导入到HDFS的/SQL2HDFS2目录下,要求使用where指

定age=50的条件杳询,要求使用一个m叩。

sqoopimport\

—connectjdbc:mysql://master:3306/test?useSSL=false\

-usernameroot\

—password123456\

-where"age=50"\

—dclcte-targct-dir\

-targel-dir/SQL2HDFS2\

-tablest_info\

—fields-terminated-by'\t'\

-num-mappers1

(4)请使用sqoop把部分数据导入到HDFS的/SQL2HDFS3目录下,要求使用querysql

语句杳询,导入的字段为,age,杳询条件为age>17,要求使用两个map,以id字段进

行划分。

sqoopimport\

-connectjdbc:mysql://master:3306/tesl?useSSL=false\

-usernameroot\

—password123456\

-delete-target-dir\

-target-dir/SQL2HDFS3\

--query'selectid,name,agefromst_infoWHEREage>17and$CONDITIONS'\

—split-byid\

-fields-terminated-by%'\

-num-mappers2

(5)请使用sqoop把数据全量导入到Hive的demo数据库下,要求使用一个map

sqoopimport\

-connectjdbc:mysql://master:3306/test?useSSL=false\

—usernameroot\

-password123456\

—tablest_info\

-hive-import\

-num-mappers1\

-hive-databasedemo

【项目5:数据预处理实践】

1、填空题

(1)Kettle中有两种脚本文件:Transformalion和Job0其中,Transformaliou用于完

成针对数据的基础转换,而她用于完成整个工作流的控制。

(2)Kettle主要有4人组件组成,分别为:Spoon、Pan、Kitchen和Carte组件。

(3)随机采样是一种常用的数据采样方法,它通过随机选择数据集中的样本又构建样

本数据。在Python中,可以使用random模块提供的sample函数来实现随机采样。

(4)在Pandas中,有两种常用的数据合并方式:concat与merge。

(5)数据重塑是指转换数据组织成行和列的方式。Pandas为用户提供了多种数据重

塑的方法,常用的有Divot函数和melt函数。

(6)melt函数如下所示。

pandas.melt(frame,id_vars=None,value_vars=None,var_name=None,value_name='value',

col_level=None)

其中参数frame用于指定要转换的DataFrame,参数id_vars用于指定要保留的列,不进行

转换的列,参数vakie_vars用于指定要转换的列,参数vajname用于指定生成的新列的名

(7)数据离散化的目的是为了简化数据结构。连续属性的离散化就是将连续属性的值

域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属

性值,离散化方法经常作为数据挖掘的工具。常用的函数使用有cut函数、qcut函数

实现数据的区间分组转换。

(8)哑变量转换是一种将多分类变量转换为二分变量的一种方法。Pandas中的

gejdummies函数可以实现数据的哑变量矩阵转换。

(9)特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的

特征的过程。特征处理主要有三个方法:特征构建、特征抽取、特征选择。

(10)jieba是百度工程师SunJunyi开发的一个开源库,jieba最流行的应用是分词、关

键词抽取、词频统计等,是优秀的中文分词第三方库。jieba支持四种分词模式:精确模式、

搜索引擎模式、全模式、paddle模式。

(11)jieba中的常用函数jieba.load_userdict(dict_path)的功能是添力口词典,dictpath为

文件类对象或自定义词典的路径;jiciba.add_\vord(word)的功能是向分词词典中增加新词

word;jieba.analyse.extract_tags(sentence,topK=20,withWeight二False,aHowPOS=())的功能是

使用TF-IDF算法从句子中提取关键词;iieba.analyse.s?t_stop_words(file_name)的功能是关

键词提取所使用停止词(StopWords)文本语料库可以切换成自定义语料库的路径,

filename为自定义语料库的路径。

(12)基于统计的分词方法所应用的主要统计模型有:隐马尔可夫模型(HidcnMarkov

Model,HMM)、最大熠模型(ME)、条件随机场模型(ConditionalRandomFields,CRF)

等。

(13)在NLTK中的pos」aN函数用于进行词性的标注。jieba默认词性标注集

(Python37\Lib\site-packages\jieba\dict.txt),可以使用makusureuserdicl」oaded函数将自定

义的词汇加入标注集中。

(14)关键词是能够表达文档中心内容的词语,从算法的角度来看,关键词提取算法主

要有两类:无监督关键词提取方法和有监督关键词提取方法。

(15)词形规范化过程主要包括两种:词干提取和词形还原,对于词干提取来说,

nltk.stcm模块中提供了多种词干提取器,目前最受欢迎的就是波特词干提取器和兰卡斯特

词干提取器。nltk.stem模块中,WordNet提供了非常好用的词形还原的函数。

2、操作题

任务一:使用kett加进行数据清洗。

(1)创建一个新的转换“旅游信息数据预处理”。将创建过程截图。

ES另存为x

,▼个一"Win_>pdi-ce...vCSpdi-ce--342中搜...P

文件名(N):v|

保存类型(T):Kettletransformations

“浏览文件夹(B)冉肖

(2)创建DB连接,创建一个planedemo数据库连接〔使用mysql中的planedemo数据库

的trip表),将连接创建的设置截图。

Ml

pUncdrmofilWArt

连接他

王秋名行

NtftrveMocdrhn

Neoview

Netrzza

OpenERPSefvef

Of«le

OfMleRDB

PdioMOLAPSewf

PenSoDeUServke$

P5tgrKQ(

Kecnhin

RemecJyActionRequestSystem

■IXeQwHStreamingCunor

履唐

(3)创建一个表输入,将其设置截图。

里表蝙入§数寤库浏览器

步器名际表输入O%动作・

数据库连接planedemoK据库连娄蟀g...新建…Wizard-Sauthuseruserpermissions

Bdjangoadminjog

SQI荻取SQL查询语句-

3djangocontenttype

SZLECT•0节

FR咏tripBdjangomigrations

Sdjangosession

■♦

fflinfo

行1殉)寸trip

允许簿易徒换□tripl

替授SQL语句里的变..」

Htriptest

从步要插入辘■beijingbusinfo

Ssysconfig

数制10001Bpeople

©Help确定(O)ffi£(P)取消(C)确定取消

(4)拆分酒店字段,将酒店字段按照空格作为分隔符进行字段拆分为“酒店”、“类型”

和评分字段,并将创建设置截图。

25拆分字段-OX

步骤名称拆分酒店字段

需要拆分的字段酒店

分偈符。

字段

»新的字段ID^»ID?类型mft格式分组符号小数点出斐不符号Nullif缺省去除空格类型

1酒店NString不去抽空格

2类型NString不去掉空格

3部分NString不去短空格

I©Help确逵(O)取消(C)

(5)使用正则表达将类型字段中的“3.9分/5分”样式的内容替换为“舒适型”,并将创建

设置图片截图。

字符串日慢-□X

MM1WM________________________________________________________

字段

•修入澹字段检出范例使用正史表达式授案便用…替修设置为仝串?使用领HBH修整个单词匹配大小司•圈KUnicode

||1JISA\dWAd»t«9fiBBS

©Help«fe(O)Cl取才段(G)取冰。

L--------——1...........'t■..................J'j

(6)将数据中的“评分”字段中的“null”俏替换为“4.0”,并将设置讲行截图。

"替换NULL值一0X

作业名称替换NULUfi

替换所有字段的null值

佰音滨为。

设置空却出二)

晒(日题1一▼

选择字段,

选!到自类型口

值姥1

T类型值替换为转换掩码(日期)设置空字符串

字段

#字段值音换为转换掩码(日期)设置空字符串

1评分4.0否

©Help频(O)要取字段取消(C)

(7)将“评分”字段的数据由“4.7分/5分”样式经过剪切字符串截取为“4.7”样式,并

将设置截图。

y剪切:字符串-□X

步骤名称E■现切字符串

要剪切的二字段

#输入力元字段输出流字段起始位置结束位置

1评分处理后的评分03

©Help确定(0)获取字段(G)取消(C)

温馨提示

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

评论

0/150

提交评论