File size: 1,918 Bytes
d88442c
 
 
 
8b007ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d88442c
 
8b007ec
 
 
 
d88442c
8b007ec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import gradio as gr
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
import pandas as pd

# Sample data
data = {
    "Model Name": ["SecModel A", "SecModel B", "SecModel C"],
    "Version": ["1.0", "2.1", "1.3"],
    "Detection Accuracy (%)": [98.5, 97.2, 96.8],
    "False Positive Rate (%)": [0.5, 0.7, 0.6],
    "Processing Time (ms)": [120, 150, 110],
    "Model Size (MB)": [250, 300, 275],
}

df = pd.DataFrame(data)

# Define columns
columns = [
    {"name": "Model Name", "type": "text", "displayed_by_default": True},
    {"name": "Version", "type": "text", "displayed_by_default": True},
    {"name": "Detection Accuracy (%)", "type": "number", "displayed_by_default": True},
    {"name": "False Positive Rate (%)", "type": "number", "displayed_by_default": True},
    {"name": "Processing Time (ms)", "type": "number", "displayed_by_default": True},
    {"name": "Model Size (MB)", "type": "number", "displayed_by_default": True},
]

# Initialize leaderboard
leaderboard = Leaderboard(
    value=df,
    datatype=[col["type"] for col in columns],
    select_columns=SelectColumns(
        default_selection=[col["name"] for col in columns if col["displayed_by_default"]],
        label="Select Columns to Display:",
    ),
    search_columns=["Model Name", "Version"],
    filter_columns=[
        ColumnFilter("Detection Accuracy (%)", type="slider", min=90, max=100, label="Accuracy Range"),
        ColumnFilter("False Positive Rate (%)", type="slider", min=0, max=5, label="False Positive Rate Range"),
        ColumnFilter("Processing Time (ms)", type="slider", min=0, max=200, label="Processing Time Range"),
        ColumnFilter("Model Size (MB)", type="slider", min=0, max=500, label="Model Size Range"),
    ],
    interactive=False,
)

# Gradio interface
with gr.Blocks() as demo:
    gr.Markdown("# Cybersecurity Models Leaderboard")
    leaderboard.render()

demo.launch()