上篇文章简单的介绍了streamlit的用法,本文将实战DNN回归的用法,后面会更新深度学习的其他算法。
页面效果
本次主要是实现在本地启动一个网页,在页面中上传数据集,并选择自变量和标签值,设置各种超参数实现DNN回归算法,最后将Loss值展示出来。如下:
动态效果如下:
实现过程
2.1 主体代码
DNN主体代码实现我们在前面有过说明,跳转
这里不过多的讲解,只是为了后面方便扩展和部署,将代码进行了封装和分配。
格式如下:
全部代码在GIt
2.2 streamlit代码讲解
启动网页的第一个页面是
一个上传数据的功能,这里目前仅支持csv,后面会做扩展
# 1、上传 文件
excel_file = st.file_uploader('上传CSV文件:', type='csv', key = "up_one")
if excel_file is not None:
data = files_read_excel(excel_file)
st.write("数据量: ", len(data))
st.file_uploader是用来上传文件的函数,type指定上传文件的类型,key可以认为是当前上传文件这个功能的一个ID,streamlit不允许同一类型的功能键重复,所以需要ID进行区分‘
如果同一功能出现多次会报错,大家可以自己试一下;所以在简单的页面上进行设置时,只设定不同的key值就可以了;但是如果在for循环中,就算设置了key也是不行的,还需要加上random函数这种才行,因为for循环运行时key还是会重复
上传完数据后需要选择自变量和标签值
col_options = [""] + list(data.columns)
selected_X = st.multiselect('请选择自变量字段:',col_options, key = "seld_two")
st.write(selected_X)
options_y = [item for item in col_options if item not in selected_X]
selected_y = st.selectbox(
"请选择标签值", options_y, key = "seld_three"
)
st.multiselect是多选框,第一个参数是展示的当前功能的说明文字,第二个参数是可选的内容,我们这里是将data的列全部写在这里,如下图;标签值的选择是将全部字段去除自变量后的内容,但是y值一般是单选的,所以使用st.selectbox。
变量选择完成后,页面将会展示模型训练的各种超参数:
# Train ratio slider
train_ratio = st.sidebar.slider('训练集比例', 0.1, 0.9, 0.8)
# Batch size slider
batch_size = st.sidebar.slider('批量大小', 1, 100, 32)
# Learning rate slider
learning_rate = st.sidebar.slider('学习率', 0.001, 0.1, 0.01)
# Epochs slider
epochs = st.sidebar.slider('Epochs', 10, 500, 100)
# Hidden layers and neurons input
num_hidden_layers = st.sidebar.slider('隐藏层层数', 1, 5, 2)
主要函数是st.sidebar.slider
sidebar是指将参数展示在左侧的边栏,因为是全局的参数所以在边栏更适合一点;去掉sidebar就是展示在中间的主区域。
st.sidebar.slider第一个参数是展示的功能说明文字;接下来是当前可选的最大值和最小值,最后一个参数是默认展示的值。
最后设置了一个按钮
create_button = st.button("开始训练")
点击开始训练开始按照epochs进行训练,并把每一个epochs训练的loss动态在折线图上展现出来,这个原理跟上篇文章介绍是一样的
训练过程如下:
done
持续更新