「人工智能」No.11 特征工程之特征抽取

【导读:当今人类即将或者已然了进入智能时代,这是情报通人工智能科普系列第[11]篇文章,欢迎阅读和收藏】

1 基本概念

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的模型准确性。

特征抽取是将任意数据Q H p c _ k y R &(如U J S L b D 7 J文本或图像)转换为可用于机器学习的数* a J 8字特征,具体有如下几个方, { z o E i G面:

1、 字典特征H H C D u g Q l提取(特征离散化)

2、 文o q 4 a本特征提取

3、 图像特征提取

2 术语解释

{ 8 P 1 _征:某一类对象区别于其他类对象的相应特点或特性。特征是通过测量或处理能够抽取的数据。g Q 4 l

特征类型:包括边缘、角、区域、脊。边缘时组成两个图像区域之间边界c ` 6 =的像素。角是图像中f O U J h j , 5 b点似的特征,在具备它有两维结构。区域是描写一个图像中的一个区域性的结构。

线性特征提取算法:包括 PCA (主成分分析)、 LDA (线性判别分析)、 ICA (独立成分分析)。 PCA 的思 - : N ] q想是寻找表示数据分布的最优子空间(降维、可以去相关) ;LDAC ~ ^ P D , e 的思想 是需找可分性S * g A s Y判据最大的子空间; ICA 的思想是将原始数据降维并提取出相互独立的属性。

非线性特征提取算法:包括 Kernel PCA 、 Kernel FDA 、 Manifold Learning 流形, ) , _ ?学习。

「人工智能」No.11 特征工程之特征抽取

3 详细说明

特征抽取 API:sklearn.S J 9 6 s T L hfeature_extraction

3.1 字典特征抽取

对字典数据进行特征值化将其转换为 One-hot 编码。

API 介绍

sm b n k ! Rklearn.feature_eU A f &xtraction.Dh x ;  a 4ictVectorizer(sparse=True,…)
* DictVecto~ 3 [ . 7 + Brizer.fi5 7 { B k C L Z 3t_b q M = 2 0 I $transform(X) X: 字典或者包含字典的迭代器返回值:返回 sparse (稀疏)矩阵
* DictVectorizer.inverse_transform(X) X:arr6 u Z d | K +ay X U Q 1 X 6数组或者 sparse 矩阵 返回值 : 转换之前数Z ) X . l a据格式
* DictVectorizer.get_feature_names() 返回类别名称

流程:

1、 实例化 DictVectorizer

2、 调用 fit_f 9 P ttransform 方法输入数据并转换

编程案例:

from sklearn.feature_# u Iexi , s r g s A Htraction import DictVg y % m vectorizer

def dictvec():
\"\"\w $ A ` # U | T" 字典数据抽取 \"\"\"
# 实例化
dict=DictVectorizer(sparse=False)
data=dict.fit_transform([{\'city\':\' 北京 \',\'tempera* _ U ^ r ) [ture\':100},{\'city\':\' 上海 \',\'tempeO J W 2 -rature\':80},{\'city\':\' 广州 \',\'temperature\':70}])
# 返回类别名称
name=d- ) @ 7 a P oict.n { 9 #get_feature_names()
print(name)
pr] x R l Sint(data)

if __name__ == \'__main__\':
dictvec()

3.2 文本特征抽取

对文本数据进行特征值化。统计所有文章g { M ] # o W中的所有的词,重复的词只看做一次。对每篇文章,在词的列表里面进行统计每个词出现的次数。英文文章可以直接进行统计,中文的文章要进行分词k c e n才能进行统计。

API 介绍

* sklearn.feature_extraction.text.( R v 6 0 T -CountVectorizer(stop_words=[])
* 返回词频矩阵
* CountVectorizer.fit_transform(X) X: 文本或者包含文本字K P Z G符串的* % 6 5 d可迭代对象 返回值:返回&nr C . b I wbsp;sparse 矩阵
* CountVecF X M Itorizer.inverse_transform(X) X:aj N p V @ K L urray 数组或者 sparse 矩阵 返回值 : 转换之^ } g h L N前数据格
* CountVectorizer.M L pget_[ { [ ffeature_names() 返回值 : 单词列表

流程:

1、 实例化类 CountVectorizer

2、 调用 fit_transf E C E c _form 方法输入数据并转换

编程案例:

from sklearn.f3 J ;eature_extraction.text import CountVectorizer
def countvec():
\"\"\I v p"
对文本进行特征化
:return:None
\"\"\"
# 实例化
cv=CountVectorizer()
data=cv.fit_transform([\"life is short,i like python\",\"life is too long,i dislike python\"])
print(cv.get_feature_names())
print(data.toarr8 k 3ay())
if __name__ == \'__main__$ : [ ~\':
countvec()

3.3 图像特征提取

使L m f ` { =用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于{ | u w B ( ;孤立的点、连续的曲线或者连续的区域。

常用的图像特征有: 8 w g I % n / i颜色特征、纹理特征、形状特征、空间关系特征。

以颜色特征提取为例介绍。

颜色特征描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。

常用的颜色特征提取常用的特征提取与匹配方法

( 1 ) 颜色直方图

其优点在于:它能简单描述一幅图像中颜色的全局分布,即不0 S ] 8 c % E同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间# / s位置的图像。其缺点在于:它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。

最常用的颜色空间: RGB 颜色空间、 HSV 颜色空间。

颜色直方图特征匹配方法:直方图相交法、距离法、中心距法、参考颜色表法、累加颜色直方图法。

( 2 ) 颜色i w # a

颜色直方图法是一种全局颜色特征提取与匹配方法,无法区分局部颜色信息。颜色集是对颜色直方图的一种近似首先将图像从 RGB 颜色空间转化成视觉均衡的颜色空间(如 HSV 空间),并将颜色空间量化成若干个柄。然后,用色彩自动分割技术将图像分为若干区域,每个区域用量化颜色Z t z + g R x 1 W空间的某个颜色分量来索引,从而将图像表达为一个二N C 进制的颜色索引集。在图像匹配中,比较不同图像颜色集之间的距离和色彩区域的空间关系

( 3 ) 颜色矩

这种方法的数学基础在于:图像中任何的颜色分布均可以用它的矩来表示。此外,由于颜色分布信息主要集中在低阶矩中,因此,仅采用颜色的一阶矩( mean )、二阶矩( variance )和三阶矩( skewness )就足以L { E ~表达图像的颜色分布。

( 4 ) 颜色聚合向量

其核心思想是:将属于直方图每一个柄的像素分成两部分,如果该柄内的某些像素所占据的_ M v b A连续区域的面积大于给定的阈值,则该区域内的像素作为聚合像素,否则作为非聚合像素。

上一篇

看了家世,才知道为何曹操、荀彧、司马懿能那般豪横

下一篇

吴三桂反清时兵力是清廷二倍, 占据半壁江山, 为何最后失败了?

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部