包:sklearn.preprocessing提供了一些實用的公共函式和轉化類
標準化,或稱為去平均和方差縮放
對乙個資料集進行標準化是大部分機器學習估測器的要求
scikit-learn中的許多學習器都需要將資料集進行標準化處理。資料集的標準化:當個體特徵太過或明顯不遵從高斯正態分佈時,標準化表現的效果較差。實際操作中,經常忽略特徵資料的分布形狀,移除每個特徵均值,劃分離散特徵的標準差,從而等級化,進而實現資料中心化。
例如,用於學習演算法(例如支援向量機的rbf核心或線性模型的l1和l2正則化器)的目標函式中,假設所有特徵都以零為中心並且具有相同量級的方差。如果某乙個特徵的方差大於其他數量級,則可能會對目標函式影響較大,使學習器無法按預期正確地學習其他特徵。
函式scale提供了一種快速簡單的方法來在單個陣列資料集上執行此操作:
公式為:(x-mean)/std 計算時對每個屬性/每列分別進行。
將資料按期屬性(按列進行)減去其均值,並處以其方差。得到的結果是,對於每個屬性/每列來說所有資料都聚集在0附近,方差為1。
>>> from sklearn import preprocessingscaled data has zero mean and unit variance:>>> import numpy as np
>>> x_train = np.array([[ 1., -1., 2.],
... [ 2., 0., 0.],
... [ 0., 1., -1.]])
>>> x_scaled = preprocessing.scale(x_train)
>>> x_scaled
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])
>>> x_scaled.mean(axis=0)array([ 0., 0., 0.])
>>> x_scaled.std(axis=0)
array([ 1., 1., 1.])
!!!提供乙個api,對訓練集進行標準化,對測試集做同樣的標準化
>>> scaler = preprocessing.standardscaler().fit(x_train)這個scaler能在新的資料集上做和訓練集上同樣的縮放轉換>>> scaler
standardscaler(copy=true, with_mean=true, with_std=true)
>>> scaler.mean_
array([ 1. ..., 0. ..., 0.33...])
>>> scaler.scale_
array([ 0.81..., 0.81..., 1.24...])
>>> scaler.transform(x_train)
array([[ 0. ..., -1.22..., 1.33...],
[ 1.22..., 0. ..., -0.26...],
[-1.22..., 1.22..., -1.06...]])
注 :1)若設定with_mean=false 或者 with_std=false,則不做centering 或者scaling處理。
2)scale和standardscaler可以用於回歸模型中的目標值處理。
資料預處理
現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...
資料預處理
常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...
資料預處理
用cut函式分箱 有時把數值聚集在一起更有意義。例如,如果我們要為交通狀況 路上的汽車數量 根據時間 分鐘資料 建模。具體的分鐘可能不重要,而時段如 上午 下午 傍晚 夜間 深夜 更有利於 如此建模更直觀,也能避免過度擬合。這裡我們定義乙個簡單的 可復用的函式,輕鬆為任意變數分箱。def binni...