数据标准化处理(简单整理)

数据标准化处理

import numpy as np
raw_samples = np.array([
    [3,-1.5,2,-5.4],
    [0,4,-0.3,2.1],
    [1,3.3,-1.9,-4.3]])
print(raw_samples)
print(raw_samples.mean(axis=0))   # 求各个列的均值
print(raw_samples.std(axis=0))    # 求各个列的标准差

print("=============方法1:对raw_samples矩阵做标准差标准化处理====================")
#  标准化处理(标准正态分布):是让矩阵中的每列的均值为0,标准差为1
from sklearn.preprocessing import scale
s=scale(raw_samples)   # 对raw_samples矩阵做标准差标准化处理
print(s)
print(s.mean(axis=0))
print(s.std(axis=0))

print("==========方法2:对raw_samples矩阵做(0,1)缩放标准化处理====================")
# (0,1)缩放:是让矩阵中的每列中每行的各个特征值缩放成为0到1之间值
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler(feature_range=(0,1)).fit_transform(raw_samples)
print(mms)
print(mms.min(axis=0))
print(mms.max(axis=0))

print("=========方法3:对raw_samples矩阵做归一化标准化处理====================")
# 归一化:用矩阵中每行的各个特征值除以该行所有特征值之和,再对每行所得的值做绝对值之和,此时每行中
#          各个列相加得出的值都是1
from  sklearn.preprocessing import normalize
nor_samples = normalize(raw_samples,norm="l1")
print(nor_samples)
print(np.abs(nor_samples).sum(axis=1))


print("=========方法4:对raw_samples做二值化标准化处理======================")
# 二值化:根据一个事先设定的阀值,将样本矩阵中不大于阀值的元素设定为0,大于阀值的元素设定为1
# 二值化信息有所损失,二值化后无法知道原始数据具体是多少
from  sklearn.preprocessing import Binarizer
bin = Binarizer(threshold=1.4)  # 1.4的阀值是自己设定的
bin_samples = bin.transform(raw_samples)
print(bin_samples)

print("=========方法5:对raw_samples做独热编码标准化处理======================")

raw_samples =np.array([
    [1,3,2],
    [7,5,4],
    [1,8,6],
    [7,3,9]])
print(raw_samples)

# 创建独热编码器
from sklearn.preprocessing import OneHotEncoder
print("==============紧凑格式===================")
ohe = OneHotEncoder(dtype=int)  # sparse 表示是否采用紧缩格式(即只记录非0格式),默认为真1
ohe_samples = ohe.fit_transform(raw_samples)
print(ohe_samples)   # 最后出来的结果是只记录1 的结果
# (0, 5)  1    表示第0行第5列是1
# (0, 2)  1    表示第0行第2列是1
# (0, 0)  1    表示第0行第0列是1

print("==============非紧凑格式===================")
ohe1 = OneHotEncoder(sparse=False,dtype=int)  # sparse 表示是否采用紧缩格式,默认为真1
ohe_samples = ohe1.fit_transform(raw_samples)
print(ohe_samples)



print("=============方法6:将分类变量转为数值型:用标签编码============")
# 标签编码:将一列字符串形式的特征值,按照字典排序,用每个字符在排序序列中的索引号表示该字符
raw_samples = np.array(["audi","ford","audi",
                       "toyota","ford","bmw",
                       "toyota","audi"])
from sklearn.preprocessing import LabelEncoder
lbe = LabelEncoder()
lbe_samples = lbe.fit_transform(raw_samples)
print(lbe_samples)   # 返回:[0 2 0 3 2 1 3 0]

print("====用inverse_transform()将标签编码转回原始数据======")
raw_samples = lbe.inverse_transform(lbe_samples)
print(raw_samples)   # 返回:['audi' 'ford' 'audi' 'toyota' 'ford' 'bmw' 'toyota' 'audi']
原文地址:https://www.cnblogs.com/wodexk/p/10308174.html