DustinChu Blog

python使用sklearn進行資料預處理(學習筆記)


處理大量原始資料。機器學習算法期望數據在開始訓練過程之前以某種方式被格式化。為了準備機器學習算法攝取的數據,必須對其進行預處理並將其轉換為正確的格式

導入的包

1
2
3
import numpy as np
from sklearn import preprocessing

測試資料

1
2
3
4
input_data = np.array([[5.1, -2.9, 3.3],
[-1.2, 7.8, -6.1],
[3.9, 0.4, 2.1],
[7.3, -9.9, -4.5]])

二值化

當如果想要將數值轉換成布林值的時候,可以使用這個方法
如果>2.1的話 1 否則 0

1
2
3
data_binarized = preprocessing.Binarizer(threshold=2.1).transform(input_data)
print(data_binarized)

輸出結果

1
2
3
4
[[ 1. 0. 1.]
[ 0. 1. 0.]
[ 1. 0. 0.]
[ 1. 0. 0.]]

矩陣平均值

去除平均值是機器學習中常用的預處理技術。從我們的特徵向量中去除均值通常是有用的,因此每個特徵都以零為中心。

1
2
3
4
5
6
#mean() 计算矩阵均值 axis=0 每一列
print("\nBEFORE:")
print("Mean =", input_data.mean(axis=0))
#std 計算 矩陣標準差
print("Std deviation =", input_data.std(axis=0))

輸出結果

1
2
3
BEFORE:
Mean = [ 3.775 -1.15 -1.3 ]
Std deviation = [ 3.12039661 6.36651396 4.0620192 ]

去除均值

1
2
3
4
5
data_scaled = preprocessing.scale(input_data)
print("\nAFTER:")
print("Mean =", data_scaled.mean(axis=0))
print("Std deviation =", data_scaled.std(axis=0))

輸出結果

1
2
3
AFTER:
Mean = [ 1.11022302e-16 0.00000000e+00 2.77555756e-17]
Std deviation = [ 1. 1. 1.]

缩放

在特徵向量中,每個特徵的值可以在許多隨機值之間變化。因此,擴展這些特徵變得非常重要,這樣對於機器學習算法來說,這是一個公平的競爭環境。僅僅因為測量的性質

1
2
3
4
#將屬性縮放到一個指定的範圍
data_scaler_minmax = preprocessing.MinMaxScaler(feature_range=(0, 1))
data_scaled_minmax = data_scaler_minmax.fit_transform(input_data)
print("\nMin max scaled data:\n", data_scaled_minmax)

輸出結果

1
2
3
4
5
Min max scaled data:
[[ 0.74117647 0.39548023 1. ]
[ 0. 1. 0. ]
[ 0.6 0.5819209 0.87234043]
[ 1. 0. 0.17021277]]

每行被縮放,最大值是1所有其他值是相對於這個值。

正規化

正規化指的是最小絕對偏差,通過確保絕對值之和在每一行中為1來工作。L2 歸一化,指的是最小二乘法,確保平方和為1。

1
2
3
4
data_normalized_l1 = preprocessing.normalize(input_data, norm='l1')
data_normalized_l2 = preprocessing.normalize(input_data, norm='l2')
print("\nL1 normalized data:\n", data_normalized_l1)
print("\nL2 normalized data:\n", data_normalized_l2)

輸出結果

1
2
3
4
5
6
7
8
9
10
L1 normalized data:
[[ 0.45132743 -0.25663717 0.2920354 ]
[ -0.0794702 0.51655629 -0.40397351]
[ 0.609375 0.0625 0.328125 ]
[ 0.33640553 -0.4562212 -0.20737327]]
L2 normalized data:
[[ 0.75765788 -0.43082507 0.49024922]
[ -0.12030718 0.78199664 -0.61156148]
[ 0.87690281 0.08993875 0.47217844]
[ 0.55734935 -0.75585734 -0.34357152]]

參考資料

sklearn
numpy axis概念整理筆記
numpy.std() 計算矩陣標準差

文章標題:python使用sklearn進行資料預處理(學習筆記)

文章作者:Dustinchu

發布時間:2017年11月05日 - 02:11

最後更新:2018年04月25日 - 22:04

原始連結:https://dustinchu.github.io/2017/11/05/python使用sklearn進行資料預處理(學習筆記)/

許可協議: 屬名-非商業性使用-禁止編譯 4.0 國際 轉載請保留原文連結及作者。

相關文章: