Python 随机森林特征重要度
生活随笔
收集整理的這篇文章主要介紹了
Python 随机森林特征重要度
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ?Python 隨機森林特征重要度
1 聲明
本文的數(shù)據(jù)來自網(wǎng)絡(luò),部分代碼也有所參照,這里做了注釋和延伸,旨在技術(shù)交流,如有冒犯之處請聯(lián)系博主及時處理。
2 隨機森林特征重要度簡介
決策樹的優(yōu)點是通過樹形結(jié)構(gòu)以規(guī)則的形式查看模型的內(nèi)在結(jié)構(gòu),但隨機森林是由幾十、上百甚至上千棵決策樹組成的,這樣很難再可視化查看模型的結(jié)構(gòu)。但是我們可以通過隨機森林查看特征的重要度。
關(guān)于特征的重要性,需要注意兩點:
第一點scikit-learn要求我們將名義分類特征分解為多個二元特征(一種名義變量轉(zhuǎn)化為數(shù)值型的常見方法 One-Hot編碼);第二點如果兩個特征高度相關(guān),則會考慮其中一個特征,另外個特征將被弱化,如果不這么處理模型將難以解釋。
在scikit-learn中,分類回歸決策樹和隨機森林可以使用特征重要性方法來查看每個特征的相對重要性。
通過特征重要性篩選的步驟:
第一步隨機森林用到所有特征建立模型,此時會計算出特征的重要性并形成特征矩陣,第二步對該該矩陣通過SelectFromModel的threshold閾值參數(shù)進行過濾,用這個模型作為最終的模型。
?
3 隨機森林特征重要度代碼示例
# 導(dǎo)入相關(guān)庫和包 import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestClassifier from sklearn import datasets # 裝載數(shù)據(jù) iris = datasets.load_iris() features = iris.data target = iris.target # 創(chuàng)建隨機森林模型并計算特征重要度 randomforest = RandomForestClassifier(random_state=0, n_jobs=-1) model = randomforest.fit(features, target) importances = model.feature_importances_ indices = np.argsort(importances)[::-1] names = [iris.feature_names[i] for i in indices] #print(names) #print(range(features.shape[1]), importances[indices]) # 畫圖 plt.figure() from matplotlib.font_manager import FontProperties #設(shè)置支持中文字體 fp= FontProperties(fname="c:/windows/fonts/simsun.ttc", size=12) plt.suptitle('特征重要性',fontproperties=fp) plt.bar(range(features.shape[1]), importances[indices]) plt.xticks(range(features.shape[1]), names, rotation=90) plt.show() # 通過重要度的閾值篩選特征 # 定義重要度的閾值 selector = SelectFromModel(randomforest, threshold=0.3) features_important = selector.fit_transform(features, target) # 訓(xùn)練新的模型 model = randomforest.fit(features_important, target)4 總結(jié)
無
?
?
總結(jié)
以上是生活随笔為你收集整理的Python 随机森林特征重要度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线性代数之矩阵标准型的求法
- 下一篇: 北京西城区老破小学区房被秒光,全款支付居