scikit-learn模块学习笔记(数据预处理模块preprocessing)
本篇文章主要简单介绍sklearn中的数据预处理preprocessing模块,它可以对数据进行标准化。preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到pipeline 过程中。
以下内容包含了一些个人观点和理解,如有疏漏或错误,欢迎补充和指出。
数据标准化
数据标准化:当单个特征的样本取值相差甚大或明显不遵从高斯正态分布时,标准化表现的效果较差。实际操作中,经常忽略特征数据的分布形状,移除每个特征均值,划分离散特征的标准差,从而等级化,进而实现数据中心化。
公式为:(X-X_mean)/X_std 计算时对每个属性/每列分别进行.
将数据按其属性(按列进行)减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1。
标准化预处理函数:
- preprocessing.scale(X,axis=0, with_mean=True, with_std=True, copy=True):
将数据转化为标准正态分布(均值为0,方差为1) - preprocessing.minmax_scale(X,feature_range=(0, 1), axis=0, copy=True):
将数据在缩放在固定区间,默认缩放到区间 [0, 1] - preprocessing.maxabs_scale(X,axis=0, copy=True):
数据的缩放比例为绝对值最大值,并保留正负号,即在区间 [-1.0, 1.0] 内。唯一可用于稀疏数据 scipy.sparse的标准化 - preprocessing.robust_scale(X,axis=0, with_centering=True, with_scaling=True,copy=True):
通过 Interquartile Range (IQR) 标准化数据,即四分之一和四分之三分位点之间
它们对应的标准化预处理类:
- classpreprocessing.StandardScaler(copy=True, with_mean=True,with_std=True):
标准正态分布化的类
属性:- scale_:ndarray,缩放比例
- mean_:ndarray,均值
- var_:ndarray,方差
- n_samples_seen_:int,已处理的样本个数,调用partial_fit()时会累加,调用fit()会重设
- classpreprocessing.MinMaxScaler(feature_range=(0, 1),copy=True):
将数据在缩放在固定区间的类,默认缩放到区间 [0, 1],对于方差非常小的属性可以增强其稳定性,维持稀疏矩阵中为0的条目 - min_:ndarray,缩放后的最小值偏移量
- scale_:ndarray,缩放比例
- data_min_:ndarray,数据最小值
- data_max_:ndarray,数据最大值
- data_range_:ndarray,数据最大最小范围的长度
- classpreprocessing.MaxAbsScaler(copy=True):
数据的缩放比例为绝对值最大值,并保留正负号,即在区间 [-1.0, 1.0] 内。可以用于稀疏数据scipy.sparse
属性:- scale_:ndarray,缩放比例
- max_abs_:ndarray,绝对值最大值
- n_samples_seen_:int,已处理的样本个数
- classpreprocessing.RobustScaler(with_centering=True,with_scaling=True, copy=True):
通过 Interquartile Range (IQR) 标准化数据,即四分之一和四分之三分位点之间
属性:- center_:ndarray,中心点
- scale_:ndarray,缩放比例
- classpreprocessing.KernelCenterer:
生成 kernel 矩阵,用于将 svm kernel 的数据标准化(参考资料不全)
属性:
以上几个标准化类的方法:
- fit(X[,y]):根据数据 X 的值,设置标准化缩放的比例
- transform(X[,y, copy]):用之前设置的比例标准化 X
- fit_transform(X[, y]):根据 X设置标准化缩放比例并标准化
- partial_fit(X[,y]):累加性的计算缩放比例
- inverse_transform(X[,copy]):将标准化后的数据转换成原数据比例
- get_params([deep]):获取参数
- set_params(**params):设置参数
数据归一化
- preprocessing.normalize(X,norm='l2', axis=1, copy=True):
将数据归一化到区间 [0, 1],norm 可取值 'l1'、'l2'、'max'。可用于稀疏数据 scipy.sparse - classpreprocessing.Normalizer(norm='l2', copy=True):
数据归一化的类。可用于稀疏数据 scipy.sparse
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params)
数据二值化
- preprocessing.binarize(X,threshold=0.0, copy=True):
将数据转化为 0 和 1,其中小于等于 threshold 为 0,可用于稀疏数据 scipy.sparse - classpreprocessing.Binarizer(threshold=0.0,copy=True):
二值化处理的类,可用于稀疏数据 scipy.sparse
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params),其中fit 函数不会做任何操作
类别数据编码
数据的某些特征是文本,特征是无序的,比如国籍,但数字是有序的,所以不能直接用数字编码
- classpreprocessing.OneHotEncoder(n_values='auto',categorical_features='all', dtype='float', sparse=True,handle_unknown='error'):
将具有多个类别的特征转换为多维二元特征,所有二元特征互斥,当某个二元特征为 1 时,表示取某个类别
参数:- n_values:处理的类别个数,可以为‘auto’,int或者 int数组
- categorical_features:被当作类别来处理的特征,可以为“all”或者下标数组指定或者mask数组指定
属性:
- active_features_:ndarray,实际处理的类别数
- feature_indices_:ndarray,第 i个原特征在转换后的特征中的下标在 feature_indices_[i] 和 feature_indices_[i+1]之间
- n_values_:ndarray,每维的类别数
方法:fit(X[, y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params)
- classpreprocessing.LabelBinarizer(neg_label=0, pos_label=1,sparse_output=False):
和 OneHotEncoder 类似,将类别特征转换为多维二元特征,并将每个特征扩展成用一维表示
属性:- classes:ndarry,所有类别的值
- y_type_:str
- multilabel_:bool
- sparse_input_:bool
- indicator_matrix_:str
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、inverse_transform(y)、get_params([deep])、set_params(**params)
- preprocessing.label_binarize(y,classes, neg_label=0, pos_label=1, sparse_output=False):
LabelBinarizer 类对应的处理函数 - classpreprocessing.LabelEncoder:
将类别特征标记为 0 到 n_classes - 1 的数
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、inverse_transform(y)、get_params([deep])、set_params(**params) classpreprocessing.MultiLabelBinarizer(classes=None,sparse_output=False):
和 LabelBinarizer 类似
feature_extraction.DictVectorizer类
patsy包
数据缺失
- classpreprocessing.Imputer(missing_values='NaN',strategy='mean', axis=0, verbose=0, copy=True):
参数:- missing_values:int 或者“NaN”,对np.nan的值用 "NaN"
- strategy:"mean"、"median"、"most_frequent"
属性:
- statistics_:ndarray,当axis==0时,取每列填补时用的值
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params)
生成多项式数据
可以将数据多项式结合生成多维特征,比如 [a,b] 的二次多项式特征为 [1, a, b, a^2, ab, b^2]
- classpreprocessing.PolynomialFeatures(degree=2,interaction_only=False, include_bias=True):
参数:- degree:int,多项式次数
- interaction_only:boolean,是否只产生交叉相乘的特征
- include_bias:boolean,是否包含偏移列,即全为1 的列
属性:
- powers_:ndarray,二维数组。powers_[i,j] 表示第 i 维输出中包含的第 j 维输入的次数
- n_input_features_:int,输入维数
- n_output_features_:int,输出维数
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params)
增加伪特征
- preprocessing.add_dummy_feature(X,value=1.0):
在 X 的第一列插入值为 value 的列
自定义数据转换
可以使用自定义的 python函数来转换数据
- classpreprocessing.FunctionTransformer(func=None,validate=True, accept_sparse=False, pass_y=False):
方法:fit(X[,y])、transform(X[, y,copy])、fit_transform(X[,y])、get_params([deep])、set_params(**params)
scikit-learn模块学习笔记(数据预处理模块preprocessing)的更多相关文章
- Scikit-Learn模块学习笔记——数据预处理模块preprocessing
preprocessing 模块提供了数据预处理函数和预处理类,预处理类主要是为了方便添加到 pipeline 过程中. 数据标准化 标准化预处理函数: preprocessing.scale(X, ...
- Query意图分析:记一次完整的机器学习过程(scikit learn library学习笔记)
所谓学习问题,是指观察由n个样本组成的集合,并根据这些数据来预测未知数据的性质. 学习任务(一个二分类问题): 区分一个普通的互联网检索Query是否具有某个垂直领域的意图.假设现在有一个O2O领域的 ...
- 莫烦python教程学习笔记——数据预处理之normalization
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python 日期时间处理模块学习笔记
来自:标点符的<Python 日期时间处理模块学习笔记> Python的时间处理模块在日常的使用中用的不是非常的多,但是使用的时候基本上都是要查资料,还是有些麻烦的,梳理下,便于以后方便的 ...
- sklearn学习笔记(一)——数据预处理 sklearn.preprocessing
https://blog.csdn.net/zhangyang10d/article/details/53418227 数据预处理 sklearn.preprocessing 标准化 (Standar ...
- Python 3之str类型、string模块学习笔记
Windows 10家庭中文版,Python 3.6.4, Python 3.7官文: Text Sequence Type — str string — Common string operatio ...
- Webpack4 学习笔记二 CSS模块转换
前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack 打包css模块 webpack是js模块打包器, 如果在入口文件引入css文件或其它的less.sass等文件,需要 ...
- python自动化测试学习笔记-5常用模块
上一次学习了os模块,sys模块,json模块,random模块,string模块,time模块,hashlib模块,今天继续学习以下的常用模块: 1.datetime模块 2.pymysql模块(3 ...
随机推荐
- 在Linux上编译使用tcmalloc
项目需要使用tcmalloc,比较简单的方法是安装tcmalloc相关包(gpertools)后,将tcmalloc的静态库提取出来,在编译项目内核(执行makefile)时,链接上静态库即可. 这里 ...
- Crossing Rivers HDU - 3232 (均匀分布)
题目大意:A,B相距D,A,B间有n条河,河宽Li,每条河上有一个速度为vi的船,在河山来回行驶,每条河离A的距离为pi,现在求从A到B时间的期望,步行速度始终为1 题目分析:首先如果全部步行则期望为 ...
- Day21-自定义simple_tag/filter
一. 在模板里面对用户发过来的数据进行二次加工.想办法把Python的函数放到模板语言里面使用. 有2种方法:filter与simple_tag 二. 实例 {{name|lower}} trunca ...
- windows主机防护
Netsh命令-修改网络IP设置 网络管理相关函数 Windows用户相关操作 SID(安全标识符) 策略其他说明 主机防护设置 命令行添加防火墙 防火墙规则 使用SetupDI* API列举系统中的 ...
- 代码收藏系列--javascript--移动端技巧
JS判断是否是手机端访问: var is_mobi = navigator.userAgent.toLowerCase().match(/(ipod|iphone|android|coolpad|mm ...
- 【bzoj3230】相似子串
Portal -->bzoj3230 Description 给你一个长度为\(n\)的字符串,把它的所有本质不同的子串按字典序大小排序,有\(m\)个询问,对于每一个询问\(x,y\)你需要回 ...
- PHP 多线程采集
function curl_multi($urls) { if (!is_array($urls) or count($urls) == 0) { return false; } $num=count ...
- 【树链剖分换根】P3979 遥远的国度
Description zcwwzdjn在追杀十分sb的zhx,而zhx逃入了一个遥远的国度.当zcwwzdjn准备进入遥远的国度继续追杀时,守护神RapiD阻拦了zcwwzdjn的去路,他需要zcw ...
- 【数学】【背包】【NOIP2018】P5020 货币系统
传送门 Description 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n ...
- PID控制算法的C语言实现六 抗积分饱和的PID控制算法C语言实现
所谓的积分饱和现象是指如果系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置,若控制器输出U(k)继续增大,执行器开度不可能再增大,此时计算机输出控制 ...