【数据竞赛】五大100%奏效的特征筛选策略
生活随笔
收集整理的這篇文章主要介紹了
【数据竞赛】五大100%奏效的特征筛选策略
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:杰少
五大100%奏效的特征篩選策略
簡 介
在一些問題中,我們拿到的數據特征列是幾千甚至上萬的,這個時候如果我們直接使用模型訓練,會非常耗時間,如果我們知道有些特征100%對于后期的模型訓練不會帶來幫助,并且在輸入模型訓練之前就將其刪除。
今天我們學習五個簡單有效的特征篩選操作,這五個操作在競賽中都可以直接使用,是100%有效的特征篩選策略,因為它們相對簡單,所以我們就放在一起介紹了。
五大特征篩選策略
1. 全部為空值的特征列
如果特征列全部是缺失值,那么該列特征不會包含任何信息,所以可以直接刪除。
2. 僅有一個值的特征
如果特征只包含唯一一個值的話,那么該列特征可以直接刪除。
3. 相關性達到100%的特征
如果兩個數值特征的pearson系數達到了1,那么可以直接刪除其中一個。
4. 一一對應的無序類別特征
如果兩個無序的類別特征是一一對應的,那么可以直接刪除其中一個。
5. 梯度提升樹模型給出重要性為0的特征
將所有的特征輸入到梯度提升樹模型進行訓練,將梯度提升樹模型返回的特征重要性為0的特征直接刪除。
代 碼
構建數據集
1. 特征列全部缺失的情況
null_col?=?df.columns[df.isnull().sum()?==?df.shape[0]] null_col Index(['f6'], dtype='object') df?=?df[list(set(df.columns)?-?set(null_col))] df.head()2. 刪除僅有一個值的特征
oneval_col?=?df.nunique().index[df.nunique()?==?1] df?=?df[list(set(df.columns)?-?set(oneval_col))] df.head()3. 刪除相關性達到100%的特征
df.corr()?==?1| True | False | False | False | False |
| False | True | False | False | False |
| False | False | True | False | True |
| False | False | False | True | False |
| False | False | True | False | True |
4. 尋找一一對應的無序類別特征
df.groupby('f4')['f5'].nunique() f4 A 1 B 1 C 1 Name: f5, dtype: int64 df.groupby('f5')['f4'].nunique() f5 X 1 Y 1 Z 1 Name: f4, dtype: int64 '''特征f4和f5兩個無序類別特征是一一對應的 ''' df?=?df[list(set(df.columns)?-?set(['f5']))] df.head()5. 刪除梯度提升樹模型給出重要性為0的特征
import?lightgbm?as?lgb y?=?df['label'] dic?=?{'A':1,?'B':2,?'C':3} df['f4']?=?df['f4'].map(dic).values fea_cols?=?[col?for?col?in?df.columns?if?col?not?in?['label']] X?=?df[fea_cols] model?=?lgb.LGBMClassifier(max_depth=5,?n_estimators=100,?learning_rate=0.005,?) model.fit(X,y,verbose=10)importance_zero_col?=?np.array(model.feature_name_)[model.feature_importances_?==?0] importance_zero_col適用問題
上面物種特征篩選策略99.9%都是通用的,所有的數據問題都可以直接使用,算是一種通用的策略。
參考文獻
LightGBM Document
5 Feature Selection Method from Scikit-Learn you should know
總結
以上是生活随笔為你收集整理的【数据竞赛】五大100%奏效的特征筛选策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【深度学习】目标检测实战:4种YOLO目
- 下一篇: win7内存占用过高怎么处理