# coding=utf-8
# 统计训练集的 mean 和 std 信息
from sklearn.preprocessing import StandardScaler
import numpy as np
def test_algorithm():
#定义test_algorithm()函数,该函数用来比较使用Sklearn库中 的 标准化方法和使用numpy库中的标准化方法的差异。
np.random.seed(123)
#使用随机数种子初始化 NumPy 库的随机数生成器,以便多次运行程序时生成相同的数据:#`np.random.seed(123)`
print('use sklearn')
# 输出使用 scikit-learn 库进行标准化的结果的标题:
# 注:shape of data: [n_samples, n_features]
data = np.random.randn(10, 4)#10行4列的二维数据作为原始数据
scaler = StandardScaler()#scaler做标准化,做均值和方差
#创建一个 StandardScaler 类的实例,将其赋值给变量 scaler:
scaler.fit(data)#scaler是标准化器,训练
#使用 fit() 方法计算原始数据的均值和标准差
trans_data = scaler.transform(data)
#并使用 transform() 方法对原始数据进行标准化:
print('original data: ')#
print data
print('transformed data: ')
print trans_data
#输出原始数据和标准化后的数据:
print('scaler info: scaler.mean_: {}, scaler.var_: {}'.format(scaler.mean_, scaler.var_))
#输出 StandardScaler 类的对象的均值和方差:
print('\n')
#输出一个空行:`print('\n')`
print('use numpy by self')
# 输出使用 NumPy 库进行标准化的结果的标题:
mean = np.mean(data, axis=0)
std = np.std(data, axis=0)
#使用 mean() 和 std() 方法计算原始数据的均值和标准差,将其分别赋值给变量 mean 和 std
var = std * std
#将标准差的平方分别赋值给变量 var
print('mean: {}, std: {}, var: {}'.format(mean, std, var))
#
# numpy 的广播功能
another_trans_data = data - mean
#使用广播功能将原始数据减去均值得到另一个矩阵
# 注:是除以标准差
another_trans_data = another_trans_data / std
#将矩阵 another_trans_data 的每个元素除以标准差得到标准化后的数据
print('another_trans_data: ')
print another_trans_data
#. 如果运行的文件名是本文件,则运行 test_algorithm() 函数:`if __name__ == '__main__':`,`test_algorithm()`
if __name__ == '__main__':
test_algorithm()
Standardscaler标准化
最新推荐文章于 2024-03-18 09:16:53 发布