特徵預處理,特徵選擇

2021-09-25 07:41:33 字數 2291 閱讀 3106

統一量綱

特徵規格不一樣,不能放在一起比較。(主要看模型,比如樹模型就不太需要,而計算距離之類的模型,或者神經網路就需要),主要有標準化,區間放縮,歸一化。

標準化

##標準化,均值為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 時間類別 時間的劃分 下面介紹歸一化和標準化歸一化 歸一化 ...