从零开始学习Dash和Plotly:基础学习

比较Plotly Dash 和 Streamlit 学习Python,到最后经常免不了要呈现你的数据成果,这时,构建基于Web的dashbord是个不错的方案,能够一举跨越版本的沟堑并解决界面的问题,能够将成果更广阔的散发出去。 那么,哪个库是最佳选择呢?Plotly Dash 和 Streamlit是这方面的两个新星,特别是后者,虽然晚于前者三年出现,但上升势头很快。 JP Hwang 2020年7月在他的博客中对二者进行了较为全面的对比,原文标题为《Plotly Dash vs Streamlit — Which is the best library 阅读详情

一、Dash基础概念

1. Dash应用基本结构

import dash
from dash import dcc, html
import plotly.express as px

# 创建Dash应用实例
app = dash.Dash(__name__)

# 定义布局
app.layout = html.Div([
    html.H1("我的第一个Dash应用"),
    dcc.Graph(
        id='example-graph',
        figure=px.line(x=[1,2,3], y=[4,1,2], title="简单折线图")
    )
])

# 运行应用
if __name__ == '__main__':
    app.run(debug=True)

2. 核心组件

  • html模块:提供HTML标签组件
    • html.Div:容器
    • html.H1到html.H6:标题
    • html.P:段落
    • html.Label:标签
  • dcc模块:提供交互式组件
    • dcc.Graph:图表
    • dcc.Slider:滑块
    • dcc.Dropdown:下拉菜单
    • dcc.Input:输入框

二、构图布局技巧

1. 基本布局原则

  • 垂直布局:组件默认从上到下排列
  • 水平布局:使用style={'display': 'flex'}实现
  • 响应式设计:使用百分比宽度

2. 布局示例

app.layout = html.Div([
    # 标题区域
    html.Div([
        html.H1("利率监控器", style={'textAlign': 'center'})
    ], style={'backgroundColor': '#f0f8ff', 'padding': '20px'}),
    
    # 控制面板(水平排列)
    html.Div([
        html.Div([
            html.Label("参数A"),
            dcc.Slider(id='slider-a', min=0, max=100, value=50)
        ], style={'flex': 1, 'padding': '10px'}),
        
        html.Div([
            html.Label("参数B"),
            dcc.Slider(id='slider-b', min=0, max=100, value=30)
        ], style={'flex': 1, 'padding': '10px'}),
    ], style={'display': 'flex', 'margin': '20px 0'}),
    
    # 图表区域(垂直排列)
    html.Div([
        dcc.Graph(id='chart-1'),
        dcc.Graph(id='chart-2')
    ])
])

3. 布局技巧

  • 使用卡片式设计:添加边框、阴影和圆角
  • 分组相关控件:使用Div包裹相关控件
  • 添加间距:使用margin和padding
  • 颜色搭配:使用柔和的专业配色

三、Plotly图表基础

1. 创建简单图表

import plotly.express as px

# 创建折线图
fig = px.line(
    x=[1, 2, 3, 4], 
    y=[10, 11, 12, 13],
    title="简单折线图",
    labels={'x': '季度', 'y': '收益率'}
)

# 创建柱状图
fig = px.bar(
    x=['Q1', 'Q2', 'Q3', 'Q4'],
    y=[95, 105, 110, 120],
    title="季度收益能力"
)

2. 图表美化

fig.update_layout(
    title_font_size=20,
    title_x=0.5,  # 标题居中
    plot_bgcolor='#f9f9f9',
    paper_bgcolor='#ffffff',
    xaxis_title="季度",
    yaxis_title="比率(%)",
    yaxis_range=[80, 150],  # Y轴范围
    shapes=[{  # 添加参考线
        'type': 'line',
        'x0': 0,
        'x1': 1,
        'y0': 100,
        'y1': 100,
        'xref': 'paper',
        'yref': 'y',
        'line': {'color': 'red', 'dash': 'dash'}
    }]
)

fig.update_traces(
    line=dict(width=3, color='blue'),
    marker=dict(size=10, color='green')
)

四、构图技巧详解

1. 布局结构设计

  1. 标题区域:清晰展示应用主题
  2. 控制面板:水平排列的参数控件
    • 使用卡片式设计增强视觉层次
    • 添加间距避免拥挤
  3. 图表区域:使用统一的设计风格

2. 视觉设计原则

  • 一致性:所有控件使用相似样式
  • 对比:使用不同颜色区分图表
  • 对齐:所有元素保持对齐
  • 留白:使用padding和margin创造呼吸空间
  • 层次:通过阴影和背景色创建层次感

3. 响应式设计

  • 使用flexWrap: 'wrap'确保小屏幕上控件自动换行
  • 使用百分比宽度而非固定像素
  • 图表高度使用视口高度单位(vh)

五、Dash 与 Plotly 学习路径思维导图

1. 基础知识准备

1. Python 基础
   - 数据类型和结构
   - 函数和类
   - 装饰器(回调基础)
   
2. Web 基础概念
   - HTML/CSS 基础
   - 客户端/服务器架构
   - JSON 数据格式

2. Plotly 核心知识

1. Plotly 图形对象
   - 基础图表类型:折线图、柱状图、散点图
   - 金融图表:K线图、面积图
   - 高级图表:子图、3D图表、地图

2. 图表定制化
   - 布局设置 (Layout)
   - 样式和主题
   - 交互功能:悬停提示、缩放、平移

3. 数据处理
   - 与Pandas/Numpy集成
   - 时间序列处理
   - 大型数据集优化

3. Dash 核心框架

1. Dash 应用结构
   - 应用初始化
   - 布局(Layout)系统
   - 组件(Components)体系

2. 核心组件库 (dcc)
   - 图形(Graph)组件
   - 交互组件:滑块、下拉菜单、输入框
   - 数据存储组件

3. HTML 组件 (html)
   - 基础HTML标签
   - 样式和CSS集成
   - 页面布局技巧

4. 回调(Callback)系统
   - 输入/输出机制
   - 状态管理
   - 链式回调
   - 防止重复回调

4. 高级功能

1. 多页应用
   - 页面路由
   - 导航设计
   - URL参数处理

2. 性能优化
   - 回调缓存
   - 大数据集处理
   - 异步加载

3. 样式和布局进阶
   - Bootstrap集成
   - 响应式设计
   - 自定义CSS

4. 部署和发布
   - 本地部署
   - 服务器部署
   - Dash企业版功能

5. 实战项目类型

1. 金融仪表板(如您提到的偿付比率监控器)
   - 时间序列可视化
   - 交互参数控制
   - 实时数据更新

2. 业务分析看板
   - 多维度数据筛选
   - 交叉分析功能
   - 数据导出

3. 科学数据可视化
   - 3D模型展示
   - 大型数据集渲染
   - 交互式探索

4. 实时监控系统
   - 自动更新机制
   - 警报和通知
   - 历史数据回溯

6. 学习资源推荐

1. 官方文档
   - Plotly Python文档
   - Dash核心文档
   - Dash组件文档

2. 社区资源
   - Plotly社区论坛
   - GitHub示例库
   - Stack Overflow标签

3. 实践平台
   - 本地开发环境
   - Jupyter Notebook集成
   - 云部署平台

7. 学习建议时间规划

  1. 第一阶段:基础入门(1-2周)

    • 掌握Plotly基础图表绘制
    • 了解Dash应用基本结构
    • 创建简单静态仪表板
  2. 第二阶段:交互功能(2-3周)

    • 学习回调系统
    • 实现用户交互功能
    • 处理多输入多输出场景
  3. 第三阶段:高级应用(3-4周)

    • 优化应用性能
    • 设计多页应用
    • 掌握部署方法
  4. 第四阶段:项目实战(持续)

    • 完成综合项目
    • 解决实际业务问题
    • 参与开源项目贡献
import dash
from dash import dcc, html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd
i
mport numpy as np

# 初始化Dash应用
app = dash.Dash(__name__)

# 1. 应用布局
app.layout = html.Div([
    # 标题区域
    html.Div([
        html.H1("资产负债率监控器", 
                style={'textAlign': 'center', 'color': '#2c3e50', 'marginBottom': '20px'})
    ], style={'backgroundColor': '#f8f9fa', 'padding': '20px', 'borderRadius': '10px'}),
    
    # 控制面板 - 使用Flex布局水平排列
    html.Div([
        # 初始资产负债率
        html.Div([
            html.Label("初始资产负债率 (%)", style={'fontWeight': 'bold', 'marginBottom': '5px'}),
            dcc.Slider(
                id='initial-ratio',
                min=100,
                max=300,
                step=5,
                value=250,
                marks={i: str(i) for i in range(100, 501, 50)},
                tooltip={"placement": "bottom", "always_visible": True}
            )
        ], style={'flex': 1, 'padding': '15px', 'backgroundColor': '#ffffff', 'borderRadius': '8px', 'boxShadow': '0 2px 4px rgba(0,0,0,0.1)'}),
        
        # 利率基准控制
        html.Div([
            html.Label("利率基准 (%)", style={'fontWeight': 'bold', 'marginBottom': '5px'}),
            dcc.Slider(
                id='base-rate',
                min=0,
                max=10,
                step=0.1,
                value=3.5,
                marks={i: f"{i}%" for i in range(0, 11, 2)},
                tooltip={"placement": "bottom", "always_visible": True}
            )
        ], style={'flex': 1, 'padding': '15px', 'backgroundColor': '#ffffff', 'borderRadius': '8px', 'boxShadow': '0 2px 4px rgba(0,0,0,0.1)', 'marginLeft': '10px'}),
        
        # 利率波动率控制
        html.Div([
            html.Label("利率波动率", style={'fontWeight': 'bold', 'marginBottom': '5px'}),
            dcc.Slider(
                id='rate-volatility',
                min=0,
                max=2,
                step=0.1,
                value=0.5,
                marks={i: str(i) for i in [0, 0.5, 1, 1.5, 2]},
                tooltip={"placement": "bottom", "always_visible": True}
            )
        ], style={'flex': 1, 'padding': '15px', 'backgroundColor': '#ffffff', 'borderRadius': '8px', 'boxShadow': '0 2px 4px rgba(0,0,0,0.1)', 'marginLeft': '10px'}),
        
        # 经济情景选择
        html.Div([
            html.Label("经济情景", style={'fontWeight': 'bold', 'marginBottom': '5px'}),
            dcc.Dropdown(
                id='scenario',
                options=[
                    {'label': '乐观', 'value': 'optimistic'},
                    {'label': '中性', 'value': 'neutral'},
                    {'label': '悲观', 'value': 'pessimistic'}
                ],
                value='neutral',
                clearable=False,
                style={'width': '100%'}
            )
        ], style={'flex': 1, 'padding': '15px', 'backgroundColor': '#ffffff', 'borderRadius': '8px', 'boxShadow': '0 2px 4px rgba(0,0,0,0.1)', 'marginLeft': '10px'}),
    ], style={
        'display': 'flex',
        'margin': '20px 0',
        'flexWrap': 'wrap'  # 在小屏幕上自动换行
    }),
    
    # 图表区域 - 垂直排列
    html.Div([
        # 资产负债率图表
        dcc.Graph(id='solvency-chart', style={'height': '45vh', 'marginBottom': '20px'}),
        
        # 利率变化图表
        dcc.Graph(id='interest-chart', style={'height': '45vh'})
    ], style={
        'padding': '20px',
        'backgroundColor': '#ffffff',
        'borderRadius': '10px',
        'boxShadow': '0 4px 6px rgba(0,0,0,0.1)'
    })
], style={
    'fontFamily': 'Arial, sans-serif',
    'maxWidth': '1200px',
    'margin': '0 auto',
    'padding': '20px',
    'backgroundColor': '#f0f2f5'
})

# 2. 数据处理函数
def generate_data(initial_ratio, base_rate, rate_volatility, scenario):
    """
    生成模拟的金融数据
    """
    # 创建20个季度的时间序列
    quarters = pd.date_range(start='2025-01-01', periods=20, freq='QE')
    
    # 生成利率数据 - 使用随机游走模型
    np.random.seed(42)  # 确保结果可重现
    rate_changes = np.random.normal(0, rate_volatility, 20)
    interest_rates = base_rate + np.cumsum(rate_changes)
    
    # 生成资产负债率数据
    solvency_ratios = [initial_ratio]
    
    for i in range(1, 20):
        # 基础变化(随机波动)
        change = np.random.normal(0, 5)
        
        # 根据情景调整
        if scenario == 'optimistic':
            change += np.random.uniform(0, 3)  # 乐观情景下增加
        elif scenario == 'pessimistic':
            change -= np.random.uniform(0, 3)  # 悲观情景下减少
        
        # 根据利率变化调整
        interest_change = interest_rates[i] - interest_rates[i-1]
        change -= interest_change * 5  # 假设利率每上升1%,资产负债率下降5%
        
        new_ratio = solvency_ratios[-1] + change
        # 确保资产负债率在合理范围内
        solvency_ratios.append(max(100, min(new_ratio, 300)))
    
    # 创建DataFrame
    df = pd.DataFrame({
        '季度': quarters,
        '资产负债率': solvency_ratios,
        '利率': interest_rates
    })
    
    return df

# 3. 回调函数 - 连接输入和输出
@app.callback(
    [Output('solvency-chart', 'figure'),
     Output('interest-chart', 'figure')],
    [Input('initial-ratio', 'value'),
     Input('base-rate', 'value'),
     Input('rate-volatility', 'value'),
     Input('scenario', 'value')]
)
def update_charts(initial_ratio, base_rate, rate_volatility, scenario):
    # 生成数据
    df = generate_data(initial_ratio, base_rate, rate_volatility, scenario)
    
    # 创建资产负债率图表
    solvency_fig = px.line(
        df, 
        x='季度', 
        y='资产负债率',
        title='5年资产负债率变化',
        labels={'资产负债率': '(%)'},
        template='plotly_white'
    )
    
    # 美化资产负债率图表
    solvency_fig.update_layout(
        yaxis_range=[100, 300],
        shapes=[{
            'type': 'line',
            'x0': df['季度'].min(),
            'x1': df['季度'].max(),
            'y0': 150,
            'y1': 150,
            'line': {'color': 'red', 'dash': 'dash', 'width': 2},
        }],
        annotations=[
            dict(
                x=df['季度'].max(), 
                y=200, 
                text="监管最低要求", 
                showarrow=False, 
                xshift=10, 
                bgcolor="white", 
                font=dict(size=12)
            )
        ],
        hovermode='x unified',
        title_font_size=20,
        title_x=0.5
    )
    solvency_fig.update_traces(
        line=dict(width=3, color='#3498db'),
        mode='lines+markers',
        marker=dict(size=8, color='#2980b9')
    )
    
    # 创建利率图表
    interest_fig = px.line(
        df, 
        x='季度', 
        y='利率',
        title='5年利率变化',
        labels={'利率': '利率 (%)'},
        template='plotly_white'
    )
    
    # 美化利率图表
    interest_fig.update_traces(
        line=dict(width=3, color='#27ae60'),
        mode='lines+markers',
        marker=dict(size=8, color='#2ecc71')
    )
    interest_fig.update_layout(
        hovermode='x unified',
        title_font_size=20,
        title_x=0.5
    )
    
    return solvency_fig, interest_fig

# 4. 运行应用
if __name__ == '__main__':
    app.run(debug=True, port=8050)

使用说明

  1. 安装所需库:
pip install dash plotly pandas numpy
  1. 运行程序:
python app.py
  1. 在浏览器中打开 http://127.0.0.1:8050/
Python系列之:Dash入门与大数据可视化 本文介绍了如何使用Dash框架来构建大数据可视化应用。我们通过一个简单的示例演示了如何创建一个包含表单和图表的Dash应用,并使用回调函数来更新图表内容。通过使用Dash框架,您可以轻松地构建交互式的大数据可视化应用,以便更好地理解和分析数据。希望本文对您入门Dash和大数据可视化应用有所帮助。如果您想进一步学习和探索Dash框架的功能和应用,请参阅官方文档和示例代码。祝您在大数据可视化的旅程中取得成功!以上就是使用Dash框架构建大数据可视化应用的示例代码和说明。希望对您有所帮助! 阅读详情

相关推荐

别再纠结VS还是VSCode了!新手C#环境搭建保姆级指南(含.NET Core安装验证)

本文为C#新手提供Visual Studio与VS Code的深度对比及环境搭建指南,涵盖.NET Core安装验证、工具选择决策框架及实战配置技巧。帮助开发者根据项目需求选择合适工具,快速搭建高效开发环境,提升编码效率。

weixin_30455023的博客 561

【python】小白也能懂的Dash从入门到实战秘籍

通过这篇教程,我们深入学习了 Dash 框架,从基础概念到实际应用,全面了解了它在数据可视化领域的强大能力。我们了解到 Dash 是基于 Python 的开源框架,能轻松构建交互式数据可视化 Web 应用,无需复杂前端知识。通过安装和配置环境,我们创建了第一个 Dash 应用,初步领略了其简洁易用的特性。在核心组件部分,详细学习了布局组件、核心组件和扩展组件,掌握了如何构建美观且功能丰富的界面 。

大雨淅淅的博客 1万+

DELPHI11 利用Android手机实现条码扫描功能

好了,整个过程全部结束,当然这只是最简单的例子,只是演示一下如何识别条码,更多的条码处理功能,比如优化,提速等需要在后面继续。安装过程中所有提示框全部按OK就可以,直到提示安装成功,那么ZXing库就成功完成了安装。点击红框标识的文件夹图标,将下载的ZXing库文件路径加入进来后,点ADD。第三步:选择下载的ZXing库路径,并按Ctrl + A进行全选,并导入。至此为止,我们的库才算是全部安装完成,可以在DELPHI 中正常引用了。2.打开相机,识别条码,并将条码内容显示在MEMO1中。

1531

dash入门

Dash是一个用于构建交互式数据可视化应用的Python框架,由Plotly公司开发。它允许用户快速创建基于Web的应用程序,支持动态更新和用户交互。通过以上步骤,你可以快速入门Dash,并开始构建自己的交互式数据可视化应用。不断实践和探索官方文档及社区资源将帮助你更深入地掌握Dash的各种功能和技巧。

鸭梨的博客 855

基于云平台的ATS系统微服务架构方案研究

在当前智慧地铁的升级转型过程中,城市轨道交通ATS系统面临着稳定性差、运维方 式繁琐和故障应急处理效率低等问题。为此,提出一种基于云平台的ATS系统微服务架构方案; 研究了ATS系统在云平台上的微服务总体架构、ATS应用的微服务划分和设计、容器部署方式 及通信交互模式,可实现系统松耦合和易扩展,达到节约计算资源、提高系统稳定性和运营效 率的目的

mi_lan1的博客 966

Cadence OrCAD Capture 软件自带元件原理图符号库目录与介绍图文视频教程

硬件工程师在开始原理图设计时,应该首先拥有自己的元件原理图符号库。基于Capture进行原理图设计的一个很大的优点就是,软件自带的元件库比较全。本文简单介绍Capture软件自带元件库。

fydar的博客 5579

dash学习(公开文档)

dash嵌套pyechart的html文件。

weixin_51585624的博客 575

Python爬虫实战:Boss直聘职位数据采集实战 - Playwright + 结构化解析完整方案(附CSV导出 + SQLite持久化存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 2189

【Python】Dash简单介绍

简单介绍Dash是一个基于FlaskPoltly.js以及React.js的Python框架,由plotly公司开发,设计之初是为了帮助数据分析人员进行快速的数据可视化网页搭建。现时Dash已经是一个相当成熟的框架,拥有丰富的社区资源与生态。1、简单介绍由于Dash是基于Flask框架建立的,其运行方式与执行逻辑和Flask是大同小异的。但Flask需要自己处理前后端的连接,且对前端后端知识有一定的了解,这对数据人员来说并不友好。Dash则将前端后端集成在一起,只需写简单的回调就能实现交互功能。

Ashley的小窝 8184

【论文精读】《Towards Deep Learning Models Resistant to Adversarial Attacks》

本文探讨了深度学习模型在面对对抗性攻击时的脆弱性,并提出了一种基于鲁棒优化的方法来增强神经网络的对抗鲁棒性。通过鞍点优化框架,作者提供了对抗攻击和防御机制的统一视角,并在MNIST和CIFAR-10数据集上验证了其方法的有效性。对抗训练的核心思想是将对抗样本引入训练过程,使模型能够学习到对抗样本的特征,从而提升其鲁棒性。本文通过鞍点优化框架提出了一种基于鲁棒优化的对抗训练方法,显著提升了深度学习模型的对抗鲁棒性。本文为深度学习模型的对抗鲁棒性研究提供了新的理论和实证支持,同时为未来研究指明了方向。

nmdbbzcl的博客 613

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2025

python可视化库plotly生态简介(plotly, plotly_express, dash)

python可视化 plotly, plotly_express, dash介绍安装plotlyplotly_expressdash绘制地图总结 介绍 plotly python是python的绘图工具,是plotly.js的python封装。plotly有很多子项目,官网为https://plot.ly/。目前工作中接触到的有3个小项目: plotly: 是绘图基础库,它可以非常细致的调整绘图...

weixin_42460920的博客 8891

华为OD机试双机位B卷 - 比赛的冠亚季军 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位B卷 比赛的冠亚季军,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 比赛的冠亚季军

qq_45776114的博客 703

通过Plotly Dash进行仪表板设计的步骤和技巧

通过自定义 CSS 样式,可以使得你的仪表板更加美观和易于使用。})在本文中,我们深入探讨了如何使用 Plotly Dash 创建仪表板的步骤和一些技巧。我们从导入必要的库开始,创建了一个基本的 Dash 应用程序,并设计了仪表板的布局。接着,我们介绍了一些技巧,如使用 Markdown 添加文本、利用回调函数实现交互、自定义样式以及构建多页面应用。随后,我们讨论了如何将你的仪表板部署到服务器,使得其他人可以通过互联网访问和交互。

一键难忘的博客 3869

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

利用Python进行数据可视化Plotly与Dash的应用

数据可视化是数据分析中至关重要的一环,它能够帮助我们更直观地理解数据并发现隐藏的模式和趋势。在Python中,有许多强大的工具可以用来进行数据可视化,其中Plotly和Dash是两个备受欢迎的选择。Plotly提供了丰富多样的交互式绘图功能,而Dash则是一个用于构建交互式Web应用的Python框架。本文将介绍如何使用Plotly和Dash进行数据可视化,并通过案例代码展示其应用。

一键难忘的博客 4101

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Plotly 和 Dash 智能仪表盘和数据应用(一)

Plotly 的 Dash 框架允许 Python 程序员开发完整的分析数据应用程序和交互式仪表板。本书将帮助你探索 Dash 在不同方式下可视化数据的功能,并从数据中获取最大的价值。你将从 Dash 生态系统、主要包及可用的第三方包(这些对于构建和结构化应用程序的不同部分至关重要)的概述开始。接下来,你将学习如何创建一个基础的 Dash 应用程序并为其添加不同的功能。然后,你将集成如下拉框、复选框、滑块、日期选择器等控件,并将它们与图表和其他输出连接。

龙哥盟 1613

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Plotly 和 Dash 智能仪表盘和数据应用(二)

字典的键将作为value属性使用,而字典的值将是用户在每个贫困水平上看到的内容。对于我们的情况,这就足够了,我们可以按此使用。我们还可以选择性地自定义标签的样式,这可以是任何 CSS 属性的字典。如果你查看图 6.21,你会看到两个滑块的刻度(数字)颜色非常浅,可能会给人一种它们属于同一个滑块的印象。我们可以通过将它们的颜色设置为深色来改进这一点。我们还可以为指标滑块设置粗体字体。这有助于将它们与年份区分开来,并且也能突出它们的独特性。年份是容易立即理解的,但用户很可能不熟悉数据集中追踪的贫困水平。

龙哥盟 1802

Plotly + Dash:构建交互式数据仪表盘的艺术与实战

本文深入解析了使用Python的Dash框架构建企业级交互式数据仪表盘的全流程方案。内容涵盖Dash架构设计、回调函数机制、实时数据处理、多页面应用开发等核心技术,通过架构图和代码案例展示了生产级可视化应用的实现方法。文章重点剖析了Dash的核心优势:统一的Python技术栈、完全可定制的交互逻辑、毫秒级实时数据更新能力,以及从本地到云端的灵活部署方案。针对企业级需求,提供了性能优化技巧、故障排查指南和完整的学习路径建议,为数据工程师提供了从入门到精通的Dash解决方案。

七夜zippoe的博客 1251

使用 Plotly Dash 构建交互式数据仪表板

总的来说,本文介绍了如何使用 Plotly Dash 构建交互式数据仪表板。我们从一个简单的例子开始,逐步扩展了仪表板的功能,包括添加颜色和大小选择功能、不同类型的图表选择功能以及多个数据集的选择功能。通过这些例子,读者可以学习如何使用 Dash 的核心组件和回调函数来构建自己的数据仪表板,并根据需要添加交互功能和多样化的数据可视化。Plotly Dash 是一个强大的 Python 框架,可以帮助用户轻松构建交互式数据仪表板。

一键难忘的博客 3321

Plotly基础教程

简单介绍Plotly的基本使用。

周先森爱吃素的博客 3万+

Plotly 和 Dash 智能仪表盘和数据应用(三)

我们首先介绍了回调函数装饰器中的可选State参数。我们展示了如何将其与Input结合使用,从而延迟执行函数,直到用户决定执行它们。我们还运行了几个示例,添加了按钮来触发执行。然后,我们创建了一个简单的应用,其中用户对某个组件的输入用于动态填充另一个“等待”组件的选项。这些新选项反过来又被用于创建另一个组件。另一个有趣的应用是允许用户添加具有动态内容的新组件。我们最终介绍了最强大和最灵活的功能——模式匹配回调。我们创建了一个应用,用户可以添加任意多的图表,而且这些图表相互独立,用户可以定制自己的仪表盘。

龙哥盟 1018

Dash-Mantine-Components完全指南:如何用Mantine组件构建高颜值Plotly Dash应用

Dash-Mantine-Components(DMC)是一个基于Mantine React组件库的Plotly Dash组件库,它为开发者提供了丰富的UI组件,帮助快速构建高颜值、交互友好的数据可视化应用。无论是新手还是有经验的开发者,都能通过DMC轻松实现专业级别的前端界面设计。 [![Dash Mantine Components Logo](https://raw.gitcode.com

gitblog_00014的博客 928

【无标题】Plotly 和 Dash 智能仪表盘和数据应用(二)

现在我们将探讨一种最通用、最有用且无处不在的图表类型——散点图。顾名思义,我们基本上是在笛卡尔平面上散布标记(可以是点、方块、圆圈、气泡或其他符号),其中它们的水平和垂直距离表达它们所代表的数值。其他视觉属性,如大小、颜色和符号,可能会用来表示其他属性,正如我们在一些前面的示例中看到的那样。由于大多数关于图形和创建图表的基础知识已经涵盖过,我们不会花太多时间在这方面,而是专注于散点图的具体细节和可用选项。我们还将探索并使用滑块这一新的交互式组件。我们现在就开始,但首先,以下是我们将要涵盖的主题:了解使用散点

龙哥盟 1849

Dash+Plotly | Web应用开发(1)

本文为https://github.com/CNFeffery/DataScienceStudyNotes的学习笔记,部分源码来源于此仓库。本期内容主要为和。

tangbiubiu的博客 1927

Pixelle-Video 安装指南:Windows 一键整合、源码与 Docker 三条路线,哪条最快跑通 AI 短视频引擎

Pixelle-Video 输入一个主题,就能自动写文案、生成配图、合成解说与配乐,输出一条完整短视频。本文带你完成 Pixelle-Video 安装:Windows 走一键整合包,macOS/Linux 走源码,服务器走 Docker。 ## 一图选路:三种安装方式对比 选型前先把前提摆清楚:这个项目对硬件没有硬门槛,不需要 GPU;只有当你想在本地跑 ComfyUI 做生成时才建议配备 N

gitblog_00778的博客 1083
上一篇: Excel VBA 自动生成文件夹框架
下一篇: Python 比较两个文件夹中同名CSV文件的内容
偷心伊普西隆
博客等级 码龄7年 511粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值