資料預處理

2021-10-11 02:10:39 字數 1590 閱讀 4521

資料集的標準化(standardization)scikit-learn中實現的大多數機器學習演算法來說是常見的要求 。如果個別特徵或多或少看起來不是很像標準正態分佈(具有零均值和單位方差),那麼這些機器學習演算法的表現可能會比較差。

在機器學習演算法的目標函式(例如svm的rbf核心或線性模型的l1和l2正則化) 中有很多地方都假定了所有特徵都是以0為中心而且它們的方差也具有相同的階數。 如果某個特徵的方差比其他特徵大幾個數量級,那麼它就會在學習演算法的目標函式中佔據主導位置, 導致學習器並不能像我們所期望的那樣,從其他特徵中學習。

函式scale提供了乙個快速簡單的方法來在單個array-like資料集上執行上述標準化操作

from sklearn import preprocessing

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.22474487, 1.33630621],

[ 1.22474487, 0. , -0.26726124],

[-1.22474487, 1.22474487, -1.06904497]])

"""

被縮放的資料具有零均值和單位方差:

x_scaled.mean(axis=0)

"""輸出:array([0., 0., 0.])

"""

x_scaled.std(axis=0)

"""輸出:array([1., 1., 1.])

"""

preprocessing模組還提供了乙個工具類standardscaler,它實現了transformer的api來計算訓練集上的平均值標準偏差,以便以後能夠在測試集上重新應用相同的變換。

scaler = preprocessing.standardscaler(

).fit(x_train)

#將每一列特徵標準化為標準正太分布,注意,標準化是針對每一列而言的

scaler.transform(x_train)

"""輸出:

array([[ 0. ..., -1.22..., 1.33...],

[ 1.22..., 0. ..., -0.26...],

[-1.22..., 1.22..., -1.06...]])

"""

資料預處理

現實世界中資料大體上都是不完整,不一致的髒資料,無法直接進行資料探勘,或挖掘結果差強人意。為了提前資料探勘的質量產生了資料預處理技術。資料預處理有多種方法 資料清理,資料整合,資料變換,資料歸約等。這些資料處理技術在資料探勘之前使用,大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間。一 資料清...

資料預處理

常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹 變換後各維特徵有0均值,單位方差。也叫z score規範化 零均值規範化 計算方式是將特徵值減去均值,除以標準差。sklearn.preprocessing scale x 一般會把train和test集放在一起做標...

資料預處理

用cut函式分箱 有時把數值聚集在一起更有意義。例如,如果我們要為交通狀況 路上的汽車數量 根據時間 分鐘資料 建模。具體的分鐘可能不重要,而時段如 上午 下午 傍晚 夜間 深夜 更有利於 如此建模更直觀,也能避免過度擬合。這裡我們定義乙個簡單的 可復用的函式,輕鬆為任意變數分箱。def binni...