数据标准化之最大最小归一化(原理+Pyhon代码)

一、原理介绍

通常情况下,在建模之前,都需要对数据进行标准化处理,以消除量纲的影响。如果对未标准化的数据直接进行建模,可能会导致模型对数值大的变量学习过多,而对数值小的变量训练不够充分,往往模型效果会不好。常用的数据标准化方法有最大最小归一化、均值方差标准化、小数定标法、定量特征二值化等。

最大最小归一化,顾名思义,就是利用数据列中的最大值和最小值进行标准化处理,标准化后的数值处于[0,1]之间,计算方式为数据与该列的最小值作差,再除以极差。
具体公式为: x ′ = x − m i n m a x − m i n x’=\frac{x-min}{max-min} x=maxminxmin
公式中,x’表示单个数据的取值,min是数据所在列的最小值,max是数据所在列的最大值。

最大最小归一化容易受极端值的影响,当某列数据中存在极端值时,可以根据实际的业务场景,考虑事先将极端值或异常值剔除,或者是对标准化后的数据进行变换,如取对数等,使得变换后的数据接近于正态分布。

二、代码实现

#加载模块
from sklearn.preprocessing import StandardScaler
import warnings
warnings.filterwarnings("ignore") #过滤掉警告的意思
from pyforest import *
import pandas as pd
import numpy as np
#读入数据
data=pd.read_csv("F:/data/data.csv",encoding='gbk') #bgk表示中文编码
#查看数据前五行
data.head()
(1)资产负债率(2)剔除预收款项后的资产负债率(3)长期资本负债率(4)长期资产适合率(5)权益乘数
00.6557990.6067080.6138650.4949600.791971
10.7520610.7054980.8416391.0000000.932990
20.9573910.9415430.0000000.4934650.988630
30.8070460.7807090.9846960.5306370.958086
40.8052350.7960710.8614800.5412990.957462
from sklearn.preprocessing import MinMaxScaler
#区间缩放,返回值为缩放到[0, 1]区间的数据
Standard_data=MinMaxScaler().fit_transform(data)
#查看标准化后的数据
Standard_data

array([[0.65608912, 0.60990114, 0.61386483, 0.49495976, 0.79739631],
[0.75239351, 0.70921165, 0.84163884, 1. , 0.93938095],
[0.95781436, 0.9464991 , 0. , 0.49346475, 0.99540256],
…,
[0.73319974, 0.65164941, 0.51791243, 0.50922178, 0.92607276],
[0.66202637, 0.56413243, 0.75722411, 0.49343682, 0.81677841],
[0.88919966, 0.85747254, 0. , 0.49297322, 0.98517934]])

#由于标准化后的数据是array格式,故将其转化为数据框
Standard_data = pd.DataFrame(Standard_data) #转为dataframe
#将数据写成csv文件,方便后续的建模
Standard_data.to_csv("F:/data/Standard_data.csv",index=False) 
    原文作者:data learning
    原文地址: https://blog.csdn.net/weixin_45481473/article/details/113797850
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞