特征工程

机器学习之特征工程

特征工程是机器学习里面非常重要的一个部分,机器学习主要就是根据我们从数据中获取到的特征数据,来得到对结果的预测,一般来说对结果影响最大的特征,需要重点观察,而对结果影响不大的特征属性需要排除出来,避免对预测结果产生不利影响

特征工程的作用

  1. 从数据中抽取出对预测结果有用的信息
  2. 从数据中构建出对结果有用的信息
  3. 更好的特征能更高效的实现
  4. 更好的特征能在比较简单的模型中也能得到比复杂模型都好的拟合能力

一般特征工程的方式

  1. 将特征值为字符串的转换成数值型特征值
train_data['age'].uniqe() # 取出特征值里面的所有值
train_data.loc[train_data['age']=='C', 'age'] = 1 # 对每一个值进行映射
  1. 使用均值来填充缺失值

在pandas里面我们可以使用如下的方式来实现

train_data['age'] = train_data['age'].fillna(train_data['age'].medium)
  1. 使用众数来填充字符型缺失值
import 
train_data['Class'] = train_data['Class'].fillna()
  1. 归一化

归一化是用来将每个特征值的量纲能够统一一下,一般是将特征值放缩到一定程度就可以,可使用如下方式

  1. 降维

降维主要是对特征做,而不是对数据做,将大特征的样本降维成小特征样本就好,一般会使用PCA的降维方式来做,PCA的思想就是选出最具代表性的几个特征,什么是最具代表性,就是这些特征的方差最大,差异化最大,如果有几个特征,对于每一个样本来说都是差不多的,那么这个特征在分类样本的区别贡献上没有很大的贡献,就是不能提供给结果一些评判标准,这时候,就可以将这些特征进行剔除了

当然在做PCA降维的时候,需要找到最佳降维的坐标系,比如在二维坐标系中

[图片上传失败...(image-e75589-1541861272706)]

要是我们直接使用x轴作为投影的轴,就会发现很多的样本会出现重合,要是我们取最佳的拟合直线做降维轴的话,可以看到投影在改轴上的样本很少出现重合,这样我们就可以用改投影轴来作为PCA降维的轴了

为了减少降维过程中出现的映射误差,需要对特征进行归一化处理

要进行降维的操作,我们可以使用协方差矩阵的方式来进行处理,协方差矩阵表示的就是不同特征之间的相关程度,也就是相关系数矩阵,相关系数越大,说明这两个特征的相关性就越大,所以就可以使用该特征来代表对应的相关特征了,具体的算法流程如下

数据集

  • 按列计算数据集XX的均值,然后令;

  • 求解矩阵的协方差矩阵,并将其记为Cov;
    协方差和方差类似,方差计算的是一维数据的离散程度

    而协方差计算的就是多维数据之间的相关性

  • 计算协方差矩阵Cov的特征值和相应的特征向量;

  • 将特征值按照从大到小的排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵;

  • 计算,即将数据集投影到选取的特征向量上,这样就得到了我们需要的已经降维的数据集。

因为协方差没有去掉量纲对数值的倍数影响,可能我们在横向对比的时候会出现,不同量纲的相关程度不一致的问题

PCA的维度选择的方式可以通过误差率来进行选择,选择降维后剩下的特征所表达的信息,与未降维前所表达的信息进行对比后,要占到一定的比例才行,如:

你可能感兴趣的:(特征工程)