特征工程介绍
影响机器学习的几个地方
算法或特征工程
数据和特征决定机器学习的上限,而模型和算法只是逼近这个上限。
特征抽取
将任意数据转换为可用于机器学习的数字特征
特征提取API
在计算机中,我们可以用一维数组来存储向量,用二维数组来存储矩阵
字典特征提取
下面是对字典数据进行特征化
如何理解下面这个图
我们可以发现,字典实际上只有两个属性,一个是城市,一个是温度,那么为什么生成的矩阵中会有4列呢,其实是因为我们有三个城市,所以为了区分,我们3列来区分地方,如果这里北京是 0 1 0 。
字典特征提取实际上就是把类别转换为one-hot编码
样例代码:
data = [{\\\\'city\\\\': \\\\'北京\\\\',\\\\'temperature\\\\':100}, {\\\\'city\\\\': \\\\'上海\\\\',\\\\'temperature\\\\':60}, {\\\\'city\\\\': \\\\'深圳\\\\',\\\\'temperature\\\\':30},{\\\\'city\\\\': \\\\'香港\\\\',\\\\'temperature\\\\':30}]
# 1、实例化一个转换器类
transfer = DictVectorizer(sparse=True)
# 2、调用fit_transform()
data_new = transfer.fit_transform(data)
print("data_new:\n", data_new.toarray(), type(data_new))
print("特征名字:\n", transfer.get_feature_names())
注意:默认transform会返回一个sparse矩阵(稀疏矩阵)
.toarray()后
稀疏矩阵的意义是节省内存,作用就是按位置表示出来
应用场景
1.如果数据集中特征比较多
2.如果本身拿到的就是字典数据时也可以使用