資料探勘專案 特徵選擇

2021-09-11 21:57:32 字數 1269 閱讀 3236

基於處理好的資料--data.csv

data=pd.read_csv('data.csv',encoding='gbk') 

y=data['status'] 

x_cl=data.drop('status',axis=1)

# 計算 iv 函式

def cal_iv(x, y, n_bins=6, null_value=np.nan,):

# 剔除空值

x = x[x != null_value]

# 若 x 只有乙個值,返回 0

if len(x.unique()) == 1 or len(x) != len(y):

return 0

if x.dtype == np.number:

# 數值型變數

if x.nunique() > n_bins:

# 若 nunique 大於箱數,進行分箱

x = pd.qcut(x, q=n_bins, duplicates='drop')

# 計算iv

groups = x.groupby([x, list(y)]).size().unstack().fillna(0)

t0, t1 = y.value_counts().index

groups = groups / groups.sum()

not_zero_index = (groups[t0] > 0) & (groups[t1] > 0)

groups['iv_i'] = (groups[t0] - groups[t1]) * np.log(groups[t0] / groups[t1])

iv = sum(groups['iv_i'])

return iv

from sklearn.ensemble import randomforestclassifier

rf = randomforestclassifier()

rf.fit(x_cl, y)

rf_impc = pd.series(rf.feature_importances_, index=x_cl.columns).sort_values(ascending=false)

# 篩選 重要性前十五 個特徵

imp_fea_rf = rf_impc.index[:15]

# 合併特徵並篩選出有用特徵

imp_fea = list(set(imp_fea_iv) | set(imp_fea_rf))

x_imp = x_cl[imp_fea]

x_imp.shape

資料探勘專案(2)特徵選擇

此次進行特徵選擇的資料還是上次用到的金融資料並 貸款使用者是否會逾期。此次資料為了排除缺失值對資料的影響,將所有缺失的樣本資料進行刪除,並刪除了幾個對資料分類無影響的變數,最後保留1534 86的資料量。1.刪除方差較小的特徵,也就是所謂的不發散的特徵,因為這些特徵在所有的資料中變化量很小或者幾乎沒...

原 文字挖掘 特徵選擇

特徵選擇有很多方法,看了很多資料後,我總結了以下幾種,以後有新內容會隨時修改 1.df 基於文件頻率的特徵提取方法 概念 df document frequency 指出現某個特徵項的文件的頻率。步驟 1 從訓練語料中統計出保函某個特徵的文件頻率 個數 2 根據設定的閾值 min max 當該特徵的...

資料探勘 ctr特徵

訓練集分成k fold,用其他k 1 fold計算ctr,然後merge給第k個fold,遍歷k次。然後訓練集整體計算ctr,再merge給測試集。def ctr fea train,test,feature for fea in feature print fea temp train label...