模型解释方法

模型生成后需要对模型进行解释

特征权重

importances = rfc.feature_importances_
indices = np.argsort(importances)[::-1] #[::-1]表示将各指标按权重大小进行排序输出
for f in range(data_train_x[:100].shape[1]):
    print("%2d) %-*s %f" % (f + 1, 30, data_train_x.columns[indices[f]], importances[indices[f]]))

权重展示

def rf_feat_importance(m,df):
    return pd.DataFrame({'cols':df.columns,'imp':m.feature_importances_}).sort_values('imp',ascending=False)

sns.set_palette(sns.color_palette("BuGn_d"))
rf_feat_importance(rfc,data_train_x).plot('cols','imp',figsize=(14,6),kind='barh')
plt.show()

模型解释方法_第1张图片

树模型可视化

estimator = rfc.estimators_[1]

from sklearn import tree
import os
os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz/bin/'
dot_data1= tree.export_graphviz(
        estimator,#改成你要画的树,这里我们画dtr2
        out_file = None,
        feature_names = data_train_x.columns,#改成需要的特征名
        filled = True,
        impurity = True,#是否显示gini系数或者熵值
        rounded = True,
        special_characters=True,
        class_names=str(pd.DataFrame(data_train_y).columns)#分类树的类别名,回归树不用指定
    )
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data1)
graph.get_nodes()[1].set_fillcolor("#2DF3DF")
from IPython.display import Image
Image(graph.create_png())
graph.write_png("welding_depth_5.jpg")#保存图片

模型解释方法_第2张图片

你可能感兴趣的:(python,人工智能,深度学习)