数据预处理过程

1,去除唯一属性: 
如id属性,自增列,含唯一值的列,这些属性并不能描述本身的分布规律。 
2,处理缺失值: 
(1)直接使用含有缺失值的特征,如决策树算法。 
(2)删除含有缺失值的特征,如果特征列含有大量缺失值,而仅包含极少量的有效值,则删除是最有效的。 
(3)缺失值补全,其思想是用最有可能的值来插补缺失值 
常见的缺失值补全方法:均值插补、同类均值插补、建模预测、高维映射、多重插补、极大似然估计、压缩感知和矩阵补全。 
1>均值插补 
如果样本属性的距离是可度量的,则使用该属性有效值的平均值来插补缺失的值; 
如果的距离是不可度量的,则使用该属性有效值的众数来插补缺失的值。如果使用众数插补,出现数据倾斜会造成什么影响? 
2>同类均值插补 
首先将样本进行分类,然后以该类中样本的均值来插补缺失值。 
3>建模预测 
将缺失的属性作为预测目标来预测,将数据集按照是否含有特定属性的缺失值分为两类,利用现有的机器学习算法对待预测数据集的缺失值进行预测。 
该方法的根本的缺陷是如果其他属性和缺失属性无关,则预测的结果毫无意义;但是若预测结果相当准确,则说明这个缺失属性是没必要纳入数据集中的;一般的情况是介于两者之间。 
4>高维映射 
将属性映射到高维空间,采用独热码编码(one-hot)技术。将包含K个离散取值范围的属性值扩展为K+1个属性值,若该属性值缺失,则扩展后的第K+1个属性值置为1。 
这种做法是最精确的做法,保留了所有的信息,也未添加任何额外信息,若预处理时把所有的变量都这样处理,会大大增加数据的维度。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值;缺点是计算量大大提升,而且需要大量样本。
5>多重插补(MultipleImputation,MI) 
多重插补认为待插补的值是随机的,实践上通常是估计出待插补的值,再加上不同的噪声,形成多组可选插补值,根据某种选择依据,选取最合适的插补值。 
6>压缩感知和矩阵补全 
7>手动插补 
插补处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实。在许多情况下,根据对所在领域的理解,手动对缺失值进行插补的效果会更好。 
sklearn.preprocessing.Imputer(missing_values=’NaN’,strategy=’mean’, axis=0, verbose=0, copy=True): 
missing_values:int 或者“NaN”,对np.nan的值用 “NaN”。 
strategy:”mean”、”median”、”most_frequent”。 
3,属性编码: 
数据的某些特征是文本,特征是无序的,比如国籍,但数字是有序的,所以不能直接用数字编码 
(1)特征二元化:将类别特征转换为多维二元特征,并将每个特征扩展成用一维表示 
数值二值化函数:sklearn.preprocessing.binarize(X,threshold=0.0, copy=True):将数据转化为 0 和 1,其中小于等于 threshold 为 0,可用于稀疏数据 scipy.sparse. 
数值二值化对应的类: classpreprocessing.Binarizer(threshold=0.0,copy=True),二值化处理的类,可用于稀疏数据 scipy.sparse 
(2)独热编码:通常需要处理的数值都是稀疏而又散乱地分布在空间中,然而,我们并不需要存储这些大数值,这时可以用独热编码。 
sklearn.preprocessing.OneHotEncoder(n_values=’auto’,categorical_features=’all’, dtype=’float’, sparse=True,handle_unknown=’error’):将具有多个类别的特征转换为多维二元特征,所有二元特征互斥,当某个二元特征为 1 时,表示取某个类别。 
n_values:处理的类别个数,可以为‘auto’,int或者 int数组。 
categorical_features:被当作类别来处理的特征,可以为“all”或者下标数组指定或者mask数组指定 
4,数据标准化,正则化: 
(1)标准化:将样本的属性缩放到某个指定的范围 
当单个特征的样本取值相差甚大或明显不遵从高斯正态分布时,标准化表现的效果较差。实际操作中,经常忽略特征数据的分布形状,移除每个特征均值,划分离散特征的标准差,从而等级化,进而实现数据中心化。 
处理方案:min-max标准化,MaxAbsScaler,z-score标准化(标准差标准化) 
标准化预处理函数: 
1>preprocessing.scale(X,axis=0, with_mean=True, with_std=True, copy=True):将数据转化为标准正态分布(均值为0,方差为1). 
2>preprocessing.minmax_scale(X,feature_range=(0, 1), axis=0, copy=True):将数据在缩放在固定区间,默认缩放到区间 [0, 1]. 
3>preprocessing.maxabs_scale(X,axis=0, copy=True):数据的缩放比例为绝对值最大值,并保留正负号,即在区间 [-1.0, 1.0] 内。唯一可用于稀疏数据 scipy.sparse的标准化. 
4>preprocessing.robust_scale(X,axis=0, with_centering=True, with_scaling=True,copy=True):通过 Interquartile Range (IQR) 标准化数据,即四分之一和四分之三分位点之间. 
(2)正则化: 
正则化的过程是将每个样本缩放到单位范数(每个样本的范数为1),如果后面要使用如二次型(点积)或者其它核方法计算两个样本之间的相似性这个方法会很有用。 
Normalization主要思想是对每个样本计算其p-范数,然后对该样本中每个元素除以该范数,这样处理的结果是使得每个处理后样本的p-范数(l1-norm,l2-norm)等于1。 
p-范数的计算公式:||X||p=(|x1|^p+|x2|^p+…+|xn|^p)^1/p 
该方法主要应用于文本分类和聚类中。例如,对于两个TF-IDF向量的l2-norm进行点积,就可以得到这两个向量的余弦相似性。 
在sklearn中有三种正则化方法,l1范数、l2范数、max范数。 
sklearn.preprocessing.Normalizer(X, norm=’l2’, axis=1, copy=True, return_norm=False): 
norm:’l1’,’l2’或’max’,可选(默认为’l2’)用于标准化每个非零样本的标准(或者如果轴为0,则标准化每个非零特征)。 
5,主成分分析: 
最主要的是特征选择:从给定的特征集合中选出相关特征子集的过程。 
特征选择的原因:(1),维数灾难,特征列过多,容易过拟合。 
(2),去除不相关特征通常会降低学习任务的难度:包括过滤式,包裹式,嵌入式 
过滤式:方差选择法,使用方差作为特征评分标准:如果某个特征的取值差异不大,通常认为该特征对区分样本的贡献度不大 
因此在构建特征过程中去掉方差小于阀值的特征。sklearn.feature_selection.VarianceThreshold(threshold=0.0) 
包裹式:主要思想是反复的构建模型(如SVM或者回归模型)然后选出最好的(或者最差的)特征(可以根据系数来选),把选出来的特征选择出来,然后在剩余的特征上重复这个过程,知道所有特征都遍历了,这个过程中特征被消除的次序就是特征的排序,因此,这是一种寻找最优特征子集的贪心算法。sklearn.feature_selection.RFE(estimator, n_features_to_select=None, step=1, verbose=0): 
estimator:选择的学习器种类 
n_features_to_select :int或None(默认=无)要选择的特征数量。如果为None,则选择一半的功能。 
嵌入式:sklearn在feature_selection模块中集成的模型SelectFromModel实现了嵌入式特征选择,SelectFromModel模型通过sklearn内置的机器学习模型提供的特征重要性指标coef_或feature_importance对特征进行选择,即如果特征的coef_或feature_importance的值低于预设的阈值,则移除低于阈值的特征。其中阈值的设定可以指定,也可以通过启发式方法选择合适的阈值。启发式的方法通常有mean、median等。 
sklearn.feature_selection.SelectFromModel(estimator, threshold=None, prefit=False, norm_order=1) 
estimator:选择的学习器种类 
threshold:设定的阀值 
(3),选择特征评价维度 
6,稀疏表示和字典学习: 
字典学习:学习一个字典,通过该字典将样本转化为合适的稀疏表示形式。 
稀疏编码:获取样本的稀疏表达。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值