數據標准化處理(簡單整理)


數據標准化處理

 

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']

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM