機器學習 資料特徵預處理

2021-10-07 14:20:48 字數 3388 閱讀 8011

通過特定的統計方法(數學方法)將資料轉換成演算法要求的資料

數值型資料:標準縮放:

1、歸一化

2、標準化

3、缺失值

類別型資料:one-hot編碼

時間型別:時間的切分

sklearn特徵處理api:sklean.preprocessing

特點:通過對原始資料進行變化把資料對映到(預設為[0,1])之間

舉例說明計算過程:

sklearn歸一化api:sklearn.preprocessing.minmaxscaler

● minmaxscaler(feature_range=(0,1)...)

● 每個特徵縮放到給定範圍(預設[0,1])

● minmaxscaler.fit_transform(x)

● x:numpy array格式的資料[n_samples,n_features]

● 返回值:轉換後的形狀相同的array

歸一化使用時機:多個特徵同等重要的時候,進行歸一化。

**例子:

from sklearn.preprocessing import minmaxscaler

# 歸一化處理

def mm():

min_max = minmaxscaler()

data = min_max.fit_transform([[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]])

print(data)

def main():

mm()

if __name__ == '__main__':

main()

輸出:

[[1.         0.         0.         0.        ]

[0. 1. 1. 0.83333333]

[0.5 0.5 0.6 1. ]]

1、特點:通過對原始資料進行變換把資料變換到均值為0,方差為1範圍內

3、結合歸一化來談標準化

對於歸一化來說:如果出現了異常點,影響了最大值和最小值,那麼結果顯然會發生改變。

對於標準化來說:如果出現了異常點,由於具有一定的資料量,少量的異常點對於平均值的影響並不大,從而方差改變較少。

4、sklearn歸一化api:sklearn.preprocessing.standardscaler

● standardscaler(...)

● 處理之後每列來說所有資料都聚集在均值0附件標準差差為1

● standardscaler.fit_transform(x)

● x:numpy array格式的資料[n_samples,n_features]

● 返回值:轉換後的形狀相同的array

● standardscaler.mean_

● 原始資料中每列特徵的平均值

● standardscaler.std_

● 原始資料中每列特徵的方差

**例子:

from sklearn.preprocessing import standardscaler

# 標準化縮放

def stand():

std = standardscaler()

data = std.fit_transform([[1, -1, 3], [2, 4, 2], [4, 6, -1]])

print(data)

def main():

stand()

if __name__ == '__main__':

main()

輸出:

[[-1.06904497 -1.35873244  0.98058068]

[-0.26726124 0.33968311 0.39223227]

[ 1.33630621 1.01904933 -1.37281295]]

5、標準化總結

在已有樣本足夠多的情況下比較穩定,適合現代嘈雜大資料場景。

1、處理方法

刪除:如果每列或者行資料缺失值達到一定的比例,建議放棄整行或者整列。

插補:可以通過缺失值每行或者每列的平均值、中位數來填補。

2、sklearn缺失值化api:sklearn.impute.******imputer

● ******imputer(...)

● 完成缺失值插補

● ******imputer.fit_transform(x)

● x:numpy array格式的資料[n_samples,n_features]

● 返回值:轉換後的形狀相同的array

**例子:

from sklearn.impute import ******imputer

import numpy as np

# 缺失值處理

def im():

imp = ******imputer()

data = imp.fit_transform([[1, 2], [np.nan, 3], [7, 6]])

print(data)

def main():

im()

if __name__ == '__main__':

main()

輸出:

[[1. 2.]

[4. 3.]

[7. 6.]]

3、np.nan(np.nan)

1)numpy的陣列中可以使用np.nan/np.nan來代替缺失值,屬於float型別

2)如果是檔案中的一些缺失值,可以替換成nan,通過np.array轉化成float型的陣列即可。

機器學習 資料特徵預處理

資料的特徵預處理 數值型資料 標準縮放 歸一化 標準化 缺失值 類別型資料 one hot編碼 時間型別 時間的切分 歸一化處理 統計人覺得幾個特徵同等重要時,要用歸一化 目的 使得乙個特徵不會對最終結果不會造成更大影響 特點 通過對原始資料進行變換,把資料對映到 預設 0,1 之間 公式 x x ...

機器學習 特徵預處理

通過一些轉換函式將特徵資料轉換成更加適合演算法模型的特徵資料的過程。特徵的單位或者大小相差較大,或者某特徵的方差相比其他的特徵要大出幾個數量級,容易影響 支配 目標結果,使得一些演算法無法學習到其它的特徵。對資料進行標準化或者歸一化可解決此類現象 資料標準化 是消除變數間的量綱關係,從而使資料具有可...

機器學習 特徵工程 特徵預處理

定義 將原始資料轉換為更好地代表 模型的潛在問題的特徵的過程,從而提高了對未知資料的 準確性。內容 主要有三部分 1 特徵抽取 2 特徵預處理 3 資料的降維 特徵預處理 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。1 包含內容 2 sklearn特徵處理api sklearn.pr...