数据分析(5)-数据处理

归一化

归一化特征值,消除特征之间量级不同导致的影响

def autoNorm(dataSet):
   '''归一化公式:Y=(X-Xmin)/(Xmax-Xmin)'''
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals, (m, 1))
    normDataSet = normDataSet / tile(ranges, (m, 1))  # element wise divide
    return normDataSet, ranges, minVals

处理正负样本不平衡的情况

1.过采样
(1)过采样方法通过增加少数类样本来提高少数类的分类性能,最简单的办法是简单复制少数类样本,缺点是可能导致过拟合,没有给少数类增加任何新的信息。
(2)SMOTE算法:设置向上采样的倍率为N,即对每个少数类样本都需要产生对应的N个少数类新样本;对少数类中的每一个样本x,搜索得到其k(通常取5)个少数类最近邻样本,并从中随机选择N个样本,记为y1,y2,…,yN(可能有重复值);构造新的少数类样本rj=x+rand(0,1)∗(yj−x),其中rand(0,1)表示区间(0,1)内的随机数。
2.欠采样
欠采样方法通过减少多数类样本来提高少数类的分类性能,最简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息,不能够充分利用已有的信息。
3.代价敏感方法
(1)重构训练集的方法。不改变已有算法,而是根据样本的不同错分代价给训练集中的每一个样本赋一个权值,接着按权重对原始样本集进行重构。
(2)引入代价敏感因子,设计出代价敏感的分类算法。通常对小样本赋予较高的代价,大样本赋予较小的代价,期望以此来平衡样本之间的数目差异。

缺失值处理

1.删除:
当某个变量或者某个样本中缺失值占比过大时,那么我们可以认为这一变量或者样本没有意义,可以直接删除。
2.补全
(1)用平均值、中值、分位数、众数、随机值等替代。效果一般,因为等于人为增加了噪声。
(2)用其他变量做预测模型来算出缺失变量,效果比方法(1)略好。有一个根本缺陷,如果其他变量和缺失变量无关,则预测的结果无意义。如果预测结果相当准确,则又说明这个变量是没必要加入建模的。
(3)把变量映射到高维空间。比如性别,有男、女、缺失三种情况,则映射成3个变量:是否男、是否女、是否缺失。连续型变量也可以这样处理,比如Google、百度的CTR预估模型,预处理时会把所有变量都这样处理,达到几亿维。这样做的好处是完整保留了原始数据的全部信息,不用考虑缺失值和线性不可分之类的问题,缺点是计算量大大提升。
3.忽略
有一些模型如随机森林,人工神经网络等,自身能够处理数据缺失的情况,在这种情况下不需要对缺失数据做任何的处理,这种做法的缺点是在模型的选择上有局限。

利用PCA简化数据

降维技术
降维(dimensionality reduction):将百万像素点的数据,降至为三维的这个过程。
3种降维技术:
1,主成分分析(Principal Component Analysis, PCA):就是找出一个最主要的特征,然后进行分析。
2,因子分析(Factor Analysis):将多个实测变量转换为少数几个综合指标。它反映一种降维的思想,通过降维将相关性高的变量聚在一起,从而减少需要分析的变量的数量,而减少问题分析的复杂性。
3,独立成分分析(Independ Component Analysis, ICA):ICA 认为观测信号是若干个独立信号的线性组合,ICA 要做的是一个解混过程。
PCA 工作原理
1,找出第一个主成分的方向,也就是数据方差最大的方向。
找出第二个主成分的方向,也就是数据方差次大的方向,并且该方向与第一个主成分方向 正交(orthogonal 如果是二维空间就叫垂直)。
3,通过这种方式计算出所有的主成分方向。
4,通过数据集的协方差矩阵及其特征值分析,我们就可以得到这些主成分的值。
5,一旦得到了协方差矩阵的特征值和特征向量,我们就可以保留最大的 N 个特征。这些特征向量也给出了 N 个最重要特征的真实结构,我们就可以通过将数据乘上这 N 个特征向量 从而将它转换到新的空间上。

猜你喜欢

转载自blog.csdn.net/qq_27163197/article/details/78737862