統一量綱
特徵規格不一樣,不能放在一起比較。(主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要),主要有標準化,區間放縮,歸一化。
標準化
##標準化,均值為0,方差為1
from sklearn.preprocessing import standardscaler
#標準化,返回值為標準化後的資料
standardscaler().fit_transform(iris.data)
區間放縮
from sklearn.preprocessing import minmaxscaler
#區間縮放,返回值為縮放到[0, 1]區間的資料
minmaxscaler().fit_transform(iris.data)
歸一化
from sklearn.preprocessing import normalizer
#歸一化,返回值為歸一化後的資料
normalizer().fit_transform(iris.data)
定量特徵二值化
定量特徵二值化的核心在於設定乙個閾值,大於閾值的賦值為1,小於等於閾值的賦值為0。
from sklearn.preprocessing import binarizer
#二值化,閾值設定為3,返回值為二值化後的資料
binarizer(threshold=3).fit_transform(iris.data)
對定性特徵啞編碼
某些機器學習演算法和模型只能接受定量特徵的輸入,那麼需要將定性特徵轉換為定量特徵。最簡單的方式是為每一種定性值指定乙個定量值,但是這種方式過於靈活,增加了調參的工作。通常使用啞編碼(其實就是one-hot)的方式將定性特徵轉換為定量特徵,對於線性模型來說,使用啞編碼後的特徵可達到非線性的效果。由於iris資料集的特徵皆為定量特徵,故使用其目標值進行啞編碼(實際上是不需要的)。(關於編碼問題,還會再出一篇部落格)
from sklearn.preprocessing import onehotencoder
#啞編碼,對iris資料集的目標值,返回值為啞編碼後的資料
onehotencoder().fit_transform(iris.target.reshape((-1,1)))
缺失值計算
from sklearn.preprocessing import polynomialfeatures
#多項式轉換
#引數degree為度,預設值為2
polynomialfeatures().fit_transform(iris.data)
from sklearn.feature_selection import variancethreshold
#方差選擇法,返回值為特徵選擇後的資料
#引數threshold為方差的閾值
variancethreshold(threshold=3).fit_transform(iris.data)
from sklearn.feature_selection import selectkbest
from scipy.stats import pearsonr
#選擇k個最好的特徵,返回選擇特徵後的資料
#第乙個引數為計算評估特徵是否好的函式,該函式輸入特徵矩陣和目標向量,輸出二元組(評分,p值)的陣列,陣列第i項為第i個特徵的評分和p值。在此定義為計算相關係數
#引數k為選擇的特徵個數
selectkbest(lambda x, y: array(map(lambda x:pearsonr(x, y), x.t)).t, k=2).fit_transform(iris.data, iris.target)
embedded
from sklearn.feature_selection import selectfrommodel
from sklearn.linear_model import logisticregression
#帶l1懲罰項的邏輯回歸作為基模型的特徵選擇
selectfrommodel(logisticregression(penalty="l1", c=0.1)).fit_transform(iris.data, iris.target)
方法見這裡 特徵工程(特徵選擇,表達,預處理)
首先是找到該領域懂業務的專家,讓他們給一些建議。比如我們需要解決乙個藥品療效的分類問題,那麼先找到領域專家,向他們諮詢哪些因素 特徵 會對該藥品的療效產生影響,較大影響的和較小影響的都要。這些特徵就是我們的特徵的第一候選集。特徵選擇的方法一般分三類 包裝法 根據目標函式,通常是 效果評分,每次選擇部...
特徵預處理
一 定義 通過特定的統計方法 數學方法 將資料轉換成演算法要求的資料。二 方法 一 數值型資料 標準縮放 1 歸一化 2 標準化 3 缺失值 二 類別型資料 one hot編碼 三 時間型別 時間的切分 三 sklearn特徵處理api sklearn.preprocessing 四 歸一化 一 原...
特徵工程之特徵預處理
概念 特徵預處理是什麼呢?特徵預處理是通過統計方法 數學方法 將資料轉換成演算法要求的資料,所以特徵預處理也叫做資料預處理。下面是幾種資料預處理的方法 1 數值型資料 標準縮放 1 歸一化2 標準化 2 類別型資料 one hot編碼 3 時間類別 時間的劃分 下面介紹歸一化和標準化歸一化 歸一化 ...