連續數值變量的一些特征工程方法:二值化、多項式、數據傾斜處理


二值化處理:將細粒度的度量轉化成粗粒度的度量,使得特征的差異化更大。

from sklearn.datasets import load_iris
import pandas as pd

X,y = load_iris(return_X_y=True)    

df_X = pd.DataFrame(X,columns=list("ABCD"))

from sklearn.preprocessing import Binarizer

df_X["A"].describe()

bn = Binarizer(threshold=5.843333)

df_X["A"] = bn.transform(df_X["A"].values.reshape(-1,1))

特征多項式交互:捕獲特征之間的相關性

from sklearn.datasets import load_iris
import pandas as pd

X,y = load_iris(return_X_y=True)    

df_X = pd.DataFrame(X,columns=list("ABCD"))

from sklearn.preprocessing import PolynomialFeatures

pnf = PolynomialFeatures(degree=2,interaction_only=True)

temp  = pnf.fit_transform(df_X[["A","B"]].values)

for i,column in enumerate(list("EFGH")):
    df_X[column] = temp[:,i]

數據分布傾斜的處理:

  log變化:log變化傾向於拉高那些落在較低的幅度范圍內自變量的取值,壓縮那些落在較高的幅度范圍內自變量的取值,log變化能夠穩定數據的方差,使數據的分布接近於正太分布並使得數據與分布的均值無關。Box_Cox變換也有相似的效果,出現負數,使用常數進行偏移。

from sklearn.datasets import load_iris
import pandas as pd
import numpy as np

X,y = load_iris(return_X_y=True)    

df_X = pd.DataFrame(X,columns=list("ABCD"))

df_X["A"].hist(bins=10)

df_X["log_A"] = np.log10(df_X["A"])

df_X["log_A"].hist(bins=10)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM