暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

几分钟搞定一个决策树展示的 Web 应用

alitrack 2021-08-07
1704

为了实现这个目的,我们需要以下两个包(及其依赖),

  • Streamlit
  • dtreeviz

Streamlit

  • Streamlit[1] 是一个开源 Python 库,可让您轻松创建和分享用于机器学习和数据科学的精美自定义 Web 应用程序。只需几分钟,您就可以构建和部署强大的数据应用程序 - 让我们开始吧!
  1. 确保您安装了 Python 3.6+[2]
  2. 使用PIP[3]安装 Streamlit 并运行“hello world”应用程序:
    pip install streamlitstreamlit hello
  3. 在接下来的几秒钟内,示例应用程序将在默认浏览器的新选项卡中打开。

开发自己应用程序也很简单:

  • 打开一个新的 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部分、模型训练、评估和预测,这样一个完成的机器学习模型就完成了。



参考资料

[1]

Streamlit: https://streamlit.io/

[2]

Python 3.6+: https://www.python.org/downloads/

[3]

PIP: https://pip.pypa.io/en/stable/installing/


文章转载自alitrack,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论