机器学习:特征工程之特征提取

目录

  • 第一部分:特征工程
    • 一.概念
    • 二.意义
    • 三.特征处理
  • 第二部分:特征提取
    • 一.特征抽取
    • 二.分类特征变量提取
    • 三.文本特征提取
    • 四.文本分类中的特征提取(Tfidf)
  • 备注:
    • 一.词

第一部分:特征工程

一.概念

1.“数据决定了机器学习的上限,而算法只是尽可能逼近这个上限”,这句话很好的阐述了数据在机器学习中的重要性。大部分直接拿过来的数据都是特征不明显的、没有经过处理的或者说是存在很多无用的数据,那么需要进行一些特征处理,特征的缩放等等,满足训练数据的要求。
2.特征工程的过程:从数据中抽取出对预测结果有用的信息,通过专业的技巧进行数据处理,使特征能在机器学习算法中发挥更好的作用。
注:优质的特征往往描述了数据的固有结构。 最初的原始特征数据集可能太大,或者信息冗余,因此在机器学习的应用中,一个初始步骤就是选择特征的子集,或构建一套新的特征集,减少功能来促进算法的学习,提高泛化能力和可解释性。

二.意义

对数据进行特征工程,是为了获得有代表性的特征,只需用简单模型,得到更好的结果。

三.特征处理

对已有的数据进行运算达到目标的数据标准,特征预处理包括:单个特征和多个特征。
单个特征:归一化、标准化、缺失值;
多个特征:降维,如PCA。

第二部分:特征提取

一.特征抽取

将任意数据格式(例如文本和图像)转换为机器学习的数字特征。
很多特征都不是连续变量,比如分类、文字、图像等,为了对非连续变量做特征表述,需要对这些特征做数学化表述。其中sklearn.feature_extraction提供了特征提取的很多方法,可以作为小数据训练或练习使用。

二.分类特征变量提取

sklearn.feature_extraction.DictVectorizer()----字典向量化的类
DictVectorizer.fit_transform(X)----根据实例化设置返回sparse矩阵或者ndarray类型,X:字典或者包含字典的迭代器;
DictVectorizer.inverse_transform(X)----返回转换前的数据格式,X:array数组或者sparse矩阵;
DictVectorizer.get_feature_names()----返回类别名称
机器学习:特征工程之特征提取_第1张图片

三.文本特征提取

sklearn.feature_extraction.text.CountVectorizer()----文本特征提取(单词计数)的类
CountVectorizer.fit_transform(X)----返回sparse矩阵,X:文本或者包含文本字符串的可迭代对象;
CountVectorizer.inverse_transform(X)----返回转换前的数据格式,X:array数组或者sparse矩阵;
CountVectorizer.get_feature_names()----返回单词列表。
机器学习:特征工程之特征提取_第2张图片
注:
1.是sklearn的特征提取库中的text模块中的CountVectorizer,不要忽略text
2.文本特征提取中以空格和标点符号等作为分隔,但是不包括长度为1的单词;
3.如果需要对中文文本进行特征提取,需要进行手动的空格分隔词汇,也可以调用jieba模块中的cut()方法进行分割:

import jieba
s = '人生苦短,我们应该及时行乐'
# jieba.cut()返回的结果是词语生成器,需要转换成列表,再转化成字符串,进行特征提取
list(jieba.cut(s))
Out[6]: ['人生', '苦短', ',', '我们', '应该', '及时行乐']
' '.join(list(jieba.cut(s)))
Out[7]: '人生 苦短 , 我们 应该 及时行乐'

四.文本分类中的特征提取(Tfidf)

1.在对文本进行分类的过程中,目的是将不同主旨的文章分开,如果单纯使用统计词语出现次数的方法,像“我们”,"所以"等日常用语的多次出现往往会影响分类效果,所以需要找到出现频率高且不是在所有文本都经常出现的词语,作为分类标准。
Tfidf----term frequency/inverse document frequency(出现频率/逆文件频率)
sklearn.feature_extraction.text.TfidfVectorizer()----TF-IDF,用于文本特征提取的类;
TfidfVectorizer.fit_transform(X,y)----返回sparse矩阵,X:文本或者包含文本字符串的可迭代对象;
TfidfVectorizer.inverse_transform(X)----返回转换之前数据格式,X:array数组或者sparse矩阵;
TfidfVectorizer.get_feature_names()----返回单词列表。
2.TF-IDF的主要思想:如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
3.TF-IDF作用:评估词对于一个文件集或一个语料库中的其中一份文件的重要程度,是分类机器学习算法的重要依据。

备注:

一.词

feature----特征
extraction----提取
inverse----相反的

你可能感兴趣的:(机器学习,特征提取)