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

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

  • 前言
  • 一、 三板斧
    • 1. 概念
    • 2.实操代码
      • (1)导入boston数据集
      • (2)三板斧举例
  • 二、数值型变量的标准化
    • 1.概念
    • 2.实操代码
      • (1)对`单个数据集`进行标准化
      • (2)在`多个数据集`上使用相同的标准化变换
      • (3)将特征变量缩放至特定范围
      • (4)数据的正则化—求单位向量
      • (5)考虑异常值标准化—稳健标准化
    • 三、缺失值的填补

前言

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

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

(2)三板斧举例

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

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

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

help(StandardScaler) #模型查询

Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第3张图片
在实例化后查看、设置模型参数

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()

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

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

在这里插入图片描述

ridge.predict(boston.data) 

部分运行结果如下:
Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第5张图片

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

!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)#保存后可直接使用

部分运行结果如下:Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第6张图片

二、数值型变量的标准化

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#没有太大的数或太小的数

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

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

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

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

Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第9张图片
类实例化再做后续工作,函数直接调用

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表示列

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

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

class sklearn.preprocessing.StandardScaler()

  • StandardScaler类方法:
    Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第11张图片
  • StandardScaler类属性:
    Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第12张图片
std = preprocessing.StandardScaler()
std.fit(boston_df)
std.mean_,std.scale_ #fit之后求出了原始数据每列均值和标准差

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

std.transform(boston_df)

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

std.transform(boston_df[:3])

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

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

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

驼峰命名原则(三大步)

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

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

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

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

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

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

(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)

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

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

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

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

在这里插入图片描述

rs.mean(axis=0)

在这里插入图片描述

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

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

三、缺失值的填补

Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第23张图片
Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第24张图片
Python-sklearn数据预处理(单/多个数据集数据标准化、稳健标准化、缺失值填补)_第25张图片

你可能感兴趣的:(数据挖掘,sklearn,python,数据挖掘,大数据)