前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >30分钟吃掉ipywidgets交互工具

30分钟吃掉ipywidgets交互工具

作者头像
lyhue1991
发布2024-06-26 12:35:19
1640
发布2024-06-26 12:35:19
举报
文章被收录于专栏:Python与算法之美

ipywidgets 是一个在jupyter notebook 中开发用户交互界面的简单工具。

可以用它来做机器学习模型的演示,构建数据分析dashboard,或者做一些小工具。

先看个效果,再介绍原理~

公众号算法美食屋后台回复关键词源码获取本文notebook源代码~

相比streamlit和gradio,ipywidgets具有如下优势:

⚫️ 灵活高效:ipywidgets的组件可以和notebook的输出很好地结合在一起。

⚫️ 方便调试:ipywidgets和代码一起直接在jupyter中展示和运行, all in one notebook。

⚫️ 便于分享:任何可以托管notebook的环境都可以使用和展示它。

大多数的ipywidgets应用一般由如下最常用的基础模块构成。

⚫️ 应用界面:interact(简易场景), interact_manual(简易场景手动触发), interactive_output(定制化输入), display(完全定制化场景)

⚫️ 输入输出:Output(笔记本输出), Image(图像), Text(文本框), Textarea(文本块), Dropdown(下拉选项), IntSlider(整数滑条), FloatSlider(浮点数滑条), HTML, Viedio(视频),

⚫️ 控制组件:Button(按钮), Play(播放器)

⚫️ 布局组件:Tab(标签页), HBox(行布局), VBox(列布局), Layout(外观)

我们将由易到难通过4个范例来介绍ipywidgets的使用方法。

⚫️ hello world范例

⚫️ 文本分类

⚫️ 图片浏览工具

⚫️ 图片分类

一,Hello World (难度系数: ⭐️)

代码语言:javascript
复制
import ipywidgets as widgets
def greet(name):
    return "Hello " + name + "!!"

w = widgets.interact(greet,name='LiLei');
w

二,图片浏览工具 (难度系数: ⭐️⭐️)

代码语言:javascript
复制
from ipywidgets import widgets,interact
from pathlib import Path
from PIL import Image
from  torchkeras.data import download_baidu_pictures 
download_baidu_pictures(keyword='猫咪表情包',needed_pics_num=20, save_dir = 'cats')
files = [str(x) for x in Path('cats').rglob('*.jpg') if 'checkpoint' not in str(x)]
def browser_image(path):
    return Image.open(path) 
    
interact(browser_image, path=files)

三,文本分类 (难度系数: ⭐️⭐️)

代码语言:javascript
复制
#解决国内下载huggingface仓库慢的问题
import os 
os.environ['HF_ENDPOINT']='https://hf-mirror.com'  

import ipywidgets as widgets
from transformers import pipeline

pipe = pipeline("text-classification")

@widgets.interact_manual(text='Good morning')
def clf(text):
    result = pipe(text)
    label = result[0]['label']
    score = result[0]['score']
    res = {label:score,'POSITIVE' if label=='NEGATIVE' else 'NEGATIVE': 1-score}
    return res

代码语言:javascript
复制

四,图片分类 (难度系数: ⭐️⭐️⭐)

代码语言:javascript
复制
import ipywidgets as widgets
from IPython.display import HTML,display 

import pandas as pd 
from ultralytics import YOLO
from skimage import data
from PIL import Image

model = YOLO('yolov8n-cls.pt')

def predict(img):
    ...
    return res

title = ...

files = widgets.Dropdown(
    ...
)

button = widgets.Button(...)
button.style.button_color = 'lightgreen'

out1 = widgets.Output() #widgets.Textarea(value='',layout=widgets.Layout(width='100%',height='100px'))
out2 = widgets.Output()
output = widgets.HBox([out1,out2])

display(title,files,button,output)

def on_button_clicked(btn):
    ...
    with out1:
        display(Image.open(files.value))
    
    with out2:
        display(fig)

button.on_click(on_button_clicked)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,Hello World (难度系数: ⭐️)
  • 二,图片浏览工具 (难度系数: ⭐️⭐️)
  • 三,文本分类 (难度系数: ⭐️⭐️)
  • 四,图片分类 (难度系数: ⭐️⭐️⭐)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档