《人工智能基础及应用(Python 微课版)》课件 第5.2 特征工程_第1页
《人工智能基础及应用(Python 微课版)》课件 第5.2 特征工程_第2页
《人工智能基础及应用(Python 微课版)》课件 第5.2 特征工程_第3页
《人工智能基础及应用(Python 微课版)》课件 第5.2 特征工程_第4页
《人工智能基础及应用(Python 微课版)》课件 第5.2 特征工程_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

特征工程独热编码机器学习算法往往无法直接处理文本数据,需要把文本数据转换为数值型数据,独热编码把文本转换为数值,也称One-Hot编码,又称为一位有效编码。one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。独热编码具有操作简单,容易理解的优势。但是,独热编码完全割裂了词与词之间的联系,而且在大语料集下,每个向量的长度过大,占据大量内存。举例步骤1.确定编码对象:["中国","美国","日本","美国“]步骤2.确定分类变量:中国、美国、日本共3种类别步骤3.进行特征编码:中国—0,美国—1,日本—2。方法1: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=True)print(s1)dtype:objectabcd01000101002001030001方法2:sklearn实现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("数组格式\n",ans2)特征提取

数据往往具有不同的数据类型,如数值型、字符型、布尔型等。但是,机器学习模型只接收数值型和布尔型,需要特征提取进行转化。特征提取又称为特征抽取,是将任意数据(字典、文本或图像)转换为可用于机器学习的数字特征。方

法说

明feature_extraction.DictVectorizer

将特征值映射列表转换为向量feature_extraction.FeatureHasher特征哈希feature_extraction.text文本相关特征抽取feature_extraction.image图像相关特征抽取feature_extraction.text.CountVectorizer将文本转换为每个词出现次数的向量feature_extraction.text.TfidfVectorizer将文本转换为tfidf值的向量字典特征提取

字典特征提取是将字典内容转化成计算机可以处理的数值。sklearn提供DictVectorizer函数实现字典特征提取,具体语法如下所示:

sklearn.feature_extraction.DictVectorizer(sparse=True)字典特征提取fromsklearn.feature_extractionimportDictVectorizerdefdictvec1():#定义一个字典列表,表示多个数据样本data=[{"city":"上海",'temperature':100},{"city":"北京",'temperature':60},{"city":"深圳",'temperature':30}]#1、转换器DictTransform=DictVectorizer()#DictTransform=DictVectorizer(sparse=True)两行代码效果一样

['city=上海','city=北京','city=深圳','temperature'][[1.0.0.100.][0.1.0.60.][0.0.1.30.]]3行表示3个向量,即3个样本。4列表示2个特征(city和温度)的取值。其中,city共3个取值,取值为'上海','北京',深圳',采用one–hot编码。第一行中,‘上海’为真,取值为1,‘北京’、‘深圳’为假,取值为0;第二行中,‘北京’为真,取值为1,其余为0……依次类推。字典特征提取#2、调用fit_transform方法,返回sparse矩阵data_new=DictTransform.fit_transform(data)print(DictTransform.get_feature_names())print(data_new)returnNoneif__name__=='__main__':dictvec1()['city=上海','city=北京','city=深圳','temperature'][[1.0.0.100.][0.1.0.60.][0.0.1.30.]]文本特征提取CountVectorizer与TfidfVectorizer是两个特征数值计算的常见方法。CountVectorizer只考虑每种词汇在文本中出现的频率TfidfVectorizer除了考量某一词汇在当前训练文本中出现的频率之外,同时关注包含这个词汇的其它训练文本数目的倒数。相比之下,训练文本的数量越多,TfidfVectorizer更有优势CountVectorizer

sklearn提供CountVectorizer方法用于文本特征提取,具体语法如下所示:feature_extraction.text.CountVectorizer(stop_words)CountVectorizer

fromsklearn.feature_extraction.textimportCountVectorizertexts=["orangebananaapplegrape","bananaappleapple","grape",'orangeapple']#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':2}[[1111]

[2100]

[0010]

[1001]]根据每个单词的首字母在26个字母中出现的先后次序进行排序。(apple,banana,grape,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模型(termfrequency–inversedocumentfrequency,词频与逆向文件频率)用于评估字词对于文件重要程度。如果某词语在文中出现频率高,而在其他文中很少出现,认为该词语具有很好的类别区分能力TfidfVectorizer

步骤1:计算TF

步骤2:计算IDF步骤3:计算TF-IDFtf-idf算法=tf算法*

idf算法。(1)计算TF

某文件共有100个词语,“苹果”出现3次,“苹果”在该文件中的词频就是3/100=0.03。(2)计算IDF

“苹果”在1000个文档中出现,全部文件总

温馨提示

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

评论

0/150

提交评论