特征預處理
通過特定的統計方法(數學方法)将資料轉換成算法要求的資料
數值型資料:
-标準縮放
- 歸一化
- 标準化
- 缺失值
類别行資料:
- one-hot編碼
時間型資料:
- 時間的切分
1、歸一化
将原始資料映射到一個區間[0,1]
特征同等重要:歸一化處理
目的:使得某一個特征對最終結果不對造成更大的影響
缺點:對于異常點處理不好,容易影響最大值最小值,魯棒性較差(穩定性),隻适合精确小資料場景

min為列最小值
max為列最大值
x2 為最終結果
mx ,mi 為指定區間預設[0, 1]
代碼示例
# -*- coding: utf-8 -*-
from sklearn.preprocessing import MinMaxScaler
# 歸一化處理,将資料映射到指定區間
data = [
[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]
]
min_max = MinMaxScaler(feature_range=(0, 1))
result = min_max.fit_transform(data)
print(result)
"""
[
[1. 0. 0. 0. ]
[0. 1. 1. 0.83333333]
[0.5 0.5 0.6 1. ]
]
計算示例,第一列
90
x1 = (x−min)/(max-min) = (90 - 60)/(90 - 60) = 1
x2 = x1 * (mx - mi)+ mi = 1 * (1 - 0) + 0 = 1
60
x1 = (x−min)/(max-min) = (60 - 60)/(90 - 60) = 0
x2 = x1 * (mx - mi)+ mi = 0 * (1 - 0) + 0 = 0
75
x1 = (x−min)/(max-min) = (75 - 60)/(90 - 60) = 0.5
x2 = x1 * (mx - mi)+ mi = 0.5 * (1 - 0) + 0 = 0.5
"""
2、标準化
将原始資料變換到均值為0,标準差為1的範圍内
平均值
方差 考量資料穩定性
方差 = 0 所有值都一樣
标準差
異常點:由于具有一定資料量,少量的異常點對于平均值的影響并不大,進而方差改變較小
标準差适用場景:
樣本足夠多且比較穩定,嘈雜大資料
from sklearn.preprocessing import StandardScaler
# 标準化處理,将資料映射到均值為0,标準差為1
data = [
[1.0, -1.0, 3.0],
[2.0, 4.0, 2.0],
[4.0, 6.0, -1.0]
]
std = StandardScaler()
result = std.fit_transform(data)
print(result)
"""
[
[-1.06904497 -1.35873244 0.98058068]
[-0.26726124 0.33968311 0.39223227]
[ 1.33630621 1.01904933 -1.37281295]
]
"""