隨機森林回歸模型
創建一個隨機森林回歸模型,訓練模型,然后使用SHAP庫解釋模型的預測結果,并將結果可視化。
具體步驟如下:
-
首先,代碼導入了所需的庫,包括matplotlib、shap、numpy和sklearn.ensemble。matplotlib庫用于數據可視化,shap庫用于解釋機器學習模型的預測結果,numpy庫用于進行數值計算和數組操作,sklearn.ensemble庫中的RandomForestRegressor類用于創建隨機森林回歸模型。
-
然后,代碼設置了matplotlib的全局參數,將字體族設置為’PingFang HK’。這將影響后續繪圖的字體樣式。
-
接下來,代碼生成了一個形狀為(100, 5)的隨機數組作為模型的輸入數據,并創建了一個隨機森林回歸模型。模型的構造函數的參數n_estimators指定了隨機森林中決策樹的數量。
-
然后,代碼使用輸入數據和隨機生成的目標值對模型進行訓練。
-
接下來,代碼創建了一個shap.TreeExplainer對象用于解釋模型的預測結果,并計算了輸入數據的SHAP值。SHAP值是一種用于解釋模型預測結果的方法。
-
然后,代碼使用shap.summary_plot函數生成了一個SHAP值的匯總圖。這個圖形顯示了每個特征對預測結果的影響程度。
-
接著,代碼獲取了當前圖形的顏色條軸對象,并設置了其刻度標簽為[‘低’, ‘高’],字體大小為15。顏色條軸用于顯示圖形中不同顏色對應的數值范圍。
-
最后,代碼將當前圖形保存為文件,文件名為’shap_summary_plot.png’。
使用隨機森林回歸模型進行預測,并使用SHAP庫解釋預測結果的過程。具體代碼如下所示:
import matplotlib
matplotlib.use('Agg') # 使用Agg后端import shap #
import matplotlib.pyplot as plt
import numpy as np
from sklearn.ensemble import RandomForestRegressorplt.rcParams['font.family'] = ['PingFang HK']X = np.random.rand(100, 5)
model = RandomForestRegressor(n_estimators=100)model.fit(X, np.random.rand(100))explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)summary_plot = shap.summary_plot(shap_values, X, show=False)colorbar_axes = plt.gcf().get_axes()[-1] # 獲取當前圖形的顏色條軸對象
colorbar_axes.set_yticklabels(['低', '高'],size=15) # 設置顏色條軸的刻度標簽, 設置字體大小# 將圖保存到文件(例如PNG)
plt.savefig('shap_summary_plot.png')