金融風控TASK3特徵工程

2021-10-09 16:07:03 字數 2807 閱讀 8023

學習目標

學習特徵預處理、缺失值、異常值處理、資料分桶等特徵處理方法

學習特徵互動、編碼、選擇的相應方法

資料預處理常見方法

缺失值的填充: 時間格式處理 物件型別特徵轉換到數值

異常值處理: 基於3segama原則 基於箱型圖

資料分箱: 固定寬度分箱b 分位數分箱離散數值型資料分箱連續數值型資料分箱

特徵互動a. 特徵和特徵之間組合b. 特徵和特徵之間衍生c. 其他特徵衍生的嘗試

特徵編碼a. one-hot編碼b. label-encode編碼6. 特徵選擇a.

#缺失值填充

#把所有缺失值替換為指定的值

data_train = data_train.fillna(0)

# 向用缺失值上面的值替換缺失值

data_train = data_train.fillna(axis=

0,method=

'ffill'

)#縱向用缺失值下面的值替換缺失值,且設定最多隻填充兩個連續的缺失值

data_train = data_train.fillna(axis=

0,method=

'bfill'

,limit=2)

#檢視缺失值數量

data_train.isnull().

sum(

)#按照平均數填充數值型特徵

data_train[numerical_fea]

= data_train[numerical_fea]

.fillna(data_train[numerical_fea]

.median())

data_test_a[numerical_fea]

= data_test_a[numerical_fea]

.fillna(data_train[numerical_fea]

.median())

#按照眾數填充類別型特徵

data_train[category_fea]

= data_train[category_fea]

.fillna(data_train[category_fea]

.mode())

data_test_a[category_fea]

= data_test_a[category_fea]

.fillna(data_train[category_fea]

.mode(

))

#時間特徵處理

1#轉化成時間格式

for data in

[data_train, data_test_a]

: data[

'issuedate'

]= pd.to_datetime(data[

'issuedate'],

format

='%y-%m-%d'

) startdate = datetime.datetime.strptime(

'2007-06-01'

,'%y-%m-%d'

)#構造時間特徵

data[

'issuedatedt'

]= data[

'issuedate'].

(lambda x: x-startdate)

.dt.days

data_train[

'employmentlength'

].value_counts(dropna=

false

).sort_index(

)

#物件特徵轉換為數值

defemploymentlength_to_int

(s):

if pd.isnull(s)

:return s

else

:return np.int8(s.split()[

0])for data in

[data_train, data_test_a]

: data[

'employmentlength'

].replace(to_replace=

'10+ years'

, value=

'10 years'

, inplace=

true

) data[

'employmentlength'

].replace(

'< 1 year'

,'0 years'

, inplace=

true

) data[

'employmentlength'

]=data[

'employmentlength'].

(employmentlength_to_int)

data[

'employmentlength'

].value_counts(dropna=

false

).sort_index(

)#1. 對earliescreditline進行預處理

data_train[

'earliescreditline'

].sample(5)

for data in

[data_train, data_test_a]

: data[

'earliescreditline'

]= data[

'earliescreditline'].

(lambda s:

int(s[-4

:]))

Task 3 特徵工程

1 通過箱線圖 或3 sigma 分析刪除異常值 2 box cox轉換 處理有偏分布 3 長尾截斷 1 標準化 換為正態分佈 2 歸一化 3 針對冪律分布,可採用公式 1 x 1 median 1 等頻分桶 2 等距分桶 3 best ks 分桶 類似利用基尼指數進行二分類 4 卡方分桶 1 不處...

Task 3 特徵工程

1.異常處理 2.特徵歸一化 標準化 3.資料分桶 4.缺失值處理 5.特徵構造 1.異常處理 1 通過箱線圖 或3 sigma 分析刪除異常值 2 box cox轉換 處理有偏分布 3 長尾截斷 1 標準化 換為正態分佈 2 歸一化 3 針對冪律分布,可採用公式 1 x 1 median 1 等頻...

金融風控(三) 特徵工程

如下 按照平均數填充數值型特徵 data train numerical fea data train numerical fea fillna data train numerical fea median data test a numerical fea data test a numeric...