、
Sklearn全称:Scipy-toolkit Learn是 一个基于scipy实现的的开源机器学习库。它提供了大量的算法和工具,用于数据挖掘和数据分析,包括分类、回归、聚类等多种任务。本文我将带你了解并入门Sklearn下的preprocessing在机器学习中的基本用法。
获取方式
pip install scikit-learn
模块结构
在Python中,要想熟练地使用一个库来完成各种任务,那么我们必须得对这个库内各个模块的结构比较熟悉才可以,观察Scikit-learn源代码中的第一级模块,我们不难画出这样的一个树状图用来描述其结构:
在这其中,datasets为内置数据集,剩下的2-13基本包含了整个机器学习中所有比较经典的算法,后边七个模块是我们在进行机器学习任务时常用的工具。
后续,我将分别为大家介绍这20个模块的基本用法,本文我们着重来了解preprocessing这个模块的基本用法。
Preprocessing
当我们对需要对数据进行预处理操作的时候,可以使用sklearn的preprocessing模块内的函数来进行操作,这里我给大家罗列出来常用数据预处理操作以及sklearn.preprocessing模块内对应函数。
预处理类型 | 主要函数/类 | 功能描述 | 常用参数 | 适用场景 |
---|---|---|---|---|
标准化 | StandardScaler |
将特征缩放为均值为0,方差为1 | with_mean , with_std |
适用于大多数基于距离的算法 |
归一化 | MinMaxScaler |
将特征缩放到给定范围(默认[0,1]) | feature_range |
神经网络、图像处理 |
MaxAbsScaler |
将特征缩放到[-1,1]范围 | - | 稀疏数据 | |
Normalizer |
对样本进行归一化(行归一化) | norm ('l1','l2','max') |
文本分类、聚类 | |
鲁棒缩放 | RobustScaler |
使用中位数和四分位数范围缩放 | with_centering , with_scaling |
存在异常值的数据 |
非线性变换 | PowerTransformer |
应用幂变换使数据更接近正态分布 | method ('yeo-johnson','box-cox') |
非正态分布数据 |
QuantileTransformer |
使用分位数信息变换特征 | n_quantiles , output_distribution |
非线性模型 | |
离散化 | KBinsDiscretizer |
将连续特征离散化 | n_bins , encode , strategy |
决策树类算法 |
二值化 | Binarizer |
根据阈值将数据二值化 | threshold |
文本处理、概率输出 |
编码分类特征 | OrdinalEncoder |
将分类特征编码为整数 | categories |
有序分类变量 |
OneHotEncoder |
将分类特征进行one-hot编码 | categories , drop |
无序分类变量 | |
LabelEncoder |
将目标标签编码为0到n_classes-1 | - | 目标变量编码 | |
缺失值处理 | SimpleImputer |
填充缺失值 | strategy ('mean','median','most_frequent','constant') |
数据缺失处理 |
多项式特征 | PolynomialFeatures |
生成多项式特征 | degree , interaction_only |
线性模型扩展特征 |
自定义变换 | FunctionTransformer |
应用自定义函数变换 | func , inverse_func |
自定义预处理逻辑 |
特征选择 | VarianceThreshold |
移除低方差特征 | threshold |
预处理中的特征选择 |
总结
以上便是 Sklearn入门之preprocessing的基本用法的所有内容,如果本文对你有用,免费的三连来一波,感谢各位大佬支持。后续,我还将继续介绍sklearn中其他模块的使用方法。