其实不止在数据科学领域,在很多传统统计学,或者是数学建模等都需要对数据进行标准化。输入的是一个n*p维的矩阵,然后输出也需要是n*p维的矩阵。只不过输出的矩阵每一列的均值都为0,方差都为1 。这样大幅减小了数据的波动性,可以使用各种算法进行下一步的操作。
本次案例是一个同学让我帮他把建模数据进行标准化,如果使用excel.....确实很慢,其他软件也不是能很方便快速的输出标准化的结果,Python里面的pandas和sklearn做这个就很方便。
代码如下:
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
df=pd.read_excel('建模数据.xlsx')
scaler = StandardScaler()
scaler.fit(df)
X_s = scaler.transform(df)
df2=pd.DataFrame(X_s,columns=df.columns)
df2.to_excel('标准化数据.xlsx',index=False)
先导包,然后读取建模数据,进行标准化后储存,很简单。输出的数据和原来的数据的列名、形状都是一模一样的。
这样标准化预处理完后,就可以进行下一步建模了。
当然,上面是标准化处理,如果想进行归一化处理也是类似的:(归一化就是每个数据减去最小值除以 (最大值减最小值))
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
df=pd.read_excel('建模数据.xlsx')
scaler = MinMaxScaler()
scaler.fit(df)
X_s = scaler.transform(df)
df2=pd.DataFrame(X_s,columns=df.columns)
df2.to_excel('归一化数据.xlsx',index=False)