数据标准化之均值方差标准化(原理+Python代码)

本文介绍了均值方差标准化方法,这是一种将数据转化为标准正态分布的标准化技术,常用于回归模型以提升预测效果。文中通过Python代码展示了数据标准化的过程,并以第一列为例验证了标准化后的数据接近正态分布。

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

一、原理介绍

常用的数据标准化方法有最大最小归一化、均值方差标准化、小数定标法、定量特征二值化等。其中,均值方差标准化是一种将数据转化为标准正态分布的标准化方法。在回归模型中,服从正态分布的自变量和因变量往往对应着较好的回归预测效果。均值方差标准化的计算公式为: x ′ = x − μ σ x'=\frac{x-\mu }{\sigma } x=σxμ
公式中,x表示单个数据的取值, μ \mu μ表示对应列的均值, σ \sigma σ表示对应列的标准差

二、代码实现

#加载模块
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
#标准化,返回值为标准化后的数据
Standard_data=StandardScaler().fit_transform(data)
Standard_data

array([[-8.07868584e-01, -4.46781853e-01, -8.65101276e-02,
-2.18550266e-01, -4.97556164e-01],
[ 5.83511306e-02, 1.83702105e-01, 6.61977686e-01,
7.51432528e+00, 3.06672601e-01],
[ 1.90602996e+00, 1.69014811e+00, -2.10373034e+00,
-2.41440984e-01, 6.23989972e-01],
…,
[-1.14289225e-01, -1.81738238e-01, -4.01819153e-01,
-1.78750448e-04, 2.31292440e-01],
[-7.54465400e-01, -7.37349652e-01, 3.84582589e-01,
-2.41868662e-01, -3.87772198e-01],
[ 1.28886801e+00, 1.12495300e+00, -2.10373034e+00,
-2.48967045e-01, 5.66083685e-01]])

#由于标准化后的数据是array格式,故将其转化为数据框
Standard_data = pd.DataFrame(Standard_data) #转为dataframe
#将数据写成csv文件,方便后续的建模
Standard_data.to_csv("F:/data/Standard_data.csv",index=False) 

下面验证标准化后的数据是否服从正态分布,这里以第一列数据为例

#为标准化后的数据加上列名
Standard_data.columns=data.columns
Standard_data.head()
(1)资产负债率(2)剔除预收款项后的资产负债率(3)长期资本负债率(4)长期资产适合率(5)权益乘数
0-0.807869-0.446782-0.086510-0.218550-0.497556
10.0583510.1837020.6619787.5143250.306673
21.9060301.690148-2.103730-0.2414410.623990
30.5531350.6636971.1320780.3277240.449795
40.5368410.7617390.7271790.4909690.446237
#绘制概率密度图,用于展示数据分布
plt.rcParams['font.sans-serif']=['SimHei'] #图片显示中文
plt.rcParams['axes.unicode_minus'] =False #减号unicode编码
sns.distplot(Standard_data['(1)资产负债率'])
plt.show()

在这里插入图片描述

从概率密度图中可以看出,标准化后的数据对称分布在0的两侧,接近于正态分布。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值