python大战机器学习——数据预处理

  数据预处理的常用流程:

    1)去除唯一属性

    2)处理缺失值

    3)属性编码

    4)数据标准化、正则化

    5)特征选择

    6)主成分分析

(1)去除唯一属性

  在获取的数据集中,经常会遇到唯一属性。这些属性通常是添加的一些di属性,如存放在数据库中自增的主键。这些属性并不能刻画样本自身的分布规律,所以只需要简单地删除这些属性即可。

(2)处理缺失值的三种方法

  1)直接使用含有缺失值的特征  2)删除含有缺失值的特征  3)缺失值补全

  1)直接使用:对于某些算法可以直接使用含有缺失值的情况。如决策树。

  2)特征删除:最简单的办法就是删除含有缺失值的特征。对于只有少量值缺失的情况来说,这并不是一个好的办法

  3)缺失值补全:用最可能的值来插补缺失值,在实际工程中应用最广泛。最常见的集中方法有:a均值插补  b用同类均值插补  c建模预测  d高维映射  e多重插补  f极大似然估计  g压缩感知及矩阵补全

a.均值插补

  若缺失的是连续值,则以该属性有效值的平均值来插补缺失的值;若缺失值为离散值,则以该属性有效值的众数来插补缺失的值

b.同类均值插补

  首先将样本进行分类,然后以该类中样本的均值来插补缺失值

c.建模预测

  将缺失的属性作为预测目标来预测。这种方法效果较好,但是该方法有个根本的缺陷:如果其他属性和缺失属性无关,则预测的结果毫无意义。但是如果预测结果相当准确,则说明这个缺失属性是没必要考虑纳入数据集中的。一般情况是介于两者之间的。

d.高维映射

  将属性映射到高维空间。这种做法是最精确的做法,它完全保留了所有的信息,也未增加任何额外的信息。比如google、百度的CTR预估模型,预处理时会把所有变量都这样处理,达到几亿维。这样做的好处是完整保留了原始数据的全部信息、不用考虑缺失值。但它的缺点也很明显,就是计算量大大提升。而且只要在样本量非常大的时候效果才好,否则会因为过于稀疏,效果很差

e.多重插补

  其认为待插补的值时随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。

f.压缩感知及矩阵补全

  

时间: 2024-08-14 08:07:45

python大战机器学习——数据预处理的相关文章

特征提取(机器学习数据预处理)

特征提取(机器学习数据预处理) 特征提取与特征选择都是数据降维的技术,不过二者有着本质上的区别:特征选择能够保持数据的原始特征,最终得到的降维数据其实是原数据集的一个子集:而特征提取会通过数据转换或数据映射得到一个新的特征空间,尽管新的特征空间是在原特征基础上得来的,但是凭借人眼观察可能看不出新数据集与原始数据集之间的关联. 这里介绍2种常见的特征提取技术: 1)主成分分析(PCA) 2)线性判别分析(LDA) 1.主成分分析(PCA) 一种无监督的数据压缩,数据提取技术,通常用于提高计算效率,

机器学习数据预处理——标准化/归一化方法总结

通常,在Data Science中,预处理数据有一个很关键的步骤就是数据的标准化.这里主要引用sklearn文档中的一些东西来说明,主要把各个标准化方法的应用场景以及优缺点总结概括,以来充当笔记. 首先,我要引用我自己的文章Feature Preprocessing on Kaggle里面关于Scaling的描述 Tree-based models doesn't depend on scaling Non-tree-based models hugely depend on scaling 一

python大战机器学习——聚类和EM算法

聚类的思想:将数据集划分为若干个不想交的子集(称为一个簇cluster),每个簇潜在地对应于某一个概念.但是每个簇所具有现实意义由使用者自己决定,聚类算法仅仅会进行划分. 聚类的作用: 1)可以作为一个单独的过程,用于寻找数据的一个分布规律 2)作为分类的预处理过程.首先对分类数据进行聚类处理,然后在聚类结果的每一个簇上执行分类过程. 聚类的性能度量: 1)外部指标:该指标是由聚类结果与某个参考模型进行比较而获得的 Jaccard系数:它刻画了所有属于同一类的样本对同时在C和C*中隶属于同一类的

python大战机器学习——支持向量机

支持向量机(Support Vector Machine,SVM)的基本模型是定义在特征空间上间隔最大的线性分类器.它是一种二类分类模型,当采用了核技巧之后,支持向量机可以用于非线性分类. 1)线性可分支持向量机(也称硬间隔支持向量机):当训练数据线性可分是,通过硬间隔最大化,学得一个线性可分支持向量机 2)线性支持向量机(也称为软间隔支持向量机):当训练数据近似线性可分时,通过软间隔最大化,学得一个线性支持向量机 3)非线性支持向量机:当训练数据不可分时,通过使用核技巧以及软间隔最大化,学得一

Python大战机器学习

一  矩阵求导 复杂矩阵问题求导方法:可以从小到大,从scalar到vector再到matrix. x is a column vector, A is a matrix d(A?x)/dx=A d(xT?A)/dxT=A d(xT?A)/dx=AT d(xT?A?x)/dx=xT(AT+A) practice: 常用的举证求导公式如下:Y = A * X --> DY/DX = A'Y = X * A --> DY/DX = AY = A' * X * B --> DY/DX = A

数据预处理:独热编码(One-Hot Encoding)

http://blog.csdn.net/pipisorry/article/details/61193868 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from Europe", "from US", "from Asia"] ["uses Firefox", "uses Ch

python 机器学习之数据预处理

#数据预处理方法,主要是处理数据的量纲和同趋势化问题. import numpy as np from sklearn import preprocessing #零均值规范 data=np.random.rand(3,4)#随机生成3行4列的数据 data_standardized=preprocessing.scale(data)#对数据进行归一化处理,即每个数值减去均值除以方差 主要用于svm #线性数据变换最大最小化处理 data_scaler=preprocessing.MinMaxS

机器学习之数据预处理

归一化处理 from sklearn.preprocessing import StandardScaler X_scaler = StandardScaler() y_scaler = StandardScaler() X_train = X_scaler.fit_transform(X_train) y_train = y_scaler.fit_transform(y_train) X_test = X_scaler.transform(X_test) #同样的模型来训练转化测试数据 y_t

python data analysis | python数据预处理(基于scikit-learn模块)

原文:http://www.jianshu.com/p/94516a58314d Dataset transformations| 数据转换 Combining estimators|组合学习器 Feature extration|特征提取 Preprocessing data|数据预处理 1 Dataset transformations scikit-learn provides a library of transformers, which may clean (see Preproce