赞
踩
【写在前面:以下所讲都基于你对机器学习有一定的基础知识,至少应该知道什么激活函数,反向更新,梯度下降,全连接层等等基本术语,不懂的可以先去补一下深度学习基本概念、CNN、VGGNet】
数据可分为数值数据(numberic features)
和非数值数据(类别数据 categorical features)
。在训练模型之前,我们需要把categorical features转化为机器学习模型能理解的数值特征。
拿上述这张表举例:年龄是数值特征numberic features没问题(35>31 ok ),性别是二元特征binary feature,可以用1代表男人,0代表女人。
国籍Nationality是一个类别特征categorical features。一共197个国家。我们需要用数字向量(numeric vectors)来表示国家。国籍如果用1代表US,2代表China,3代表India,那US+Chain=India么?显然不对。所以这个时候我们得用one-hot encoding
US -> [1,0,0, 0,.,0].
China -> [0, 1, 0,0,..,0].
India -> [0, 0, 1,0,..,0].
所以上述那张表可以表示为:
我们使用199-dim 数值向量表示人的特征(年龄、性别、国籍)。
•eg:将(age, gender, nationality)转换为vector
懂了上述道理我们来讲处理文本数据Processing Text Data
Step 1: 分词(文本到单词) Tokenization (Text to Words)
给定一段文本 text (string), e.g.,
S = “… to be or not to be…”.
我们先拆分文本成一个词语words的list
L = […, to, be, or, not, to, be, …]
Step 2:计算字频 Count Word Frequencies
统计词频,并按照词频大小排序
Step 3:One-Hot 编码 Encoding
将每个单词映射到索引 。Map every word to its index.
上述表就变成
如果需要,将每个index转换为 one-hot vector.one-hot的dim长度为单词的词数。然后用没有的没有的index或者null来代替拼写错误的词比如说bi(英语里没有bi这个单词)。
参考:
https://github.com/wangshusen/DeepLearning
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。