老规矩,先看效果
提到数据分析平台,我们可能会想到重量级的AWS和阿里云。 他们提供支持数据分析和机器学习的平台和服务。 我们今天分享的方法找传奇私服,主要针对没有前端知识,没有开发团队的业务人员,数据分析师,建模师,如何快速搭建一个数据分析和机器学习平台,让他们的日常工作更加方便。
生命是短暂的,我使用它。 没错,我们是用pure来建设的!
我们最初需要实现以下功能:
该软件非常轻巧且功能齐全。 这么多的功能特性,通常需要一个团队去开发。 但是有了它,我们一个小时就能搞定,因为本教程的代码不到100行! ! ! 先看效果:
核心工具
优点是我们不必重新发明轮子。 打造数据分析和机器学习平台,自然要找法宝。 并且是核心工具之一。
官方链接在这里:
工具对业务人员有两个好处:
准备环境
由于是基于解决方案vc小游戏开发实例教程,所以需要一个基本的IDE,我一般推荐,尤其是涉及到web开发或者项目开发的时候。
安装以下库并通过 pip 安装它们。
pip install streamlit
pip install streamlit_pandas_profiling
pip install pycaret
项目文件夹包含以下内容(文末提供源码):
辅助程序
首先导入需要的库,具体见代码。
import streamlit as st # 用于设计网页
import pandas as pd
from pandas_profiling import ProfileReport # 用于生成报表
from streamlit_pandas_profiling import st_profile_report # 用于在streamlit中显示报表
import os
import pycaret.classification as pc_cl # 自动机器学习分类
import pycaret.regression as pc_rg # 自动机器学习回归
import mlflow # 模型管理
接下来我们需要准备几个辅助函数,主要用来处理用户交互的一些细节。
def get_model_training_logs(n_lines = 10):
file = open('logs.log', 'r')
lines = file.read().splitlines()
file.close()
return lines[-n_lines:]
def list_files(directory, extension):
# list certain extension files in the folder
return [f for f in os.listdir(directory) if f.endswith('.' + extension)]
def concat_file_path(file_folder, file_selected):
# handle the folder path with '/' or 'without './'
# and concat folder path and file path
if str(file_folder)[-1] != '/':
file_selected_path = file_folder + '/' + file_selected
else:
file_selected_path = file_folder + file_selected
return file_selected_path
@st.cache(suppress_st_warning=True)
def load_csv(file_selected_path, nrows):
# load certain rows
try:
if nrows == -1:
df = pd.read_csv(file_selected_path)
else:
df = pd.read_csv(file_selected_path, nrows=nrows)
except Exception as ex:
df = pd.DataFrame([])
st.exception(ex)
return df
设计主程序
主程序包括网页相关的界面设计和用户操作响应,主要是选择合适的组件并触发相应的功能。
下图是网页侧边栏(功能栏)设计的组件选择。 侧边栏的设计是最重要的,因为它涉及到主要的功能模块,需要根据用户的操作执行相应的功能。
定义数据源和探索性分析
当勾选“ Data ”时,对应的功能被激活,用户可以进行后续操作:
if st.sidebar.checkbox('定义数据源'):
file_folder = st.sidebar.text_input('文件夹', value="data")
data_file_list = list_files(file_folder, 'csv')
if len(data_file_list) ==0:
st.warning(f'当路径无可用数据集')
else:
file_selected = st.sidebar.selectbox(
'选择文件', data_file_list)
file_selected_path = concat_file_path(file_folder, file_selected)
nrows = st.sidebar.number_input('行数', value=-1)
n_rows_str = '全部' if nrows == -1 else str(nrows)
st.info(f'已选择文件:{file_selected_path},读取行数为{n_rows_str}')
else:
file_selected_path = None
nrows = 100
st.warning(f'当前选择文件为空,请选择。')
探索性分析比较简单,只需一个按钮。 之后会调用-生成EDA的分析结果。
if st.sidebar.checkbox('探索性分析'):
if file_selected_path is not None:
if st.sidebar.button('一键生成报告'):
df = load_csv(file_selected_path, nrows)
pr = ProfileReport(df, explorative=True)
st_profile_report(pr)
else:
st.info(f'没有选择文件,无法进行分析。')
快速建模和记录
快速建模部分的核心是基于库。 我们之前介绍过图书馆。 它是一个非常强大的自动化机器学习工具,不仅支持回归分析和分类预测vc小游戏开发实例教程,还支持自然语言处理、规则关联、聚类和异常检测等学习任务。 ,下面的模块没有在这个demo中实现,但是实现起来并不难。
代码部分比较容易,没什么技巧可言,主要是一些细节,比如需要从读取的数据集中获取所有的列名,让用户选择自己想要的目标列。 另外,回归和分类算法支持的算法列表不一样,需要根据选择的任务动态获取算法列表。
最后是用户信息提醒,其中info、 等组件用于提供用户系统的状态信息。
通过配置,我们可以在日志中保存进程日志。
为了节省文章篇幅,代码见文末源码
模型管理和预测
是一个独立的、成熟的模型生命周期管理软件。 其中,模块可以记录每次操作的参数,操作的结果,保存模型,保存图纸等(当然记录下需要配置什么内容)。
模块是集成在里面的,所以我们只需要在调用创建模型的时候让系统调用来管理我们的运行记录即可。
这里我们会展示操作日志,当然我们可以通过网页查看更多的细节,比如模型信息,图纸等等。
如果需要查看服务器网页,需要在命令行输入以下代码启动:
mlflow ui
模型以pkl格式保存在 中,我们需要调用其中的函数来获取模型的信息。 与一般模型相比,该模型具有更多的(流水线模型)信息,可以用来对数据集进行预处理。
加载的模型支持方法,因此我们只需要输入数据集即可进行预测。 这里为了节省布局控件,我们继续使用“ Data ”的数据集进行预测。
为了节省文章篇幅,代码见文末源码
集成并运行程序
我们将以上所有与网页设计相关的代码都放在一个函数下,比如:
def app_main():
#上面的所有涉及网页的代码
然后设置程序的入口代码:
if __name__ == '__main__':
app_main()