为了实现这个目的,我们需要以下两个包(及其依赖),
Streamlit dtreeviz
Streamlit
Streamlit[1] 是一个开源 Python 库,可让您轻松创建和分享用于机器学习和数据科学的精美自定义 Web 应用程序。只需几分钟,您就可以构建和部署强大的数据应用程序 - 让我们开始吧!
确保您安装了 Python 3.6+[2] 。 使用PIP[3]安装 Streamlit 并运行“hello world”应用程序: pip install streamlitstreamlit hello在接下来的几秒钟内,示例应用程序将在默认浏览器的新选项卡中打开。
开发自己应用程序也很简单:
打开一个新的 Python 文件(假设叫 hello.py),导入 Streamlit,并编写一些代码
import streamlit as stst.write('Hello Wold')
运行文件:
streamlit run hello.py
一个最简单的 Streamlit web 应用就好了。
dtreeviz
我在如何更优雅地可视化决策树中已经介绍了 dtreeviz,并在 上一篇文章介绍了中文支持的解决办法。稍后一篇文章会介绍一种更简答的办法(免安装字体)
Streamlit + dtreeviz=Decision Tree BI App
要实现决策树图Web应用的展示,需要分3步完成,
生成决策树模型(如果已经生成,可以选择load) 使用 dtreeviz 画决策树 streamlit 输出 SVG
import streamlit as stfrom sklearn.datasets import *from sklearn import treeimport base64from dtreeviz.trees import *def decisionTreeViz(): #生成决策树模型 classifier = tree.DecisionTreeClassifier(max_depth=3) iris = load_iris() classifier.fit(iris.data, iris.target) class_names=['setosa', 'versicolor', 'virginica'] # 使用dtreeviz画决策树 viz = dtreeviz(classifier, iris.data, iris.target, target_name='variety', feature_names=iris.feature_names, class_names=class_names # need class_names for classifier ) return viz# 用streamlit渲染SVG(支持SVG输出)def svg_write(svg, center=True): """ Disable center to left-margin align like other objects. """ # Encode as base 64 b64 = base64.b64encode(svg.encode("utf-8")).decode("utf-8") # Add some CSS on top css_justify = "center" if center else "left" css = f'<p style="text-align:center; display: flex; justify-content: {css_justify};">' html = f'{css}<img src="data:image/svg+xml;base64,{b64}"/>' # Write the HTML st.write(html, unsafe_allow_html=True)viz=decisionTreeViz()svg=viz.svg()svg_write(svg)

这同时是一个演示如何巧妙地让Streamlit输出SVG的解决方案。
在这个基础上,还可以方便地添加EDA部分、模型训练、评估和预测,这样一个完成的机器学习模型就完成了。
参考资料
Streamlit: https://streamlit.io/
[2]Python 3.6+: https://www.python.org/downloads/
[3]PIP: https://pip.pypa.io/en/stable/installing/




