k近鄰6-特徵預處理
阿新 • • 發佈:2021-09-13
1 什麼是特徵預處理
1.1 特徵預處理定義
通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料過程
為什麼:特徵的單位或者大小相差較大,或者某特徵的方差相比其他的特徵要大出幾個數量級,容易影響(支配)目標結果,使得一些演算法無法學習到其它的特徵
目標:用到一些方法進行無量綱化,使不同規格的資料轉換到同一規格
1.2 特徵預處理方式
- 歸一化
- 標準化
1.3 特徵預處理API
sklearn.preprocessing
2 歸一化
- 定義:
- 對原始資料進行變換把資料對映到(預設為[0,1])之間
- 對原始資料進行變換把資料對映到(預設為[0,1])之間
作用於每一列,max為一列的最大值,min為一列的最小值,那麼X’’為最終結果,mx,mi分別為指定區間值預設mx為1,mi為0
- API:
- sklearn.preprocessing.MinMaxScaler (feature_range=(0,1)… )
- 引數:feature_range -- 自己指定範圍,預設0-1
- 總結:
- 魯棒性比較差(容易受到異常點的影響)
- 只適合傳統精確小資料場景(用的不多)
- 例項
- 例項化MinMaxScalar
- 通過fit_transform轉換
import pandas as pd from sklearn.preprocessing import MinMaxScaler def minmax_demo(): """ 歸一化演示 :return: None """ data = pd.read_csv("./data/dating.txt") print(data) # 1、例項化一個轉換器類 transfer = MinMaxScaler(feature_range=(2, 3)) # 2、呼叫fit_transform data = transfer.fit_transform(data[['milage','Liters','Consumtime']]) print("最小值最大值歸一化處理的結果:\n", data) return None
返回結果:
milage Liters Consumtime target 0 40920 8.326976 0.953952 3 1 14488 7.153469 1.673904 2 2 26052 1.441871 0.805124 1 3 75136 13.147394 0.428964 1 .. ... ... ... ... 998 48111 9.134528 0.728045 3 999 43757 7.882601 1.332446 3 [1000 rows x 4 columns] 最小值最大值歸一化處理的結果: [[ 2.44832535 2.39805139 2.56233353] [ 2.15873259 2.34195467 2.98724416] [ 2.28542943 2.06892523 2.47449629] ..., [ 2.29115949 2.50910294 2.51079493] [ 2.52711097 2.43665451 2.4290048 ] [ 2.47940793 2.3768091 2.78571804]]
3 標準化
- 定義:
- 對原始資料進行變換把資料變換到均值為0,標準差為1範圍內
- 對原始資料進行變換把資料變換到均值為0,標準差為1範圍內
作用於每一列,mean為平均值,σ為標準差
- API:
- sklearn.preprocessing.StandardScaler( )
- 總結:
- 異常值影響小
- 適合現代嘈雜大資料場景(用的多)
- 案例:
- 例項化StandardScaler
- 通過fit_transform轉換
import pandas as pd
from sklearn.preprocessing import StandardScaler
def stand_demo():
"""
標準化演示
:return: None
"""
data = pd.read_csv("dating.txt")
print(data)
# 1、例項化一個轉換器類
transfer = StandardScaler()
# 2、呼叫fit_transform
data = transfer.fit_transform(data[['milage','Liters','Consumtime']])
print("標準化的結果:\n", data)
print("每一列特徵的平均值:\n", transfer.mean_)
print("每一列特徵的方差:\n", transfer.var_)
return None
返回結果:
milage Liters Consumtime target
0 40920 8.326976 0.953952 3
1 14488 7.153469 1.673904 2
2 26052 1.441871 0.805124 1
.. ... ... ... ...
997 26575 10.650102 0.866627 3
998 48111 9.134528 0.728045 3
999 43757 7.882601 1.332446 3
[1000 rows x 4 columns]
標準化的結果:
[[ 0.33193158 0.41660188 0.24523407]
[-0.87247784 0.13992897 1.69385734]
[-0.34554872 -1.20667094 -0.05422437]
...,
[-0.32171752 0.96431572 0.06952649]
[ 0.65959911 0.60699509 -0.20931587]
[ 0.46120328 0.31183342 1.00680598]]
每一列特徵的平均值:
[ 3.36354210e+04 6.55996083e+00 8.32072997e-01]
每一列特徵的方差:
[ 4.81628039e+08 1.79902874e+01 2.46999554e-01]