【机器学习|Python】sklearn中的数据预处理方法

本文详述Python的sklearn库在数据预处理中的应用,包括极差归一化、Z-score标准化、缺失值处理(如均值、中位数填充)、编码与哑变量(如LabelEncoder、OneHotEncoder)及连续型特征处理(如Binarizer、KBinsDiscretizer)。文中还介绍了各种处理方法的常用接口和注意事项,如数据量太大时使用增量学习接口。
摘要由CSDN通过智能技术生成

前言

本篇文章主要讲解Python的sklearn库中常用的数据预处理方法,主要介绍工具中的内容,即该库中的相关方法包含的常用接口和基本使用,并不适合手把手入门学习,此外将涉及更少的原理和使用情况说明。

sklearn中的数据预处理

  • sklearn.preprocessing:sklearn中的数据预处理模块
  • sklearn.impute:sklearn中的缺失值填充模块

本文主要涉及的方法:

  • 极差归一化:sklearn.preprocessing.MinMaxScaler
  • 数据标准化:sklearn.preprocessing.StandardScaler
  • 标签编码:sklearn.preprocessing.LabelEncoder
  • 特征编码:sklearn.preprocessing.OrdinalEncoder
  • 数据二值化:sklearn.preprocessing.Binarizer
  • 数据分箱:sklearn.preprocessing.KBinsDiscretizer
  • 缺失值处理:sklearn.impute.SimpleImputer

ps:拟合的时候可以传入多个特征数据,sklearn中的方法大多都会自动分别对每一列进行处理,但sklearn一般不支持一维数据导入,至少为二维,若想传入一维数组进行处理可以使用reshape(-1, 1)转为二维数组,若想传入单个Series对象则需要先将其转为DataFrame对象。

数据无量纲化

极差归一化:统一量纲,将某特征下所有的值归一化在指定范围内,默认该范围为 [0,1][0, 1][0,1],也可以手动确定范围。

常用接口如下:

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler

data = pd.DataFrame(np.random.randint(10, 100, (5, 2)))  # 准备测试数据

# 常用接口
scaler = MinMaxScaler()  # 默认范围为 [0,1]
scaler = MinMaxScaler(feature_range=[5, 10])  # 自定义归一化数据范围

scaler.fit(data)  # 拟合数据
scaler.partial_fit(data)  # 数据量大的时候fit()报错,可以使用partial_fit()

result = scaler.transform(data)   # 变换数据
result = scaler.fit_transform(data)    # 拟合和变换一步达成
data = scaler.inverse_transform(result)  # 逆向变换

.partial_fit():该方法是一种增量学习的方式,可以逐步从流式数据中学习缩放参数,当数据量太大导致 .fit() 接口报错时,可以使用该接口

我们把大批量的数据想象成一个大湖,既然我们无法一次性将这个大湖中的所有水进行处理(学习),但我们可以将其延伸出来一条小河,对顺着小何流动的水(数据流)不断进行处理(学习)。

  • 增量学习:是一种可以逐步从新数据中学习的机器学习方法。它不需要重新训练整个模型,而是可迭代地更新模型参数。
  • 流式数据:指的是连续不断产生的数据流

Z-score标准化:统一量纲,且变换后的数据服从均值为0方差为1的标准正态分布。

常用接口如下:和MinMaxScaler基本一样

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler

data = pd.DataFrame(np.random.randint(10, 100, (5, 2)))  # 准备测试数据

# 常用接口
scaler = StandardScaler()  # 创建对象
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值