为了实现这个目的,我们需要以下两个包(及其依赖),
-
Streamlit -
dtreeviz
Streamlit
-
Streamlit[1] 是一个开源 Python 库,可让您轻松创建和分享用于机器学习和数据科学的精美自定义 Web 应用程序。只需几分钟,您就可以构建和部署强大的数据应用程序 – 让我们开始吧!
-
确保您安装了 Python 3.6+[2] 。 -
使用PIP[3]安装 Streamlit 并运行“hello world”应用程序: pip install streamlit
streamlit hello -
在接下来的几秒钟内,示例应用程序将在默认浏览器的新选项卡中打开。
开发自己应用程序也很简单:
-
打开一个新的 Python 文件(假设叫 hello.py),导入 Streamlit,并编写一些代码
import streamlit as st
st.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 st
from sklearn.datasets import *
from sklearn import tree
import base64
from 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/
原文始发于微信公众号(alitrack):几分钟搞定一个决策树展示的 Web 应用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/62922.html