多特征值数据预处理_「人工智能」No.6 特征工程之数据预处理
【導讀:當今人類即將或者已然了進入智能時代,這是·情報通·人工智能科普系列第[6]篇文章,歡迎閱讀和收藏!】
1 基本概念
“數據和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已”,這里的數據指的就是經過特征工程得到的數據。特征工程指的是把原始數據轉變為模型的訓練數據的過程,它的目的就是獲取更好的訓練數據特征,最大限度地從原始數據中提取特征以供算法和模型使用,使得機器學習模型逼近這個上限。特征工程能使得模型的性能得到提升,有時甚至在簡單的模型上也能取得不錯的效果。
數據是實現機器學習的重要輸入,而數據(特征)預處理是最基本的一個步驟,本文重點介紹數據預處理的方法。
2 術語解釋
特征 :一個客體或一組客體特性的抽象結果。
啞編碼 :假設有 N 種定性值,則將這一個特征擴展為 N 種特征,當原始特征值為第 i 種定性值時,第 i 個擴展特征賦值為 1 ,其他擴展特征賦值為 0 。
正態分布 :也稱常態分布或高斯分布,是連續隨機變量概率分布的一種,自然界、人類社會、心理和教育中大量現象均按正態形式分布,例如能力的高低,學生成績的好壞等都屬于正態分布。它隨隨機變量的平均數、標準差的大小與單位不同而有不同的分布形態。
量綱 :物理量的基本屬性。
標準差 :在概率統計中最常使用作為統計分布程度( statistical dispersion )上的測量。標準差定義是總體各單位標準值與其平均數離差平方的算術平均數的平方根。它反映組內個體間的離散程度。
范數( Norm ) :是數學中的一種基本概念,常常被用來度量某個向量空間(或矩陣)中的每個向量的長度或大小。
定量 :以數量形式存在著的屬性,并因此可以對其進行測量。
定性 :通過非量化的手段來探究事物的本質。其概念與定量相對應。
中位數 :對于有限的數集,可以通過把所有觀察值高低排序后找出正中間的一個作為中位數。如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。
眾數 :一組數據中出現次數最多的數值。
3 數據預處理的背景
通過特征提取,我們能得到未經處理的特征數據,這時的數據可能有以下問題:
?不屬于同一量綱:即各特征的規格不一樣,不能夠放在一起比較。無量綱化可以解決這一問題。
?信息冗余:對于某些定量特征,其包含的有效信息為區間劃分,例如學習成績,假若只關心“及格”或“不及格”,那么需要將定量的考分,轉換成“ 1 ”和“ 0 ”表示及格和未及格。二值化可以解決這一問題。
?定性特征不能直接使用:某些機器學習算法和模型只能接受定量特征的輸入,那么需要將定性特征轉換為定量特征。最簡單的方式是為每一種定性值指定一個定量值,但是這種方式過于靈活,增加了調參的工作。通常使用啞編碼的方式將定性特征轉換為定量特征,啞編碼的方式相比直接指定的方式,不用增加調參的工作,對于線性模型來說,使用啞編碼后的特征可達到非線性的效果。
?存在缺失值:缺失值需要補充。
?信息利用率低:不同的機器學習算法和模型對數據中信息的利用是不同的,在線性模型中,使用對定性特征啞編碼可以達到非線性的效果。類似地,對定量變量多項式化,或者進行其他的轉換,都能達到非線性的效果。
4 數據預處理的方法
4.1 Python 庫的安裝
Python 中存在現成的包可以進行特征工程的預處理: sklearn.preprocessing ,該庫可以解決數據預處理中的問題。
但安裝時出現很多錯誤,安裝方法:
1 、版本號特別重要,一定不要通過 pip install 直接安裝,而是要在此網站中下載本 python 版本的安裝包,逐一安裝;
2 、先安裝 numpy+mkl ;
3 、安裝 scipy ;
4 、安裝 kiwisolver ;
5 、安裝 matplotlib ;
6 、最后安裝 sklearn 。
sklearn.preprocessing 庫中的類說明:
4.2 無量綱化
無量綱化使不同規格的數據轉換到同一規格。常見的無量綱化方法有標準化和區間縮放法。標準化的前提是特征值服從正態分布,標準化后,其轉換成標準正態分布。區間縮放法利用了邊界值信息,將特征的取值區間縮放到某個特點的范圍,例如 [0, 1] 等。
4.2.1 標準化( z-score )
1 、求出樣本特征 x 的均值 mean (所有 x 的樣本值相加除以 x 的樣本個數)和標準差 std (一組數據中的每一個數與這組數據的平均數 mean 的差的平方的和再除以數據的個數,再取平方根)。
mean= ( x 1 +x 2 +……+x m ) /m
2 、可以通過如下公式進行數據標準化:
x_norm=(x- mean)/std
通過 Python 代碼實現:
from sklearn.preprocessing import StandardScaler
StandardScaler().fit_transform(x)
4.2.2 區間縮放( max-min 標準化)
1 、得出最大值和最小值;
2 、通過如下公式進行數據的縮放:
x_ scaler =(x- min)/(max-min)
通過 Python 代碼實現:
from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(x)
4.2.3 歸一化( L1/L2 范數標準化)
歸一化是依照特征矩陣的行處理數據,其目的在于樣本向量在點乘運算或其他核函數計算相似性時,擁有統一的標準,也就是說都轉化為“單位向量”。
L1 范數則是將上述公式的除數改為向量中各個元素絕對值之和。通常情況下,范數標準化首選 L2 范數標準化。
通過 Python 代碼實現:
from sklearn.preprocessing import NormalizerNormalizer().fit_transform(x)4.3 對定量特征二值化
定量特征二值化的核心在于設定一個閾值,大于閾值的賦值為 1 ,小于等于閾值的賦值為 0 ,公式表達如下:
通過 Python 代碼實現:
from sklearn.preprocessing import BinarizerBinarizer(threshold=3).fit_transform(iris.data)4.4 對定性特征啞編碼
假設有 N 種定性值,則將這一個特征擴展為 N 種特征,當原始特征值為第 i 種定性值時,第 i 個擴展特征賦值為 1 ,其他擴展特征賦值為 0 。
通過 Python 代碼實現:
from sklearn.preprocessing import OneHotEncoderOneHotEncoder().fit_transform(iris.target.reshape((-1,1)))總結
以上是生活随笔為你收集整理的多特征值数据预处理_「人工智能」No.6 特征工程之数据预处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部队四个一线是指什么
- 下一篇: ddr传输 pl ps_Vitis ZY