# 【干货】Python机器学习机器学习项目实战3——模型解释与结果分析（附代码）

【导读】机器学习模型经常被批评是技术黑箱：只要输入数据就能得到正确答案，但却无法对其进行解释，在本系列的第三部分，作者展示一个完整的机器学习解决方案，并试图解释模型。

【干货】Python机器学习项目实战1（附代码）

【干货】Python机器学习项目实战2——模型选择，超参数调整和评估（附代码）

——Interpreting a machine learning model and presenting results

1、 特征重要性【7】

2、 单一决策树可视化

3、 LIME：Local Interpretable Model-Agnostic Explainations【8】

```import pandas as pd

# model is the trained model
importances = model.feature_importances_

# train_features is the dataframe of training features
feature_list = list(train_features.columns)

# Extract the feature importances into a dataframe
feature_results = pd.DataFrame({'feature': feature_list,
'importance': importances})

# Show the top 10 most important
feature_results = feature_results.sort_values('importance',
ascending = False).reset_index(drop=True)

```from sklearn import tree

# Extract a single tree (number 105)
single_tree = model.estimators_[105][0]

# Save the tree to a dot file
tree.export_graphviz(single_tree, out_file = 'images/tree.dot',
feature_names = feature_list)```
`dot -Tpng images/tree.dot -o images/tree.png`

1、 一个数值判断表达式，来决定接下来该向左还是向右走

2、 Mse代表了节点的误差

3、 Samples表示样本数量

4、 Value表示节点中所有样例的估计值

（叶子节点只有2-4个，因为这代表了最终的估计值，并且没有任何的孩子节点。）

LIME，Local Interpretable Model-Agnostic Explanations

```from sklearn.ensemble import GradientBoostingRegressor

# Create the model with the best hyperparamters
max_features=None,min_samples_leaf=6, min_samples_split=6,
n_estimators=800, random_state=42)

# Fit and test on the features
model.fit(X, y)
model_pred = model.predict(X_test)

# Find the residuals
residuals = abs(model_pred - y_test)

# Extract the most wrong prediction
wrong = X_test[np.argmax(residuals), :]

print('Prediction: %0.4f' % np.argmax(residuals))
print('Actual Value: %0.4f' % y_test[np.argmax(residuals)])```
```Prediction: 12.8615
Actual Value: 100.0000```

```import lime

# Create a lime explainer object
explainer = lime.lime_tabular.LimeTabularExplainer(training_data = X,
mode = 'regression', training_labels = y,
feature_names = feature_list)

# Explanation for wrong prediction
exp = explainer.explain_instance(data_row = wrong,
predict_fn = model.predict)

# Plot the prediction explaination
exp.as_pyplot_figure();```

```# Show the explanation in the Jupyter Notebook
exp.show_in_notebook()```

Jupyter笔记本也是一个分享信息的好平台。使用Jupyter，我们可以将代码隐藏在最终报告中，因为并不是每个人都想在文档中看到一堆Python代码！

1、 利用纽约能源数据，可以建立一个误差在9.1以内的模型，来预测建筑物的能源星级。

2、 EUI和电力强度是预测分数的最相关因素。

1、 数据清洗和格式

2、 探索性数据分析

3、 工程特性和选择

4、 比较机器学习模型和性能指标

5、 对最佳模型进行超参数调优

6、 评估测试集上的最佳模型

7、 解释模型的结果

8、 得出结论，并完成报告

1、 学习使用scikit-Learning和Tensorflow(这本书的Jupyter笔记本电脑可以免费在线免费使用)!【15】【16】

2、 统计学习介绍【17】

3、 Kaggle:数据科学和机器学习的发源地【18】

4、 很好的入门教程，用于实践数据科学编码【19】

5、 Coursera:免费和付费课程【20】

6、 Udacity:付费编程和数据科学课程【21】

1.https://mp.weixin.qq.com/s/KG3Euvj0OT02IuahjhswYA

2.https://mp.weixin.qq.com/s/nA30l8avTIzA6H8p81QOmg

3.https://github.com/WillKoehrsen/machine-learning-project-walkthrough

4.https://github.com/WillKoehrsen/machine-learning-project-walkthrough/blob/master/Machine%20Learning%20Project%20Part%203.ipynb

5.http://www.nyc.gov/html/gbee/html/plan/ll84_scores.shtml

7.http://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html

8.https://github.com/marcotcr/lime

9.https://pdfs.semanticscholar.org/ab4a/92795ee236632e6dbbe9338ae99778b57e1e.pdf

10.http://parrt.cs.usfca.edu/doc/rf-importance/index.html

11.http://scikit-learn.org/stable/modules/generated/sklearn.tree.export_graphviz.html

12.https://towardsdatascience.com/a-complete-machine-learning-project-walk-through-in-python-part-two-300f1f8147e2

13.https://www.oreilly.com/learning/introduction-to-local-interpretable-model-agnostic-explanations-lime

14.https://arxiv.org/pdf/1602.04938.pdf

15.http://shop.oreilly.com/product/0636920052289.do

16.https://github.com/ageron/handson-ml

17.http://www-bcf.usc.edu/~gareth/ISL/

18.https://www.kaggle.com/

19.https://www.datacamp.com/

20.https://www.coursera.org/

21.https://www.udacity.com/

https://towardsdatascience.com/a-complete-machine-learning-walk-through-in-python-part-three-388834e8804b

https://github.com/WillKoehrsen/machine-learning-project-walkthrough/blob/master/Machine%20Learning%20Project%20Part%203.ipynb

-END-

1687 篇文章311 人订阅

0 条评论

## 相关文章

30712

3485

1343

6.8K4

1863

8135

1292

### 学界 | 港中文AAAI录用论文详解：ST-GCN时空图卷积网络模型

AI 科技评论按：第 32 届 AAAI 大会（AAAI 2018）日前在美国新奥尔良进行，于当地时间 2 月 2 日至 7 日为人工智能研究者们带来一场精彩的...

5457

3073

4345