pyspark特徵工程常用方法(一)

2021-08-21 09:15:26 字數 3845 閱讀 8630

本文記錄特徵工程中常用的五種方法:minmaxscaler,normalization,onehotencoding,pca以及quantilediscretizer 用於分箱

原有資料集如下圖:

# 首先將c2列轉換為vector的形式

vecassembler = vectorassembler(inputcols=["c2"], outputcol="c2_new")

# minmax tranform

mmscaler = minmaxscaler(inputcol='c2_new', outputcol='mm_c2')

pipeline = pipeline(stages=[vecassembler, mmscaler])

pipeline_fit = pipeline.fit(df)

df = pipeline_fit.transform(df)

通過以上轉換,可以將c2列轉換為c2_new,結果如圖:

轉換結果如下圖:

使用onehotencoder

from pyspark.ml.feature import onehotencoder

from pyspark.ml.feature import stringindexer

stringindexer = stringindexer(inputcol='c3', outputcol='onehot_feature')

encoder = onehotencoder(droplast=false, inputcols='onehot_feature', outputcols='onehot_test')

pipeline = pipeline(stages=[stringindexer, encoder])

pipeline_fit = pipeline.fit(df)

df = pipeline_fit.transform(df)

轉換結果如圖:

使用onehotencoderestimator

轉換結果如下:

對於空值的處理 handleinvalid = 『keep』時,可以將空值單獨分到一箱

# (5)quantilediscretizer 用於分箱, 對於空值的處理 handleinvalid = 'keep'時,可以將空值單獨分到一箱

from pyspark.ml.feature import quantilediscretizer

quantilediscretizer = quantilediscretizer(numbuckets=4, inputcol='c2', outputcol='quantile_c2', relativeerror=0.01, handleinvalid='error')

quantilediscretizer_model = quantilediscretizer.fit(df)

df = quantilediscretizer_model.transform(df)

df = quantilediscretizer.sethandleinvalid("keep").fit(df).transform(df) # 保留空值

df = quantilediscretizer.sethandleinvalid("skip").fit(df).transform(df) # 不要空值

# 檢視分箱點

特徵工程 常用的特徵轉換方法總結

機器學習模型的生命週期可以分為以下步驟 要構建模型就必須要對資料進行預處理。特徵轉換是這個過程中最重要的任務之一。在資料集中,大多數時候都會有不同大小的資料。為了使更好的 必須將不同的特徵縮小到相同的幅度範圍或某些特定的資料分布。什麼時候需要特徵轉換 什麼時候不需要特徵轉換 大多數基於樹型模型的整合...

特徵工程方法

常用方法總結 其中過濾法幾大檢驗的區別 假設x為解釋變數,y為被解釋變數,我們想確定x的取值對y是否有影響 1 x,y都為分類變數,比如學歷和購買之間的關係,卡方檢驗 互資訊比較合適 2 x為連續變數,y為分類變數,比如身高和購買之間的關係,f檢驗比較合適 3 x,y都為連續變數,相關係數即可 互資...

工程中常用的特徵選擇方法

當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。為什麼?1 降低維度,選擇重要的特徵,避免維度災難,降低計算成本 2 去除不相關的冗餘特徵 雜訊 來降低學習的難度,去除雜訊的干擾,留下關鍵因素,提高 精度 3 獲得更多有物理意義的,有價值的特徵 不同模型有不同的特徵適...