收藏 分享(赏)

人工智能PPT第4章 数据划分与特征提取.ppt

上传人:bubibi 文档编号:18831130 上传时间:2023-11-02 格式:PPT 页数:31 大小:582KB
下载 相关 举报
人工智能PPT第4章 数据划分与特征提取.ppt_第1页
第1页 / 共31页
人工智能PPT第4章 数据划分与特征提取.ppt_第2页
第2页 / 共31页
人工智能PPT第4章 数据划分与特征提取.ppt_第3页
第3页 / 共31页
人工智能PPT第4章 数据划分与特征提取.ppt_第4页
第4页 / 共31页
人工智能PPT第4章 数据划分与特征提取.ppt_第5页
第5页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第4 4章章 数据划分与特征提取数据划分与特征提取数据划分数据划分n在机器学在机器学习中,通常将数据集划分中,通常将数据集划分为训练数据数据集和集和测试数据集。数据集。训练数据集用于数据集用于训练数据,数据,构建机器学构建机器学习模型。模型。测试数据集用于数据集用于评估模型估模型是否有效。一般情况,数据集划分比例是否有效。一般情况,数据集划分比例为训练集占集占7080%,而,而测试集占集占2030%。测试数据数据不参与不参与训练,从而,从而较为客客观的的评估模型估模型对于于训练集之外数据的匹配程度。集之外数据的匹配程度。train_test_split()x_train,x_test,y_t

2、rain,y_test=sklearn.model_selection.train_test_split(train_data,train_target,test_size,random_state)参数参数含义含义train_data待划分的样本数据train_target待划分样本数据的结果(标签)test_size测试数据占样本数据的比例,若整数则样本数量。若test_size=0.3,样本数据的30%为测试数据,记入X_test,其余70%数据记入X_train。random_state设置随机数种子,保证每次都是同一个随机数。若为0或不填,每次生成的随机数不同。x_train划分出的

3、训练集数据(特征值)x_test划分出的测试集数据(特征值)y_train划分出的训练集标签(目标值)y_test划分出的测试集标签(目标值)cross_val_score()()K折交叉折交叉验证是指将数据集划分是指将数据集划分为k个大小相似个大小相似的互斥子集,然后每次用(的互斥子集,然后每次用(k-1)个子集的并集)个子集的并集作作为训练集,余下的那个子集作集,余下的那个子集作为测试集,反复集,反复如此如此进行行k次次训练和和测试,返回,返回k个个测试结果的均果的均值。“10次次10折交叉折交叉验证法法”最最为常用,将数据常用,将数据集分成集分成10份,份,轮流将其中流将其中9份作份作为

4、训练数据,数据,1份作份作为测试数据数据进行行试验KFoldnKFold(K折交叉折交叉验证)只是划分数据集。所)只是划分数据集。所谓K折就是将数据集通折就是将数据集通过K次分割,使得所有次分割,使得所有数据既在数据既在训练集出集出现过,又在,又在测试集出集出现过,当然,每次分割中不会有重叠当然,每次分割中不会有重叠,相当于无放回抽相当于无放回抽样。n在在sklearn中中model_slection模模块提供提供KFold函数,函数,语法形式如下所示:法形式如下所示:KFold(n_splits,shuffle,random_state)ShuffleSplitnShuffleSplit是有

5、放回的抽是有放回的抽样,model_slection模模块提供提供ShuffleSplit函数,函数,语法如下所示:法如下所示:nShuffleSplit(n_split,test_size,train_size,random_state)独热编码独热编码l机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据,独热编码把文本转换为数值,也称One-Hot编码,又称为一位有效编码。lone-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。l独热编码具有操作简单,容易理解的优势。但是,独热编码完全割裂了词与词之间

6、的联系,而且在大语料集下,每个向量的长度过大,占据大量内存。举例举例步步骤1.确定确定编码对象:象:中国中国,美国美国,日本日本,美国美国“步步骤2.确定分确定分类变量:中国、美国、日本共量:中国、美国、日本共3种种类别步步骤3.进行特征行特征编码:中国:中国0,美国,美国1,日本,日本2。pandas实现实现pandas的的get_dummies函数函数实现one-hot编码。pandas.get_dummies(data,sparse=False)importpandasaspds=pd.Series(list(abcd)print(s)s1=pd.get_dummies(s,sparse

7、=True)print(s1)dtype:objectabcd01000101002001030001sklearn实现实现Sklearn采用采用OneHotEncoder编码。fromsklearn.preprocessingimportOneHotEncoderenc=OneHotEncoder()enc.fit(0,0,3,1,1,0,0,2,1,1,0,2)#fit编码ans1=enc.transform(0,1,3)#输出稀疏矩出稀疏矩阵ans2=enc.transform(0,1,3).toarray()#输出数出数组格式格式print(稀疏矩稀疏矩阵n,ans1)print(数数

8、组格式格式n,ans2)特征提取特征提取数据往往具有不同的数据类型,如数值型、字符型、布尔型等。但是,机器学习模型只接收数值型和布尔型,需要特征提取进行转化。特征提取又称为特征抽取,是将任意数据(字典、文本或图像)转换为可用于机器学习的数字特征。方 法 说 明feature_extraction.DictVectorizer 将特征值映射列表转换为向量feature_extraction.FeatureHasher特征哈希feature_extraction.text文本相关特征抽取feature_extraction.image图像相关特征抽取feature_extraction.text.

9、CountVectorizer将文本转换为每个词出现次数的向量feature_extraction.text.TfidfVectorizer将文本转换为tfidf 值的向量字典特征提取字典特征提取字字典特征提取是将字典内容典特征提取是将字典内容转化成化成计算机算机可以可以处理的数理的数值。sklearn提供提供DictVectorizer函数函数实现字典特征提取,具体字典特征提取,具体语法如下所示法如下所示:sklearn.feature_extraction.DictVectorizer(sparse=True)字典特征提取字典特征提取fromsklearn.feature_extracti

10、onimportDictVectorizerdefdictvec1():#定定义一个字典列表,表示多个数据一个字典列表,表示多个数据样本本data=city:上海上海,temperature:100,city:北京北京,temperature:60,city:深圳深圳,temperature:30#1、转换器器DictTransform=DictVectorizer()#DictTransform=DictVectorizer(sparse=True)两行代两行代码效果一效果一样#2、调用用fit_transform方法,返回方法,返回sparse矩矩阵data_new=DictTransfo

11、rm.fit_transform(data)print(DictTransform.get_feature_names()print(data_new)returnNoneif_name_=_main_:dictvec1()city=上海上海,city=北京北京,city=深圳深圳,temperature1.0.0.100.0.1.0.60.0.0.1.30.3行表示行表示3个向量,即个向量,即3个个样本。本。4列表示列表示2个特征(个特征(city和温度)的取和温度)的取值。其中,。其中,city共共3个取个取值,取,取值为上海上海,北京北京,深圳深圳,采用,采用onehot编码。第一行中,

12、第一行中,上海上海为真,取真,取值为1,北京北京、深圳深圳为假,取假,取值为0;第二行中,;第二行中,北京北京为真,取真,取值为1,其余,其余为0依次依次类推。推。文本特征提取文本特征提取nCountVectorizer与与TfidfVectorizer是两个特是两个特征数征数值计算的常算的常见方法。方法。nCountVectorizer只考只考虑每种每种词汇在文本中出在文本中出现的的频率率nTfidfVectorizer除了考量某一除了考量某一词汇在当前在当前训练文本中出文本中出现的的频率之外,同率之外,同时关注包含关注包含这个个词汇的其它的其它训练文本数目的倒数。相比之下,文本数目的倒数。

13、相比之下,训练文本的数量越多,文本的数量越多,TfidfVectorizer更有更有优势CountVectorizersklearn提供提供CountVectorizer方法用于文本特征提取,方法用于文本特征提取,具体具体语法如下所示:法如下所示:feature_extraction.text.CountVectorizer(stop_words)CountVectorizerfromsklearn.feature_extraction.textimportCountVectorizertexts=orangebananaapplegrape,bananaappleapple,grape,or

14、angeapple#1.实例化一个例化一个转换器器类cv=CountVectorizer()#2.调用用fit_transform()cv_fit=cv.fit_transform(texts)print(cv.vocabulary_)print(cv_fit.shape)print(cv_fit)print(cv_fit.toarray()运行运行结果:果:orange:3,banana:1,apple:0,grape:21111210000101001根据每个根据每个单词的首字母在的首字母在26个字母中出个字母中出现的先后次的先后次序序进行排序。(行排序。(apple,banana,gra

15、pe,orange)排名)排名为(0,1,2,3)。)。#(0,2)1解解释为第一字符串的第一字符串的顺序序为2的的词语出出现次数次数为1。0表示第一个字符串表示第一个字符串orangebananaapplegrape。2为grape。1表示出表示出现次数次数1。#bananaappleapple在(在(apple,banana,grape,orange)出)出现的的频率率为2,1,0,0。TF-IDF模型(term frequencyinverse document frequency,词频与逆向文件频率)用于评估字词对于文件重要程度。如果某词语在文中出现频率高,而在其他文中很少出现,认为该

16、词语具有很好的类别区分能力TfidfVectorizer步骤步骤1:计算:计算TF步步骤2:计算算IDF步步骤3:计算算TF-IDFtf-idf算法算法=tf算法算法*idf算法。算法。(1)计算算TF某文件共有某文件共有100个个词语,“苹果苹果”出出现3次,次,“苹果苹果”在在该文件中的文件中的词频就是就是3/100=0.03。(2)计算算IDF“苹果苹果”在在1000个文档中出个文档中出现,全部文件,全部文件总数是数是10000000个,逆向文件个,逆向文件频率是率是Lg(10000000/1000)=4。(3)计算算TF-IDFTf-idf的的值就是就是0.03*4=0.12。skle

17、arn提供提供TfidfVectorizer函数函数实现,语法如下所示:法如下所示:TfidfVectorizer(stop_words,sublinear_tf,max_df)Sklearn计算计算TF-IDFJieba分词库分词库当文本内容很多,不可能采用空格当文本内容很多,不可能采用空格进行分行分词,可,可以使用以使用jieba库。Jieba库是一个是一个python实现的分的分词库,用于用于统计分析某一或某些分析某一或某些给定的定的词语在某文件中出在某文件中出现的次数的次数jieba库支持如下三种分支持如下三种分词模式:模式:n精确模式,精确模式,试图将句子最精确地切开,适合文本分析将

18、句子最精确地切开,适合文本分析n全模式,把句子中所有的可以成全模式,把句子中所有的可以成词的的词语都都扫描出来描出来,速度非常快,但是不能解决歧速度非常快,但是不能解决歧义;n搜索引擎模式,在精确模式的基搜索引擎模式,在精确模式的基础上,上,对长词再次切再次切分,提高召回率,适合用于搜索引擎分分,提高召回率,适合用于搜索引擎分词。全模式举例全模式举例importjiebaseg_list=jieba.cut(我来到北京清我来到北京清华大学大学,cut_all=True)print(Fullmode:+/.join(seg_list)【程序运行【程序运行结果如下所示】果如下所示】Fullmode

19、:我我/来到来到/北京北京/清清华/清清华大学大学/华大大/大学大学精确模式精确模式importjiebaseg_list=jieba.cut(我来到北京清我来到北京清华大学大学,cut_all=False)print(Defaultmode:+/.join(seg_list)【程序运行【程序运行结果如下所示】果如下所示】Defaultmode:我我/来到来到/北京北京/清清华大学大学搜索引擎模式搜索引擎模式importjiebaseg_list=jieba.cut_for_search(我来到北京清我来到北京清华大学大学)print(/.join(seg_list)【程序运行【程序运行结果如

20、下所示】果如下所示】我我/来到来到/北京北京/清清华/华大大/大学大学/清清华大学大学自定义词典自定义词典方式方式1:词典文件典文件通通过添加添加词典文件定典文件定义分分词最小最小单位,文件需要位,文件需要有特定格式,并且有特定格式,并且为UTF-8编码。jieba.load_userdict(file_name)自定义词典自定义词典自定自定义词典,在典,在d:下下创建建userdict.txt文件,内容遵守文件,内容遵守如下如下规则:一个:一个词占一行;每一行分三部分:占一行;每一行分三部分:词语、词频(可(可省略)、省略)、词性(可省略),用空格隔开,性(可省略),用空格隔开,顺序不可序不

21、可颠倒。本例倒。本例的的userdict.txt文件内容文件内容为:周元哲:周元哲3nimportjiebajieba.load_userdict(d:/userdict.txt)#加加载自定自定义词典典seg_list=jieba.cut(周元哲老周元哲老师是是Python技技术讲师,cut_all=True)print(/.join(seg_list)【程序运行【程序运行结果】果】周元哲周元哲/老老师/是是/Python/技技术/讲师动态修改词频动态修改词频调节单个个词语的的词频,使其能(或者不能)被分出来。,使其能(或者不能)被分出来。jieba.suggest_freq(segment

22、,tune=True)【例【例10-7】jieba.suggest_freq举例例importjiebajieba.suggest_freq(周元哲周元哲,tune=True)seg_list=jieba.cut(周元哲老周元哲老师是是Python技技术讲师,cut_all=True)print(/.join(seg_list)词性标注词性标注每个每个词语都有都有词性,如性,如“周元哲周元哲”是名是名词(n),),“是是”是是动词(v)等,)等,jieba命令如下所示:命令如下所示:jieba.posseg.cut()【例【例10-8】“词性性标注注”举例例importjieba.posseg

23、aspsegwords=pseg.cut(周元哲老周元哲老师是是Python技技术讲师)forword,flaginwords:print(%s%s%(word,flag)断词位置断词位置断断词位置用于返回每个分位置用于返回每个分词的起始和的起始和终止位置,止位置,语法如下所示:法如下所示:jieba.Tokenizer()【例【例10-9】断】断词位置位置举例例importjiebaresult=jieba.tokenize(周元哲老周元哲老师是是Python技技术讲师)#返返回回词语在原文的起止位置在原文的起止位置print(默默认模式模式为:)fortkinresult:print(wo

24、rd%sttstart:%dttend:%d%(tk0,tk1,tk2)关键词抽取关键词抽取importjieba.analyseasanalyselines=周元哲老周元哲老师是是Python技技术讲师keywords=analyse.extract_tags(lines,topK=20,withWeight=True,allowPOS=()foriteminkeywords:print(%s=%f%(item0,item1)【程序运行【程序运行结果】果】周元哲周元哲=2.390959Python=2.390959讲师=1.727597老老师=1.279689技技术=0.993891停用词表停用词表如果只使用如果只使用词频来衡量重要性,很容易来衡量重要性,很容易过度度强调在文档中在文档中经常出常出现而并没有包含太多与而并没有包含太多与文档有关的信息的文档有关的信息的词语,如文档中的,如文档中的标点、空点、空格、没有意格、没有意义的字的字-“的,了的,了”等。停用等。停用词表(表(StopWords)将)将这些没有什么些没有什么实际含含义的功能的功能词汇总,可在网上下,可在网上下载,如网址,如网址https:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 旅游攻略 > 广东广西

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报