森林野火故事2.0:一眼看穿!使用 Panel和hvPlot可视化

Python数据可视化交互式HvPlot库 HvPlot 是基于 HoloViews 的高层抽象绘图库,但它提供了更为直接和方便的API,使得创建复杂的交互式图表变得简单快捷。HvPlot 可以与 Pandas、xarray 等数据处理库无缝集成,并且支持 Bokeh、Matplotlib 等多种绘图后端,允许用户根据需要制作静态或交互式图表。 阅读详情

💡 作者:韩信子@ShowMeAI
📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40
📘 本文地址:https://www.showmeai.tech/article-detail/335
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

📘Panel 是 Python 中一个非常棒的可以用作制作数据仪表板的工具库,基于它可以轻松构建数据可视化看板。

在本篇内容中,ShowMeAI 综合 Python 可视化与呈现技能,使用 Panel 制作一个仪表盘看板,可以交互查看美国野火记录的信息。

💡导入工具库

我们本次需要用到的工具库包括数据库工具、Python 数据处理工具、可视化工具和看板工具,我们先把这些工具库导入,代码如下:

# 数据库
import sqlite3

# 数据处理
import numpy as np
import pandas as pd

# 可视化与仪表盘
import holoviews as hv 
import colorcet as cc
import panel as pn

from holoviews.element.tiles import EsriImagery
from datashader.utils import lnglat_to_meters
import hvplot.pandas
hv.extension('bokeh')

💡数据准备

用于本次可视化的数据集包含 1992 年至 2015 年间在美国发生的超过 180 万起野火。🏆美国野火数据集可以在 ShowMeAI 的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [28]基于Panel和hvPlot的可视化交互看板实战案例 『美国野火 FPA_FOD_20170508.sqlite 数据集』

⭐ ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub

我们希望构建一个数据仪表板,帮助我们更好地了解导致这些野火的原因、发生地点等信息。我们导入数据并选出需要的信息,代码如下:

# 连接数据库
conn = sqlite3.connect('../data/FPA_FOD_20170508.sqlite')

# 选取信息:经纬度、原因描述、火势大小与等级、日期、所在州、年份 等
df = pd.read_sql_query("SELECT LATITUDE, LONGITUDE, STAT_CAUSE_DESCR, FIRE_SIZE, FIRE_SIZE_CLASS, DISCOVERY_DATE, CONT_DATE, STATE, FIRE_YEAR FROM fires", conn)

# 数据中有一些不在美国的记录,删除它们
df = df.loc[(df.loc[:,'STATE']!='AK') & (df.loc[:,'STATE']!='HI') & (df.loc[:,'STATE']!='PR')]

# 计算野火持续时间
df['BURN_TIME'] = df['CONT_DATE'] - df['DISCOVERY_DATE']

# 查看数据
df.head()

💡野火地图

我们先把所有历史火灾绘制成热度地图,这样我们可以直观看到空间分布。借助 📘hvPlot 可以很容易完成(它利用 Datashader 来栅格化我们的 180 万个点,使得它们更易于渲染)。

具体的代码如下:

map_tiles = EsriImagery().opts(alpha=0.5, width=700, height=480, bgcolor='black')
plot = df.hvplot(
    'LONGITUDE', 
    'LATITUDE', 
    geo=True,
    kind='points', 
    rasterize=True, 
    cmap=cc.fire, 
    cnorm='eq_hist',  
    colorbar=True).opts(colorbar_position='bottom', xlabel='', ylabel='')
map_tiles * plot

简单的一组代码即可实现上述可视化结果,hvPlot 是一个非常棒的空间可视化工具库,它利用了其他 📘Holoviz 库——📘Holoviews、📘Geoviews、📘Datashader 和 📘Colorcet,所以可以极大简化创建大型数据集的交互式地图所需步骤。

💡带时间滑块的仪表板

Panel 的小部件让我们可以访问各种方法来操作和切分我们的数据子集可视化,例如对时间序列数据可切分:加入选择年份的滑块。

使用 Panel 制作这种仪表板,分为3个步骤:

  • ① 定义一个小部件,例如用于选择年份或下拉列表的整数滑块。
  • ② 定义一个绘图函数,将滑块中的年份值作为输入。
  • ③ 布局和渲染我们的仪表板。
# 为时间序列构建滑动小组件
year = pn.widgets.IntSlider(name='Year Slider', width=300,
                                 start=1992, end=2015, value=(1993),
                                 step=1,value_throttled=(1993))

# 展示当前年份
@pn.depends(year.param.value_throttled)
def year_selected(year):
    return '## Wildfires Across the US in {}'.format(year)

# 实际绘图函数
@pn.depends(year.param.value_throttled)
def plot_map(year):
    year_df = df[df['FIRE_YEAR'] == year].copy()
    plot = year_df.hvplot(
        'LONGITUDE', 
        'LATITUDE', 
        geo=True,
        kind='points', 
        rasterize=True, 
        cmap=cc.fire, 
        cnorm='eq_hist',  
        colorbar=True).opts(colorbar_position='bottom', xlabel='', ylabel='')
    return map_tiles * plot


dashboard = pn.WidgetBox(pn.Column(pn.Row(year_selected, year),
                         pn.Row(pn.bind(plot_map, year)), align="start",
                         sizing_mode="stretch_width"))

💡更简单的构建方式

当我们的绘图只有一个小部件要显示时,有一种更简单的方式:我们可以改为使用.interactive制作我们的 DataFrame 和数据管道的交互式副本。

下面我们用一个示例来演示如何使用这个方法:这次我们的条件是『火灾的原因』,我们让地图只显示每个原因下的火灾。

select_cause = pn.widgets.Select(
    options = df['STAT_CAUSE_DESCR'].value_counts().index.tolist(),
    name = 'Cause')

# 动态交互
dfi = df.interactive


iplot = dfi[dfi['STAT_CAUSE_DESCR']==select_cause].hvplot(
    'LONGITUDE', 
    'LATITUDE', 
    geo=True,
    kind='points', 
    rasterize=True, 
    cmap=cc.fire, 
    cnorm='eq_hist',  
    colorbar=True).opts(colorbar_position='bottom', xlabel='', ylabel='', title='Wildfires by Cause from 1992-2015') 


map_tiles.opts(level='underlay') * iplot

💡组合仪表板

我们可以构建更强大的组合仪表盘,它让我们能够同时查看数据的多个维度信息。下面我们创建一些可视化图例,然后使用 Panel 将它们组合在一起。

💦 火势大小

我们先绘制每个规模等级发生的火灾数量:野火按燃烧区域的大小进行分类,A 级最小,G 级最大。

@pn.depends(year.param.value_throttled)
def plot_class(year):
    year_df = df[df['FIRE_YEAR'] == year].copy()
    count_df = pd.DataFrame(year_df.groupby('FIRE_SIZE_CLASS').size(), columns=['Count'])
    count_df['Fire Class'] = count_df.index
    return count_df.hvplot.bar(x='Fire Class', y='Count', c='Fire Class', cmap='fire', 
                legend=False).opts(xlabel="Fire Size Class", ylabel="Number of Fires",
                title="Wildfires in {} Grouped by Size Classification".format(year))
              
plot_class(2006)

注意到上述绘图函数将『年份』作为参数,这样它可以在滑块值更改时对数据进行子集切分和呈现。拿到对应的数据子集后,我们把它按大小分类进行分组,并使用.size()计算每组的火灾次数。

💦 起火原因 & 持续时长

下面我们对『起火原因和对应的持续时长』进行分析可视化(注意,这里和上面的模块一样,也是传入年份作为参数,这样我们最后的组合绘图,可以有统一的数据子集切分方式)。

@pn.depends(year.param.value_throttled)
def plot_cause_burn(year):
    year_df = df[df['FIRE_YEAR'] == year].copy()
    caused_df = pd.DataFrame(year_df.groupby('STAT_CAUSE_DESCR')[['BURN_TIME']].mean().sort_values('BURN_TIME'))
    caused_df['Fire Cause'] = caused_df.index
    return caused_df.hvplot.barh(x='Fire Cause', y='BURN_TIME', 
                                 c='Fire Cause', cmap='fire_r', legend=False).opts(
                                 ylabel="Burn Time (Days)",
                                 title="Wildfire Burn time Grouped by Cause in {}".format(year))
                
                
plot_cause_burn(2003)

💦 起火原因 & 火灾数量

下面我们对『起火原因和对应的数量』进行分析可视化。

@pn.depends(year.param.value_throttled)
def plot_cause_count(year):
    year_df = df[df['FIRE_YEAR'] == year].copy()
    caused_df = pd.DataFrame(year_df.groupby('STAT_CAUSE_DESCR').size(), columns=['Count']).sort_values('Count')
    caused_df['Fire Cause'] = caused_df.index
    return caused_df.hvplot.barh(x='Fire Cause', y='Count', 
                                 c='Fire Cause', cmap='fire_r', 
                                 legend=False).opts(ylabel="Number of Fires",
                                 title="Number of Wildfires Grouped by Cause in {}".format(year))
                              
plot_cause_count(2003)

对比上图,我们可以看到一些有趣差异,例如:

  • 吸烟带来第2燃烧时长的野火,而它在引发的野火总数中排名第9。
  • 除了闪电之外,燃烧时间最长的火灾并不是最频繁发生的火灾。

这也解释了为什么野火难以扑灭,它们通常发生在更偏远的地方,很难及早控制。闪电、吸烟和营火都有可能在这些地区引发火灾,因为那里有大量木材可燃烧,而周围很少有人在早期发现迹象并报告烟雾。

也有一些年份看起来完全不同,例如 2006 年,电力线故障导致大火平均燃烧数天。如下图所示:

pn.Row(plot_cause_count(2006) , plot_cause_burn(2006), width=1000)

这里需要注意的是 Panel 和 hvPlot 如何识别这两个子图共享相同的 y 轴。

💦 分析结果组装

现在我们已经从不同维度进行了分析,我们使用小部件把它们进行组合,使我们可以沿着时间轴动态选择和做一些数据探索,构建组合仪表板的代码如下:

plots_box = pn.WidgetBox(pn.Column(pn.Row(pn.bind(fire_count, year), year),
                                   pn.Row(pn.bind(plot_map, year), pn.bind(plot_class, year)) ,
                                   pn.Row(pn.bind(plot_cause_count, year), pn.bind(plot_cause_burn, year)), align="start",
                                   width=800, sizing_mode="stretch_width"))


dashboard = pn.Row(plots_box, sizing_mode="stretch_width")

上面只是截取的一些gif动图,大家快快实际操作一下吧!会有更清晰的认识。

💡总结

在本篇内容中 ShowMeAI 给大家讲解了使用 hvPlot 和 Panel 构建各种组合可视化看板仪表盘的方法,当我们需要进行数据探索和分析的时候,简单的一些数据分析可视化用 Pandas 和 Seaborn 等就可以快速完成,当我们需要一个交互式探索分析工具时,使用hvPlot 和 Panel 是一个非常棒的选择。

参考资料

hvPlot:用你熟悉的 Pandas,画出你没见过的炫图 hvPlot 是一个“不是替代谁,而是增强谁”的存在。你会 Pandas?那你已经学会了 80% 的 hvPlot你想做交互?它一行代码就帮你搞定你讨厌切换工具?它支持 Bokeh、Plotly、Matplotlib 三大巨头你懒?我也是,所以我用它 😂继续写那些繁琐的.plot()、手动调参数、样式不统一的报表图试试,从此把数据画得又快又炫还好看别犹豫啦,咱都在搞量化或者数据分析,画图不是目的,是工具。hvPlot 就是帮你把图“快速、优雅地画完”,该干别的干别的去。 阅读详情

相关推荐

Python数据可视化应用:hvplot和Panel的嵌入式界面

hvplot是基于HoloViews库构建的高级可视化库,它提供了一个简单而强大的接口,可以将数据转换为各种类型的可视化图表。在回调函数中,我们首先获取用户选择的股票,然后从数据集中选择该股票的数据,并使用hvplot库创建折线图。其中,hvplot和Panel是两个流行的库,它们提供了丰富的功能和灵活性,使得开发者能够快速构建出各种类型的数据可视化界面。假设我们有一个包含股票价格的数据集,我们想要创建一个交互式界面,使用户能够选择不同的股票,并显示其价格的折线图。首先,我们需要安装必要的库。

CyberSphinx的博客 646

【原创佳作】太炫酷了,这里有一个用于制作数据面板大屏的Python模块

在Python当中用于绘制图表的模块,相信大家用的最多的便是matplotlib和seabron,除此之外还有一些用于动态交互的例如Plotly模块和Pyecharts模块,今天小编再为大家来推荐两个用于制作可视化大屏的库,分别叫做hvPlot以及Panel,在本篇教程当中,小编依次会为大家分享用pandas以及hvPlot结合生成具有交互性的图表用Panel模块生成小的...

weixin_43373042的博客 875

Python-hvPlot基于HoloViews的pandasdaskstreamz和xarray高级绘图API

A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews

Polars简明基础教程十二:可视化(二)

我们可以使用 hv.extension 更改绘图后端。但是,我们不在此处运行此单元格,因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。注释:hvPlot 利用 HoloViews 库来构建图表,并且可以使用多个后端进行渲染,包括 Bokeh(默认)和 Matplotlib。是一个函数,用于设置 hvPlot 的绘图后端。当你使用指定一个后端时,比如 Bokeh 或 Matplotlib,hvPlot 将会使用这个后端来渲染所有后续的图表。

sosogod的博客 1542

hvplot:用于基于HoloViews的pandas,dask,xarray和networkx的高级绘图API

hvPlot 基于HoloViews的PyData生态系统的高级绘图API。 建置状态 覆盖范围 最新开发版本 最新发布 文件 它是什么? PyData生态系统具有许多核心Python数据容器,这些容器允许用户使用各种数据类型,包括: :DataFrame,系列(列/表格数据) :数据集,DataArray(多维数组) :DataFrame,Series,Array(分布式/核心数组和列数据) Streamz :DataFrame,系列(流式列数据) 摄入量:数据源(数据目录) GeoPandas :GeoDataFrame(几何数据) NetworkX :图(网络图) 这些库中的几个库具有高级绘图API的概念,可让用户非常轻松地生成常见的绘图类型。 原始绘图API通常基于Matplotlib构建,该API提供了坚实的基础,但是这意味着用户会错过Bokeh

Ubuntu运行vmware时报错Vmware Unable to install all modules!Use shipped Linux kernel AIO access library解决。

Ubuntu运行vmware时报错Vmware Unable to install all modules! vmware --version 提示下面内容: [AppLoader] Use shipped Linux kernel AIO access library. An up-to-date "libaio" or "libaio1" package from your system is preferred. VMware Workstation 16.1.2 build-17966106

wto882dim的博客 2850

Python开发数据可视化应用:hvplot交互式绘图

数据可视化(一)hvplot交互式绘图

DONG_LIN_2019的博客 1538

CAD二次开发(C#版):从零搭建开发环境与核心DLL引用指南

本文详细介绍了使用C#进行CAD二次开发的环境搭建与核心DLL引用指南,涵盖Visual Studio配置、AutoCAD插件项目创建、DLL引用技巧及调试方法。通过实战示例和常见问题排查,帮助开发者快速掌握CAD二次开发的核心技术,提升开发效率。

weixin_28837817的博客 729

hvPlot 开源项目教程

hvPlot 开源项目教程 1. 项目介绍 hvPlot 是一个基于 HoloViews 的高层绘图 API,它为 Pandas、Dask、XArray 和 NetworkX 等数据源提供了一个熟悉的、类似于 Pandas .plot API 的接口。hvPlot 支持多种绘图后端,包括 Bokeh、Matplotlib 和 Plotly,使得数据分析和可视化变得更加简单。 2. 项目快速启动 安...

gitblog_00557的博客 670

[Unity_Plastic SCM小技巧] 使用 UnityYAMLMerge 工具合并场景和预制件文件

首先YAMLMerge工具其实并不局限于PlasticSCM,git也可以,它是内置在Editor内的一个更加智能的版本控制工具,只不过正常不会启用,他的目录在C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe(Unity Editor安装目录),MAC上:/Applications/Unity/Unity.app/Content...

unityofficial的博客 1146

AOSP14 Launcher3——手势上滑关键类AbsSwipeHandler解析

通过精密的事件监听、状态管理和对系统动画 API 及 Launcher 内部组件的协调,实现了复杂而流畅的手势导航体验。它的抽象设计允许子类(如。是 Quickstep (Launcher3 的手势导航实现) 中处理。的核心逻辑抽象基类。这个非常核心且复杂的类。)定制特定的回家动画逻辑。好的,我们来深入分析。

Micheal_Yang's Blog 1521

pandas作图_HvPlot - 基于HoloViews的pandas高级绘图python的API

1 说明:=====1.1 HvPlot - 基于HoloViews的pandas、dask、streamz和xarray高级绘图API。1.2 HvPlot就是一个python高级数据可视化图库。1.3 其实就是基于boken的,一行代码搞定的数据可视化基本作图。1.4 本次代码是基于微软编辑器vscode,源代码基于jupyter的;1.5 顺带复习pandas的读取csv文件,更具有实际操作...

weixin_42298382的博客 3055

华为云CodeHub代码托管

什么是代码托管 代码托管(CodeHub)是面向软件开发者的基于Git的在线代码托管服务,是具备安全管控、成员/权限管理、分支保护/合并、在线编辑、统计服务等功能的云端代码仓库,旨在解决软件开发者在跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。 代码托管具有以下特性 · 在线代码阅读、修改、提交,随时随地开发,不受地域限制。 · 在线分支管理,包含分支新建、切换、合并,实现多分支并行开发,效率高。 master分支:最为稳定,功能比较完整,随时可发布的代码。 develop分支:用于平时开

LUJINYUANA的博客 1万+

HvPlot 使用教程

HvPlot 是一个基于 HoloViews 的高层次绘图 API,它为 Pandas、Dask、XArray 和 NetworkX 等数据源提供了一种简单直观的绘图方法。HvPlot 支持 Bokeh、Matplotlib 和 Plotly 等绘图后端,使得用户能够在熟悉的环境中利用 HoloViz 生态系统的强大工具进行数据探索。 ## 2. 项目快速启动 首先,确保您的环境中已经安装了所...

gitblog_00977的博客 1004

同花顺【红绿趋势】幅图指标 源码分析

a10:IF(差值<=0 ,0 ,差值*0.2 ,4 ,0),STICK,linethick5,colorred;a7:IF(差值<=0 ,0 ,差值*0.8 ,4 ,0),STICK,linethick5,colorred;a8:IF(差值<=0 ,0 ,差值*0.6 ,4 ,0),STICK,linethick5,colorred;a6:IF(差值<=0 ,0 ,差值*1 ,4 , 0),STICK,linethick5,colorred;DRAWICON(先锋<0,-25,1);

zhibiaogong的博客 4072

OC5021B 100V宽电压输入 LED车灯/大功率照明 DC降压型恒流驱动器

适用于LED大功率汽车大灯/大功率照明 OC5021B 100V宽电压输入 5A电流设计 DC-DC降压型恒流驱动IC

Handsome63841990的博客 2420

玩转Python:数据可视化,一个很高级的交互式Python库,附代码

HvPlot 是基于 HoloViews 的高层抽象绘图库,但它提供了更为直接和方便的API,使得创建复杂的交互式图表变得简单快捷。HvPlot 可以与 Pandas、xarray 等数据处理库无缝集成,并且支持 Bokeh、Matplotlib 等多种绘图后端,允许用户根据需要制作静态或交互式图表。

1433

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

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

weixin_30455023的博客 561

破解Android应用启动瓶颈:深度解析vtools的Dex2oat编译优化实战

当Android应用启动时卡顿成为常态,当系统响应迟缓影响用户体验,传统优化手段往往治标不治本。vtools的Dex2oat编译优化功能,正是针对这一痛点设计的深度解决方案。本文将带你深入理解这项技术如何从根本上改变应用启动性能,并提供实战操作指南。 ## 挑战:Android应用启动的隐藏瓶颈 Android应用的启动过程看似简单,实则暗藏玄机。传统的DEX字节码解释执行模式,在应用启动时需

gitblog_01059的博客 723

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python做出的炫酷的可视化,python做大屏数据可视化

这篇文章主要介绍了python做一个动态可视化交互大屏库怎么做,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。在Python当中用于绘制图表的模块,相信大家用的最多的便是matplotlib和seabron,除此之外还有一些用于动态交互的例如Plotly模块和Pyecharts模块。今天我为大家来推荐两个用于制作可视化大屏的库,分别叫做hvPlot以及Panel,非常不错,用pandas以及hvPlot结合生成具有交互性的图表用Panel。

Bxwfjdjdbdgj的博客 1225

深度学习工具包 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")

探索数据可视化新境界:HoloViz - Python的高级可视化工具集

![HoloViz Logo](https://github.com/holoviz/holoviz/blob/main/doc/_static/holoviz-logo.svg) 在Python的世界里,高效且直观的数据可视化是数据分析过程中的重要环节。HoloViz正是为此而生,它是一个集成化的开源项目集合,旨在简化从探索性数据分析到构建复杂仪表板的整个流程。 ## 1. 项目介绍 Ho...

gitblog_00100的博客 575

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Hvplot安装与配置指南

Hvplot 是一个基于 HoloViews 的高级绘图 API,为 pandas、dask、xarray 和 networkx 等数据源提供了一种简单直观的绘图方式。它提供了与 pandas 的 `.plot()` 方法相似的 API,同时支持生成交互式图表,并且可以与多种绘图后端(如 Bokeh、Matplotlib 和 Plotly)配合使用。 **主要编程语言:Python** ## ...

gitblog_00755的博客 868

Matplotlib vs Seaborn vs Plotly:谁才是数据可视化的终极王者?

对比主流开源可视化工具Python实现方案,解析Matplotlib、Seaborn与Plotly在数据探索、交互图表和科研绘图中的适用场景。涵盖语法简洁性、定制化能力与可视化效果,帮你选出最适合项目的工具,值得收藏。

ByteChat的博客 667

使用langchain与你自己的数据对话(五):聊天机器人

今天我们学习了如何开发一个具有记忆能力的个性化问答机器人,所谓个性化是指该机器人可以针对用户数据的内容进行问答,我们在实现该机器人时使用了ConversationalRetrievalChain组件,它是一个具有记忆能力的检索链,也是机器人的核心组件。希望今天的内容对大家有所帮助!

weixin_42608414的博客 4858

【吴恩达-AIGC/ChatGPT提示工程课程】第八章 - **聊天机器人 Chatbot.**

所以我们现在追加另一个系统消息,它是另一条prompt,我们说创建一个刚刚订单的 JSON 摘要,列出每个项目的价格,字段应包括1)披萨,包括尺寸,2)配料列表,3)饮料列表,4)辅菜列表,包括尺寸,最后是总价格。现在我们已经给模型提供了上下文,也就是之前的对话中提到的我的名字,然后我们会问同样的问题,也就是我的名字是什么。让我们做另一个例子。助手的消息是,你是一个友好的聊天机器人,第一个用户消息是,嗨,我叫Isa。系统消息是,你是一个友好的聊天机器人,第一个用户消息是,是的,你能提醒我我的名字是什么吗?

孔壹学院 460

09-选择适合你的Python可视化工具(续)

本篇将接着上篇,根据Python可视化工具等级关系分类,依次对每类做一个概述,并对每类的重点库进行简要介绍。 Core,核心库 这一类有3个库,分别是: matplotlib plotly bokeh 为什么称它们为核心库呢?因为,有多个其它高级可视化库是在它们的基础上构建的。 **注意:**这里的高级、低级是指它们语法的封装程度,是相对的,并不是指它们的功能是否高级。 **matplotli...

Python草堂的博客 1520
上一篇: 伯克利『全栈深度学习』2022最新课程;谷歌『基于Transformers的通用超参数优化』经验分享;动图编辑器;前沿论文 | ShowMeAI资讯日报
下一篇: 哦买噶!李佳琦重现淘宝直播间!机器学习工程师的提效神器;『优化导论』神书;『IE521 凸优化』课程资料 | ShowMeAI资讯日报
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值