告别静态图表,Streamlit交互控件让你的数据“活”起来

Streamlit 讲解专栏(四):深入理解按钮行为 本篇博客介绍了如何使用按钮处理耗时或写入文件的过程,并将结果保存起来,以便在需要时进行访问。通过一个示例,我们演示了如何在Streamlit中创建按钮和相关小部件,并将处理结果保存到会话状态中。同时,我们也提到了一些常见的按钮反模式,以帮助读者避免在使用按钮时犯错。 阅读详情

第一章:告别静态图表——Streamlit交互控件的变革力量

在数据科学和应用开发中,传统的可视化图表往往缺乏动态响应能力。用户只能被动观察预设结果,无法实时调整参数或探索数据背后的逻辑。Streamlit 的出现彻底改变了这一局面,其内置的交互控件让数据应用真正“活”了起来。

从点击到响应:构建可交互的数据入口

Streamlit 提供了多种原生控件,如滑块、下拉菜单和复选框,使用户能即时影响应用行为。例如,使用 st.slider() 可轻松创建数值调节器:
# 创建一个范围选择滑块
import streamlit as st
import numpy as np

value = st.slider("选择采样数量", min_value=10, max_value=1000, value=100)
data = np.random.randn(value)
st.line_chart(data)
该代码段定义了一个可调节的采样点数量滑块,图表随用户选择动态更新,实现真正的“所见即所控”。

控件类型与适用场景

不同控件适用于不同交互需求,以下为常见控件及其用途:
控件函数输入类型典型用途
st.selectbox()单选下拉分类筛选(如地区、类别)
st.checkbox()布尔开关启用/禁用功能模块
st.radio()单选按钮组模式切换(如算法选择)
  • 交互控件降低用户理解门槛,提升探索效率
  • 无需前端知识即可构建响应式界面
  • 结合缓存机制(@st.cache_data)可优化性能
graph LR A[用户操作控件] --> B{Streamlit 重新运行脚本} B --> C[更新参数并执行逻辑] C --> D[渲染新图表] D --> A

第二章:Streamlit核心交互控件详解

2.1 按钮与复选框:实现基础交互逻辑

在前端开发中,按钮和复选框是构建用户交互的基石。通过监听事件并响应状态变化,可以实现清晰的操作反馈。
基本事件绑定
按钮通常用于触发操作,可通过 `click` 事件实现逻辑执行:
document.getElementById('submitBtn').addEventListener('click', function() {
    alert('表单已提交!');
});
该代码为按钮绑定点击事件,用户点击时弹出提示,适用于表单提交、数据加载等场景。
复选框状态管理
复选框用于多选控制,常需获取其勾选状态:
document.getElementById('agreeCheckbox').addEventListener('change', function() {
    if (this.checked) {
        console.log('用户同意条款');
    }
});
当用户切换复选框状态时,change 事件触发,this.checked 返回布尔值,表示当前是否选中。
  • 按钮适合执行即时操作
  • 复选框适用于状态选择与配置
  • 两者结合可构建完整的用户输入体系

2.2 滑块与选择器:动态控制数据范围

在数据可视化中,滑块(Slider)和选择器(Selector)是实现交互式范围过滤的核心组件。它们允许用户直观地调整时间区间、数值阈值等参数。
基础用法示例

// 创建一个范围滑块
const slider = d3.sliderHorizontal()
  .min(0)
  .max(100)
  .step(1)
  .on('onchange', value => {
    updateChart(value); // 动态更新图表
  });
d3.select('#slider').call(slider);
上述代码使用 D3.js 构建水平滑块,.min 和 .max 定义取值范围,.step 控制精度,onchange 事件触发视图更新。
常见控件对比
控件类型适用场景响应速度
滑块连续数值调节高
下拉选择器离散选项切换中

2.3 下拉菜单与单选按钮:多维度数据切换

在构建交互式数据可视化界面时,下拉菜单与单选按钮是实现多维度数据切换的核心控件。它们允许用户在不同分类或层级间快速选择,驱动图表动态更新。
控件功能对比
  • 下拉菜单:适用于选项较多的场景,节省空间,如选择年份、地区
  • 单选按钮:适合选项较少(通常 ≤5)的情况,提升操作效率,如“日/周/月”粒度切换
数据同步机制
当用户选择新维度时,需触发数据重载与视图刷新。以下为典型事件处理逻辑:

document.getElementById("dimension-select").addEventListener("change", function(e) {
  const selectedValue = e.target.value; // 获取选中值
  updateChartDataSource(selectedValue); // 更新数据源
  renderChart();                    // 重新渲染图表
});
上述代码监听下拉菜单的 change 事件,通过回调函数传递用户选择的维度值,并调用图表更新流程,确保界面与数据状态一致。

2.4 文件上传控件:构建可扩展的数据入口

在现代Web应用中,文件上传控件不仅是用户提交数据的主要通道,更是系统与外部世界交互的关键接口。为支持多样化数据类型和未来扩展,设计需兼顾安全性、性能与易用性。
核心功能设计
一个可扩展的上传控件应支持多文件选择、拖拽上传、进度反馈及格式校验。前端通过 FormData 对象封装文件数据,配合异步请求实现无刷新提交。

const input = document.getElementById('fileInput');
input.addEventListener('change', (e) => {
  const files = e.target.files;
  const formData = new FormData();
  for (let file of files) {
    if (file.size < 10 * 1024 * 1024) { // 限制10MB
      formData.append('uploads[]', file);
    }
  }
  fetch('/api/upload', {
    method: 'POST',
    body: formData
  }).then(response => response.json())
    .then(data => console.log('Success:', data));
});
上述代码实现了基础上传逻辑:FormData 自动处理MIME类型,fetch 发起异步请求。文件大小校验防止恶意上传,提升服务端稳定性。
扩展性策略
  • 插件化校验规则(如病毒扫描、内容识别)
  • 支持分片上传以应对大文件场景
  • 集成CDN预签名URL实现直传OSS

2.5 日期与颜色选择器:提升用户体验的专业细节

在现代Web应用中,表单交互的友好性直接影响用户留存率。日期与颜色选择器作为高频使用的UI组件,其设计不仅关乎美观,更涉及操作效率与数据准确性。
原生选择器的高效实现
<input type="date" id="birthday">
<input type="color" id="theme">
上述HTML5原生控件无需引入第三方库,自动适配设备端键盘与选择面板。`type="date"`触发系统日历组件,支持无障碍访问;`type="color"`则调出标准色盘,确保色彩输入一致性。
关键优势对比
特性日期选择器颜色选择器
输入校验自动格式化(YYYY-MM-DD)强制十六进制格式
兼容性现代浏览器全覆盖需注意移动端差异

第三章:交互式数据可视化的构建模式

3.1 响应式图表更新机制原理

响应式图表的核心在于数据变化与视图渲染的自动同步。当底层数据模型发生变更时,系统需检测变化并触发图表重绘,确保可视化内容始终反映最新状态。
数据监听与变更检测
现代前端框架(如Vue、React)通过响应式系统监听数据变动。以Vue为例,其依赖追踪机制在组件渲染时收集依赖,数据更新时通知对应 watcher:

const chartData = reactive({
  labels: ['Jan', 'Feb', 'Mar'],
  values: [10, 20, 30]
});

watch(chartData, () => {
  updateChart(); // 数据变化后自动调用
});
上述代码中,reactive 创建响应式对象,watch 监听其变化并执行图表更新函数。
更新策略对比
策略优点缺点
全量重绘实现简单性能开销大
差分更新高效精准实现复杂

3.2 状态管理与性能优化策略

高效状态更新机制
在复杂应用中,频繁的状态变更易引发性能瓶颈。采用不可变数据结构结合浅比较,可有效减少冗余渲染。例如,在React中使用useReducer配合React.memo,仅在相关状态变化时触发更新。
const reducer = (state, action) => {
  switch (action.type) {
    case 'UPDATE_USER':
      return { ...state, user: { ...action.payload } }; // 不可变更新
    default:
      return state;
  }
};
上述代码通过展开运算符确保状态对象的引用变化,使组件能准确感知更新时机。
懒加载与计算缓存
  • 使用useMemo缓存复杂计算结果
  • 通过useCallback避免函数重复创建
  • 结合Suspense实现组件级懒加载

3.3 结合Pandas实现动态数据过滤

在数据分析过程中,动态过滤是提升数据洞察效率的关键环节。Pandas 提供了灵活的布尔索引与查询机制,可结合变量实时调整过滤条件。
使用布尔索引进行条件筛选
import pandas as pd

# 示例数据
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'age': [25, 30, 35],
    'city': ['Beijing', 'Shanghai', 'Guangzhou']
})

# 动态过滤:通过变量控制条件
min_age = 30
filtered_df = df[df['age'] >= min_age]
上述代码中,min_age 作为外部变量参与过滤逻辑,便于在程序运行时动态修改。布尔表达式 df['age'] >= min_age 返回布尔序列,Pandas 利用其对行进行高效筛选。
多条件组合过滤
  • 使用 & 表示“与”操作,需配合括号避免优先级错误
  • 使用 | 表示“或”操作
  • 支持 ~ 实现逻辑“非”

第四章:实战案例解析

4.1 构建可交互的销售数据仪表盘

构建可交互的销售数据仪表盘是实现数据驱动决策的关键步骤。通过集成实时数据源与可视化组件,用户能够动态筛选时间范围、区域和产品类别。
前端框架选择
推荐使用React结合ECharts或Chart.js实现响应式图表渲染。以下为ECharts柱状图初始化代码:

const chart = echarts.init(document.getElementById('salesChart'));
const option = {
  title: { text: '月度销售额趋势' },
  tooltip: { trigger: 'axis' },
  xAxis: { type: 'category', data: months },
  yAxis: { type: 'value' },
  series: [{ data: salesData, type: 'bar' }]
};
chart.setOption(option);
该配置定义了基础柱状图结构,months 和 salesData 为从后端获取的动态数组,支持后续更新。
交互功能实现
  • 下拉菜单用于切换地区维度
  • 日期选择器绑定数据查询接口
  • 图表点击事件触发明细弹窗

4.2 实现股票行情的动态可视化系统

数据同步机制
为实现低延迟更新,系统采用 WebSocket 与后端实时通信。前端订阅指定股票代码,服务端推送最新价格和成交量。
const socket = new WebSocket('wss://api.stockdata.com/feed');
socket.onmessage = (event) => {
  const data = JSON.parse(event.data);
  updateChart(data.symbol, data.price, data.volume);
};
该代码建立持久连接,接收实时行情并触发图表更新函数,data.price 表示最新成交价,data.volume 为累计成交量。
可视化渲染
使用轻量级图表库 Chart.js 渲染动态折线图,每秒刷新一次数据点。
  • 初始化时加载最近100个时间片数据
  • 新数据到达时移除最旧点并追加新点
  • 颜色编码反映涨跌趋势(绿色上涨,红色下跌)

4.3 开发多源数据融合的分析工具

在构建多源数据融合系统时,首要任务是统一异构数据格式。通过定义标准化的数据接入层,可将来自关系数据库、日志文件与API接口的数据转换为统一的JSON Schema结构。
数据同步机制
采用基于时间戳的增量拉取策略,确保各数据源定时同步。以下为Go语言实现的核心逻辑:

func FetchIncremental(source string, lastSync time.Time) ([]DataRecord, error) {
    query := fmt.Sprintf("SELECT * FROM %s WHERE updated_at > '%s'", 
             source, lastSync.Format(time.RFC3339))
    // 执行查询并解析结果
    return parseRecords(query), nil
}
该函数通过比较updated_at字段拉取增量数据,降低网络与计算开销。参数lastSync记录上一次同步时间点,保障数据一致性。
融合策略对比
  • 基于主键合并:适用于结构化数据源
  • 事件时间对齐:适合流式日志与传感器数据
  • 语义映射转换:处理字段含义相同但命名不同的情况

4.4 打造支持用户输入的预测模型界面

为了提升模型的交互性,需构建一个支持用户动态输入的前端界面,并与后端预测服务对接。
前端表单设计
使用 HTML 表单收集用户输入,关键字段包括数值型特征和分类选项:
<form id="predictionForm">
  <input type="number" id="feature1" placeholder="输入特征1" required>
  <select id="category">
    <option value="A">类别A</option>
    <option value="B">类别B</option>
  </select>
  <button type="submit">预测</button>
</form>
该表单通过 JavaScript 序列化数据并发送至 Flask 后端。
前后端数据交互
采用 AJAX 发送请求,确保页面无刷新响应:
document.getElementById('predictionForm').addEventListener('submit', function(e) {
  e.preventDefault();
  const data = {
    feature1: parseFloat(document.getElementById('feature1').value),
    category: document.getElementById('category').value
  };
  fetch('/predict', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(data)
  }).then(response => response.json())
    .then(result => alert(`预测结果:${result.prediction}`));
});
后端接收 JSON 数据,经预处理后输入模型推理,返回结构化结果。

第五章:从交互到智能——Streamlit在现代数据应用中的演进方向

随着AI与机器学习技术的深度融合,Streamlit已不再局限于构建静态的数据可视化仪表板,而是逐步演进为支持智能决策的动态应用平台。开发者如今可在Streamlit中集成预训练模型,实现实时预测与自然语言交互。
嵌入机器学习模型实现智能响应
例如,在客户支持分析系统中,可通过Hugging Face的Transformers库加载情感分析模型,对用户输入的反馈文本进行实时分类:

import streamlit as st
from transformers import pipeline

# 加载预训练情感分析模型
classifier = pipeline("sentiment-analysis")

user_input = st.text_area("请输入客户反馈:")
if user_input:
    result = classifier(user_input)[0]
    st.write(f"情感倾向:{result['label']},置信度:{result['score']:.2f}")
结合LangChain实现自然语言查询
通过整合LangChain与Pandas AI,用户可使用自然语言提问,直接生成数据分析结果。例如,“显示销售额最高的前五项产品”将自动转化为pandas操作并返回图表。
  • 用户输入自然语言指令
  • LangChain解析语义并生成Python代码逻辑
  • Pandas AI执行代码并返回结构化结果
  • Streamlit渲染图表与表格输出
构建多模态智能应用界面
现代数据应用常需融合文本、图像与语音输入。利用Streamlit的文件上传与摄像头接口,可构建支持图像分类的AI助手:

流程图:图像智能分析应用

  1. 用户上传图像或启用摄像头
  2. 图像传递至预训练CNN模型(如ResNet)
  3. 模型返回分类结果与置信度
  4. Streamlit展示标注图像与解释性文字
告别Jupyter Notebook:用Streamlit + Plotly Express 5分钟把你的数据分析变成可交互的Web应用 本文介绍了如何利用Streamlit和Plotly Express在5分钟内将Jupyter Notebook中的数据分析转化为交互式Web应用。通过详细的代码示例和迁移步骤,帮助数据分析师快速构建专业级数据可视化仪表盘,提升数据展示的交互性和协作效率。 阅读详情

相关推荐

告别Flask和Django:用Streamlit + Plotly,5分钟把你的Pandas DataFrame变成交互式Web仪表盘

本文介绍了如何利用Streamlit和Plotly快速将Pandas DataFrame转化为交互式Web仪表盘,无需Flask或Django等复杂框架。通过低代码方式,数据分析师可在5分钟内实现高效的数据可视化,提升业务汇报和决策效率。文章详细展示了开发流程、性能优化技巧及实际应用案例。

weixin_30383279的博客 399

【Streamlit动态图表实战指南】:5步实现数据实时刷新与可视化更新

掌握Streamlit图表动态更新技巧,轻松实现数据实时刷新与可视化。适用于监控仪表盘、实时报表等场景,通过定时刷新与状态管理5步完成动态更新,提升交互体验。方法简单高效,值得收藏。

FastDebug的博客 992

告别前端烦恼:数据分析师用Streamlit+Plotly打造交互式数据看板实战指南

本文详细介绍了数据分析师如何利用Streamlit和Plotly快速构建交互式数据看板,无需前端知识即可实现动态数据可视化。通过实战案例和代码示例,展示了从环境搭建到企业级应用的完整流程,帮助读者高效解决数据展示难题,提升工作效率。

weixin_42533751的博客 193

告别Flask和Django:用Streamlit+Plotly,5分钟把你的Pandas数据分析变成交互式网页

本文介绍了如何利用Streamlit和Plotly快速将Pandas数据分析转化为交互式网页应用,特别适合数据分析师使用。通过低代码方式,无需掌握复杂Web开发技能,即可在5分钟内构建专业级数据可视化应用,显著提升工作效率。

weixin_30383279的博客 490

Snowflake原生Streamlit:零运维数据应用交付实战

Streamlit in Snowflake(SiS)是一种将Python数据应用直接部署在Snowflake计算层的原生集成方案,其核心原理是通过Snowpark会话实现计算、存储与权限三平面统一。相比传统外部托管+API桥接模式,SiS消除了网络延迟、连接池瓶颈和权限割裂问题,显著提升端到端响应性能与安全合规性。技术价值体现在零基础设施运维、RBAC权限自动继承、会话级缓存及Cortex AI无缝嵌入,适用于销售分析、客户360、实时BI等强数据依赖型场景。本文聚焦从本地Streamlit迁移至Snow

weixin_30443075的博客 424

告别环境依赖:PyInstaller一键封装Streamlit应用实现跨平台分发

本文详细介绍了如何使用PyInstaller将Streamlit应用一键封装为跨平台可执行文件,解决环境依赖问题。通过创建干净的虚拟环境、编写hook文件处理特殊依赖、修改spec文件配置等步骤,实现无需Python环境的开箱即用体验,特别适合不懂技术的用户使用数据分析工具或机器学习模型展示页面。

weixin_28733637的博客 378

告别Flask和Django:用Streamlit + Plotly,5分钟把你的Pandas数据分析变成交互式网页

本文介绍了如何利用Streamlit和Plotly快速将Pandas数据分析转化为交互式网页,告别复杂的Flask和Django开发流程。通过低代码解决方案,数据分析师可以在5分钟内实现Web数据可视化,提升工作效率并简化技术栈。

weixin_30383279的博客 411

告别Flask和Django:用Streamlit 1.0+快速把你的Python数据分析脚本变成Web应用

本文介绍了如何使用Streamlit 1.0+快速将Python数据分析脚本转化为交互式Web应用,无需前端知识。通过对比传统框架如Flask和Django,Streamlit显著降低学习成本,提升开发效率,特别适合数据科学家和机器学习工程师。文章还提供了从基础到高级的实战指南,包括动态控件、性能优化和企业级部署方案。

weixin_42543309的博客 225

Streamlit-AgGrid终极指南:5分钟打造企业级数据表格应用

还在为Streamlit默认表格功能太弱而烦恼吗?想要在数据应用中实现Excel级别的交互体验?Streamlit-AgGrid就是你的终极解决方案!这个强大的组件将业界领先的Ag-Grid表格库无缝集成到Streamlit中,让数据展示从此告别平庸。 ## 为什么你的数据应用需要Streamlit-AgGrid? 想象一下这样的场景:你的用户需要在一个表格中筛选数据、排序、编辑单元格,甚至进

gitblog_00362的博客 928

告别环境依赖:手把手教你用PyInstaller打包Streamlit应用,生成独立可执行文件

本文详细介绍了如何使用PyInstaller将Streamlit应用打包成独立可执行文件,解决环境依赖问题。通过创建hook文件、调整spec配置和优化打包流程,实现一次打包、处处运行的目标,特别适合需要与非技术人员共享数据分析工具的场景。

weixin_30363509的博客 283

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 229

Pandas+Streamlit零运维数据分析轻应用搭建指南

数据分析工具的核心价值不在于代码多炫酷,而在于能否被业务方真正用起来。本文围绕‘可交付的数据分析应用’这一基础技术概念,解析如何利用 Pandas 的数据处理能力与 Streamlit 的声明式 Web 构建范式,实现无需后端、不配服务器、免 Docker 的轻量级部署。重点涵盖文件编码鲁棒加载、缺失值热力图可视化、智能分类型/数值型描述统计、相关系数动态计算等高频实践环节,并深度结合 Streamlit Cloud 的自动构建、缓存机制(@st.cache_data)与异常兜底策略,解决中文乱码、内存超限

dihuangxiu8828的博客 417

保姆级教程:用MediaPipe和BlazePose在Python里实时追踪你的健身动作(附完整代码)

本文提供了一份详细的Python教程,教你如何使用MediaPipe和BlazePose实现实时健身动作追踪。从环境配置、模型选型到实时视频流处理架构设计,再到健身动作量化分析和可视化反馈系统优化,教程涵盖了完整的实现步骤和代码示例,帮助开发者快速构建高效的姿态特征点检测系统。

weixin_42531779的博客 153

告别环境依赖:用PyInstaller把Streamlit应用打包成独立exe的保姆级教程

本文详细介绍了如何使用PyInstaller将Streamlit应用打包成独立exe文件,解决Python环境依赖问题。通过创建虚拟环境、处理特殊依赖、编写启动脚本等步骤,实现真正的开箱即用体验,特别适合非技术用户。教程包含常见错误解决方案和体积优化技巧,帮助开发者轻松分发数据可视化应用。

weixin_30764883的博客 396

ESP32脑机接口开发板:EEG信号采集与应用开发指南

脑机接口(BCI)技术通过采集脑电图(EEG)信号实现人机交互,其核心在于高精度生物电信号采集与实时处理。基于ESP32微控制器的开发平台结合专业级ADS1299 ADC芯片,可构建8通道EEG信号采集系统,支持250SPS采样率与可编程增益。这种嵌入式解决方案在科研教育领域具有显著优势,既能满足信号质量要求,又大幅降低开发门槛。典型应用包括实时脑电波可视化、注意力检测等BCI场景,通过Python生态工具链(如BrainFlow、LSL)可快速实现数据处理。开发时需注意电极阻抗控制(<10kΩ)和50/6

weixin_42518874的博客 344

世界模型(World Models)进展全景调研(截至 2025-08)

A5) 2019-07(待核验) | C-SWM:Contrastive Structured World Models(Kipf et al.)A6) 2019-07(待核验) | SLAC:Stochastic Latent Actor-Critic(Lee et al.)A3) 2015-12(背景注记,待核验) | Embed to Control(E2C,Watter et al.)Nature 2020)Repro/Code:werner-duvaud/muzero-general(社区)

u013250861的博客 489

告别Flask!Streamlit+Pandas实战:5分钟搭建销售数据分析后台(2024最新版)

本文介绍如何利用Streamlit和Pandas在5分钟内快速搭建销售数据分析后台,替代传统的Flask开发方式。通过实战演示,展示Streamlit在数据可视化、交互式分析和性能优化方面的优势,帮助开发者高效构建商业分析系统,提升数据处理和决策效率。

k8l9m0n的博客 177

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 185

Polars+Streamlit+MLflow:数据科学分析-建模-部署闭环实战

数据科学工作流的核心挑战在于数据处理低效、分析结果静态难协作、模型交付黑箱难追踪。Polars以声明式语法和懒加载机制显著降低大数据清洗的认知负荷,Streamlit将Python分析脚本一键转为可交互Web仪表盘,MLflow则统一管理实验记录、模型版本与生产部署。三者协同构成‘数据→洞察→决策→行动’的端到端闭环,天然适配金融风控、医疗文本、IoT时序等多领域场景,让领域专家无需写代码即可参与建模验证,真正实现分析可复现、模型可审计、价值可度量。

weixin_30457465的博客 326

解锁PyCharm+Deepseek:本地部署AI编程超能力

在本次探索中,我们成功地在 PyCharm 中实现了 DeepSeek 的本地化部署,这一过程虽然涉及多个步骤,但每一步都为我们开启 AI 编程大门奠定了基础。从安装最新版 PyCharm,确保我们拥有一个功能强大且兼容性良好的开发环境,到注册 DeepSeek 账号并获取 API Key,这是连接我们与强大 AI 能力的关键纽带。接着,在 PyCharm 中安装 Continue 插件并进行精细配置,让 DeepSeek 能够深度融入我们的编程流程。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 5550

Anomalib库安装以及使用

Anomalib是一个专注于异常检测的深度学习库。它的目标是收集最新的异常检测算法,并提供用于在公共和私有数据集上进行基准测试的工具。该库提供了一系列已实现的异常检测算法,这些算法在最近的文献中有所描述。此外,Anomalib还提供了一套工具,方便开发人员开发和实现自定义模型。该库特别注重基于图像的异常检测,旨在识别数据集中的异常图像或图像中的异常像素区域。通过使用Anomalib,用户可以快速构建和评估各种异常检测算法,以满足其特定需求。

mingo_敏 5201

告别Streamlit的束缚:用NiceGUI从零搭建一个可打包exe的Python Web应用

本文介绍了如何使用NiceGUI框架替代Streamlit,从零开始构建一个可打包为exe的Python Web应用。NiceGUI提供了更灵活的部署选项和高效的交互处理,特别适合需要离线分发或内网部署的场景。文章详细对比了NiceGUI与Streamlit的核心优势,并提供了实战代码示例和打包教程。

weixin_30855761的博客 479

14、脑肿瘤复发预测与转移瘤跟踪的自动化方法

本文介绍两种脑肿瘤相关自动化方法:一种用于预测胶质瘤切除术后的肿瘤复发位置,结合图像配准、静态模型和动态模拟模型,利用患者的DTI数据进行预测;另一种用于在纵向扫描中跟踪转移性脑肿瘤,通过联合求解配准参数估计和图像变化标记问题,提高肿瘤跟踪的准确性和效率。文章同时分析了两种方法的优势与挑战,并提出了未来研究方向,旨在为脑肿瘤的诊断和治疗提供更可靠的工具。

defi6farmer的博客 122

Streamlit入门指南:用Python快速构建交互式数据应用与仪表盘

在数据科学和工程领域,快速将分析结果、机器学习模型转化为可交互的Web应用是常见的需求。传统全栈开发涉及前端HTML/CSS/JavaScript与后端框架,流程繁琐且效率低下。Streamlit作为一种创新的Python库,其核心原理在于“脚本即应用”的范式,允许开发者仅用纯Python代码即可创建美观的Web界面,自动处理前后端交互。这一技术显著提升了从原型到产品的转化效率,尤其适用于数据可视化、模型演示和内部工具开发。通过其丰富的组件库,如st.dataframe用于表格展示、st.slider用于参

weixin_33290540的博客 334

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

告别Flask和Django!用Streamlit+Plotly,5分钟把你的Python数据分析结果变成网页应用

本文介绍了如何利用Streamlit和Plotly快速将Python数据分析结果转化为交互式网页应用,无需掌握Flask或Django等复杂Web框架。通过低代码工具组合,数据分析师可在5分钟内实现Web数据可视化,大幅提升成果展示效率。

weixin_29531177的博客 249

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

别再写Flask了!用Streamlit 1.28.0,5分钟把你的Python数据分析脚本变成网页App

本文介绍了如何使用Streamlit 1.28.0快速将Python数据分析脚本转化为交互式网页应用。通过对比传统Web框架如Flask,Streamlit显著降低了开发门槛,只需几行代码即可实现动态图表和交互元素。文章详细讲解了安装方法、基础应用搭建及高阶技巧,帮助数据分析师高效展示数据价值。

weixin_30879833的博客 238

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: 揭秘FastAPI异步请求瓶颈:如何通过并发控制提升系统吞吐量500%
下一篇: 为什么你的Python缓存没生效?深入剖析4类过期策略配置陷阱
CompiLume
博客等级 码龄1年 168粉丝 2185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值