機器學習 資料預處理(特徵值轉化)

2021-09-13 03:58:07 字數 2165 閱讀 3518

我們知道,mnist資料集中的樣本特徵是從0-255的灰度值,0表示白,而255表示黑,中間的數值代表不同深度的灰色。通過除以255的操作,我們可以把所有的特徵值限定到0-1之間,從而有利於模型計算,提高模型的準確率,這就是一種簡單的資料預處理(data preprocessing)。資料預處理的方法有那些呢,請看下文。

preprocessing data官方文件

實質是將所有資料的特徵轉化為均值為0,而方差為1的狀態,這樣就可以確保資料的「大小」都是一致的,這樣有利於模型的訓練。

from sklearn.preprocessing import standardscaler

# 可以用訓練好的scaler去轉換其他資料,這樣它們就處於同樣的分布下了

scaler = preprocessing.standardscaler().fit(x)

在以下這些演算法中,特徵值服的分布對機器學習的結果影響很大:

只有基於樹模型的演算法是scale-invariant的,比如說決策樹,隨機深林等,資料的範圍對模型的最終結果沒有影響。

實質將所有的資料壓進了乙個長和寬都是1的方格仔中,這樣會讓模型的訓練速度更快且準確率也會提高,在影象處理(image processing)中用到。

實質和min-max scaling一樣將數值壓縮到一定範圍內[-1,1]。計算方法是將所有的特徵值除以最大值;用在數值已經以0為中心(均值=0),或者稀疏資料中。

實質利用中位數和四位數進行轉化,特別稱謂 「粗暴縮放」,他會直接把一些異常值踢出去,有點類似於我們的評委說 「去掉乙個最高分,去掉乙個最低分」 這樣的情況;與standardscaler非常相似,但因為原理不同,所得到的結果也不同。

實質將所有樣本的特徵向量轉化為歐幾里得距離為1,也就是說,它把資料的分布變成乙個半徑為1的圓,或者乙個球。normalizer通常是在我們只想保留資料特徵向量的方向,而忽略其數值的時候使用。normalizer會將原始資料變的最面目全非的方法了。

歸置缺失值

sklearn.preprocessing.imputer(

missing_values='nan', # 識別確實值

strategy='mean', # 填充缺失值的策略為填充平均值

axis=0, verbose=0, copy=true)

豐富特徵,一般在特徵向量比較少的情況下使用,會把模型搞得複雜起來。

sklearn.preprocessing.polynomialfeatures(

degree=2,

interaction_only=false,

include_bias=true)

生成多項的、相互影響的特徵值。比如乙個[a,b]兩個特徵的資料,用degree=2的polynomialfeatures轉換之後會變成[1, a, b, a^2, ab, b^2]這麼多特徵。

自定義需要轉化的格式

sklearn.preprocessing.functiontransformer(

func=none,

inverse_func=none,

validate=true,

accept_sparse=false,

pass_y=false, kw_args=none, inv_kw_args=none)

資料預處理的各方法總結類功能

說明standardscaler

無量綱化

標準化,基於特徵矩陣的列,將特徵值轉換至服從標準正態分佈

minmaxscaler

無量綱化

區間縮放,基於最大最小值,將特徵值轉換到[0, 1]區間上

normalizer

歸一化基於特徵矩陣的行,將樣本向量轉換為「單位向量」

binarizer

二值化基於給定閾值,將定量特徵按閾值劃分

onehotencoder

啞編碼將定性資料編碼為定量資料

imputer

缺失值計算

計算缺失值,缺失值可填充為均值等

polynomialfeatures

多項式資料轉換

多項式資料轉換

functiontransformer

自定義單元資料轉換

使用單變元的函式來轉換資料

特徵值預處理

特點 通過對原始資料的變換對映到預設為 0,1 之間 目的 是的某一特徵值不會對結果造成更大的影響 幾個特徵值對結果影響權重相等的二十號要進行歸一化 缺點 異常點 在最大最小值之外 對異常點的處理不好,魯棒性較差,只適合傳統的小資料場景 例項 usr bin env python coding ut...

機器學習特徵值處理方案

無量綱化,是指特徵的規格不一樣,不能夠放到一起進行比較。包 類引數列表 類別fit方法有用 說明sklearn.preprocessing standardscaler 特徵無監督 y標準化 sklearn.preprocessing minmaxscaler 特徵無監督 y區間縮放 sklearn...

機器學習 資料特徵預處理缺失值處理

刪除 如果行或列資料缺失值達到一定比例,建議放棄整行或列 插補 填補列的平均值,中位數 numpy陣列中的缺失值 nan nan 屬於float型別 from sklearn.preprocessing import imputer import numpy as np 缺失值處理 data 1,1...