Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)

本文介绍了使用Python的sklearn库进行数据预处理的方法,包括单个和多个数据集的标准化、稳健标准化以处理异常值,以及如何填充缺失值。文中通过实例演示了如何使用StandardScaler、MinMaxScaler、RobustScaler等工具,并展示了数据的正则化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

hello大家好这里是小L😊,上一篇简单地介绍sklearn相关概念以及其常见的三个内置数据集(iris、boston、digits),对sklearn内置数据集有一定了解🙌
这次笔记内容:简单复习上篇笔记sklearn三板斧(具体可看上一篇笔记),学习sklearn数据预处理部分👉其中包括不同情况下的数据标准化以及遇到异常值或缺失值情况该如何对数据进行处理👈数据集用sklearn内置数据及进行举例🌷。
小L希望可以在这里与大家一起进步!💪

一、 三板斧

1. 概念

三板斧分为三个步骤:实例化–>fit 拟合–>transform转化 or Predict预测,我的理解是选择/构建模型->训练模型->将新数据集放入训练好的模型中。就好比把大象放入冰箱需要三个步骤:打开冰箱–>把大象放入冰箱–>关闭冰箱门。

2.实操代码

(1)导入boston数据集

  • 导入boston数据集
from sklearn.datasets import load_boston
boston=load_boston()
  • 转化为数据框
import pandas as pd
boston_df = pd.DataFrame(boston.data,columns=boston.feature_names)
boston_df

在这里插入图片描述

(2)三板斧举例

  • 数据预处理
from sklearn.preprocessing import StandardScaler#预处理(可去除量缸影响)
std= StandardScaler(with_mean=False)#实例化
std.fit(boston.data)#训练
std.transform(boston.data)#转化或预测predict

在这里插入图片描述

在模型了解这块有两个小tip🙋
🚩利用help()可进行模型查询,里面会进行对查询模型的详细解答,可着重查看Parameters参数部分,部分结果如图。例如:

help(StandardScaler) #模型查询

在这里插入图片描述
🚩在实例化后查看、设置模型参数

from sklearn.preprocessing import StandardScaler
std =StandardScaler()
std.get_params()#查看当前参数

在这里插入图片描述

std.set_params(copy=False)#设置参数值

在这里插入图片描述

std.get_params()#再次查看参数

在这里插入图片描述
设置好参数后进行模型训练

std.fit(boston.data)

在这里插入图片描述
最后结果

std.scale_#boston有13个特征

在这里插入图片描述

std.mean_#标准化后的期望

在这里插入图片描述

boston_df.describe()

在这里插入图片描述

  • 岭回归
from sklearn .linear_model import Ridge#岭回归
ridge = Ridge()
ridge.fit(boston.data,boston.target)

在这里插入图片描述

ridge.predict(boston.data) 

部分运行结果如下:
在这里插入图片描述

此外还可以将训练好的模型进行保存、持久化使用,下次可直接拿出来使用。👍
保存岭回归模型

!pip install joblib #安装joblib
import joblib  #模型保存,持久化
joblib.dump(ridge,r'C:\Users\lenovo\ridge20220923.pkl')#将岭回归模型保存

在这里插入图片描述
将保存好的模型导入

std2 = joblib.load(r"C:\Users\lenovo\ridge20220923.pkl")

导入后可直接使用

from sklearn.datasets import load_boston
boston = load_boston()
std2.predict(boston.data)#保存后可直接使用

部分运行结果如下:在这里插入图片描述

二、数值型变量的标准化

1.概念

  1. 减去均数:去除均数影响 with_mean = True
  2. 除以标准差:去除离散程度影响 with_std = True
  3. 标准化仍收受离群值影响

2.实操代码

(1)对单个数据集进行标准化

sklearn.preprocessing.scale(
X:需要进行变换的数据阵,
axis=0 :默认按列,
with_mean = True :减去均数,去除均数影响 ,
with_std = True :除以标准差,去除离散程度影响,
copy=True :默认替换原始数据,False生成副本
)

from sklearn import preprocessing
boston_scale=preprocessing.scale(boston_df)
boston_scaled#没有太大的数或太小的数

在这里插入图片描述

  • 对数据集中不同列的数据进行标准化
preprocessing.scale(boston.target)

在这里插入图片描述

preprocessing.scale(boston_df[['CRIM','ZN']])#对某些列进行标准化

在这里插入图片描述
类实例化再做后续工作,函数直接调用

boston_scaled.mean(axis=0)#axis=0表示列

在这里插入图片描述

boston_scaled.std(axis=0)

在这里插入图片描述

  • 对行进行标准化:axis=1
preprocesing.scale(boston,axis=1)
#boston_scaled.mean(axis=1)#axis=0表示列
boston_scaled.mean(axis=0)#axis=0表示列

在这里插入图片描述

(2)在多个数据集上使用相同的标准化变换

class sklearn.preprocessing.StandardScaler()

  • StandardScaler类方法:
    在这里插入图片描述
  • StandardScaler类属性:
    在这里插入图片描述
std = preprocessing.StandardScaler()
std.fit(boston_df)
std.mean_,std.scale_ #fit之后求出了原始数据每列均值和标准差

在这里插入图片描述

std.transform(boston_df)

在这里插入图片描述

std.transform(boston_df[:3])

在这里插入图片描述

(3)将特征变量缩放至特定范围

在这里插入图片描述

驼峰命名原则(三大步)

  • class sklearn.preprocessing.MinMaxScaler(feature_rang=(0,1),copy=True) 将每个特征最大绝对值转换成指定数值大小
  • class sklearn.preprocessing.MaxAbsScaler(copy=True) 最大值缩放成1
help(preprocessing.MaxAbsScaler)

在这里插入图片描述

scaler = preprocessing.MinMaxScaler((1,10))#将每个特征最大绝对值转换成指定数值大小
scaler.fit_transform(boston_df)

在这里插入图片描述

scaler_1 = preprocessing.MaxAbsScaler()#最大值缩放成1
scaler_1.fit_transform(boston_df)

在这里插入图片描述

(4)数据的正则化—求单位向量

向量空间模型转化,常使用在分类与聚类模型中

sklearn.preprocessing.normalize(
X,axis=1,copy=True
norm=‘l2’ :距离方法l2欧几里得距离,‘l1’、‘l2’、'max’用用正则化具体范数,
return_norm=False:是否返回所使用的范数
)

import sklearn.preprocessing
x=[[-1,-1,2]]#向量用双层的中括号
x_normalized = preprocessing.normalize(x,norm='l2',return_norm =True)
x_normalized

在这里插入图片描述

-1/2.44948974

在这里插入图片描述

(5)考虑异常值标准化—稳健标准化

将中位数和百分位数(默认使用四分位间距)分别代替均数和标准差来进行标准化
适用于已知有离群值数据

  • sklearn.preprocessing.robust_scale(
    在这里插入图片描述
    )
  • class sklearn.preprocessing.RobustScaler(
    在这里插入图片描述)
preprocessing.robust_scale(boston_df)

在这里插入图片描述

rscaler = preprocessing.RobustScaler()
rs = rscaler.fit_transform(boston_df)#训练和转化合二为一
rs
rscaler_1 = preprocessing.RobustScaler()
rs_1 = rscaler_1.fit(boston_df)
rs_1_trans = rs_1.transform(boston_df)
rs_1_trans

在这里插入图片描述

import numpy as np
np.median(rs,axis=0)#中位数

在这里插入图片描述

rs.mean(axis=0)

在这里插入图片描述

rs.std(axis=1)#标准差

在这里插入图片描述

三、缺失值的填补

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一抹light

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值