我使用隔离森林模型进行异常值检测,还尝试构建 shap_force 图来查看特征。
我建立的隔离林模型是:
model = IsolationForest(n_estimators=50, max_samples='auto', contamination=float(0.2), max_features=1.0,random_state= 0)
model.fit(df)
pred = model.predict(df)
df['anomaly_label']=pred
我试图获得形状值:
def shap_plot(j):
explainerModel = shap.TreeExplainer(model)
shap_values_Model = explainerModel.shap_values(df,check_additivity=False)
p = shap.force_plot(explainerModel.expected_value, shap_values_Model[j], S.iloc[[j]])
return(p)
我得到的一些例子是:
基值和预测值很大,超出范围。我想知道为什么会这样?有没有办法解决这个问题?