La normalisation des données est souvent une étape inévitable dans la modélisation mathématique. Cet article présentera les trois méthodes de standardisation les plus courantes fournies avec la bibliothèque sklearn : la normalisation du score Z, la normalisation 0-1, la robustesse RobustScaler et leur dénormalisation. Sans plus tarder, consultez le code et les exemples :
Tout d’abord, jetez un œil aux données originales utilisées dans cet article :
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import RobustScaler
datas=pd.read_excel(r"C:\Users\86177\Desktop\农林牧渔业产值占比(2014-2019年).xlsx")
datas.drop(['地区'],axis=1,inplace=True)#删除地区列的数据,只保留要标准化的内容
columns=datas.columns.tolist()#将数据列的名称以列表形式保存,为后续重建DataFrame准备
datas
La colonne 'Région' des données d'origine n'étant pas le contenu à normaliser, cette colonne de données est supprimée et seule la partie à normaliser est conservée :
1. Standardisation du score Z
Traite une certaine colonne de données en données avec une moyenne de 0 et une variance de 1. L’avantage est qu’il est moins affecté par les valeurs aberrantes. La formule est : (X-μ)/σ
#创建StandardScaler()实例
standard_s1=StandardScaler()
#将DataFrame格式的数据按照每一个series分别标准化
standard_s1_data=standard_s1.fit_transform(datas)
#将标准化后的数据改成DataFrame格式
standard_s1_data_pd=pd.DataFrame(standard_s1_data,columns=columns)
#将标准化的数据反标准化
standard_s1_data_inverse=standard_s1.inverse_transform(standard_s1_data)
#将反标准化的数据改成DataFrame格式
standard_s1_data_inverse_pd=pd.DataFrame(standard_s1_data_inverse,columns=columns)
print(standard_s1_data_pd)
print(standard_s1_data_inverse_pd)
Le côté gauche de la figure ci-dessous montre les résultats standardisés et le côté droit montre les résultats dénormalisés. Vous pouvez voir que les résultats dénormalisés sont cohérents avec les données d'origine.
2. Normalisation 0-1
Autrement dit, la mise à l'échelle d'une certaine colonne de données dans la plage [0,1] présente l'inconvénient d'être affectée par des valeurs extrêmes. La formule est (X-min)/(max-min).
#创建MinMaxScaler()实例
standard_s2=MinMaxScaler()
#将DataFrame格式的数据按照每一个series分别标准化
standard_s2_data=standard_s2.fit_transform(datas)
#将标准化后的数据改成DataFrame格式
standard_s2_data_pd=pd.DataFrame(standard_s2_data,columns=columns)
#将标准化的数据反标准化
standard_s2_data_inverse=standard_s2.inverse_transform(standard_s2_data)
#将反标准化的数据改成DataFrame格式
standard_s2_data_inverse_pd=pd.DataFrame(standard_s2_data_inverse,columns=columns)
print(standard_s2_data_pd)
print(standard_s2_data_inverse_pd)
3. RobustScaler
La mise à l’échelle par médiane et intervalle interquartile est utilisée lorsqu’il existe de nombreuses valeurs aberrantes. La formule est (médiane X)/intervalle interquartile.
#创建RobustScaler()实例
standard_s3=RobustScaler()
#将DataFrame格式的数据按照每一个series分别标准化
standard_s3_data=standard_s3.fit_transform(datas)
#将标准化后的数据改成DataFrame格式
standard_s3_data_pd=pd.DataFrame(standard_s3_data,columns=columns)
#将标准化的数据反标准化
standard_s3_data_inverse=standard_s3.inverse_transform(standard_s3_data)
#将反标准化的数据改成DataFrame格式
standard_s3_data_inverse_pd=pd.DataFrame(standard_s3_data_inverse,columns=columns)
print(standard_s3_data_pd)
print(standard_s3_data_inverse_pd)