利用随机森林进行特征重要性排序
第一步就是導包,這里我們主要需要用到的就是sklearn和pandas
我們先對自己的數據集進行一下處理
數據集導入
dataset=testset dataset.target=testset['標簽'] dataset.target.head(5)
因為數據集比較大就放前幾個拿出來給大家看看,提取完標簽之后,為了讓后面的步驟更加簡潔,直接在數據集中刪除掉最后的一列target
除去target這一列的標簽,剩下的都是需要進行排序的特征
dataset.feature_names=testset.columns dataset.feature_names特征都被輸出來了
這里我賦給dataset的data值都是根據上面輸出的特征屬性來的,需要對部分屬性排序也可以,為了方便可以多drop掉幾個特征然后賦給新的dataset
print("data shape:{}".format(dataset.data.shape)) print("target shape:{}".format(dataset.target.shape)) print("line head 5:\n{}".format(dataset.data[:5])) print("target head 5:\n{}".format(dataset.target[:5]))分別輸出前五個數據看看有沒有缺特征或者data和target有空值的
數據集處理完成后檢查一下是不是data、target、feature_names這三個都有賦值,它們在數據集中對應的位置應該是這樣的(以西瓜數據集為例)
色澤、根蒂、敲聲、紋理、臍部、觸感這些是feature_names,好瓜這一列是target,中間的青綠、烏黑這些是data,在數據處理時最好把data以行的形式存儲起來,這樣一行是一個實例
第二步是處理我們通過處理初始的數據集得到的data、target和feature_names
X=dataset.data X.shape Y=dataset.target names=dataset.feature_names print(names)第三步利用sklearn這個包中的隨機森林對特征進行排序,前面都是準備工作,如果是網上可下載的那種數據集不需要花那么多功夫在處理數據集上
from sklearn.ensemble import RandomForestClassifier rf=RandomForestClassifier() rf.fit(X,Y) print("Features sorted by their score:") print(sorted(zip(map(lambda x:round(x,4),rf.feature_importances_),names)))這里也可以不用隨機森林,看到有人用線性回歸的,有興趣的同學也可以實現下,后面會附上相關鏈接
一般來說維數比較小的數據集得出來的重要性排序都不會有很低的,針對維數比較大的數據集可以利用這個方法剔除掉數據集中影響比較小的特征,在保證準確度的情況下訓練速度更快。
線性回歸進行重要性排序
使用標準數據集對特征進行重要性排序
兩種重要性排序的方法
總結
以上是生活随笔為你收集整理的利用随机森林进行特征重要性排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备战秋招-oppo java一面 面经
- 下一篇: 有些视频不显示IDM的下载按钮