Skip to main content

Search Data Explorer


Visualize optimization search-data via plotly in a streamlit dashboard

The Search-Data-Explorer is a simple application specialized to visualize search-data generated from Gradient-Free-Optimizers or Hyperactive. It is designed as an easy-to-use tool to gain insights into multi-dimensional data, as commonly found in optimization.

I created this package, because I needed a convenient tool to visually analyse search-data during the development of gradient-free-optimization algorithms. My goal for this package is to help users get insight into the search-data and its corresponding objective-function and search-space. Building on this insight could help improve the selection of the search-space, compare models in the objective-function or explain the behaviour of the optimization algorithm.


Disclaimer

This project is in an early development stage and is only tested manually. If you encounter bugs or have suggestions for improvements, then please open an issue.


Installation

pip install search-data-explorer

How to use

The Search Data Explorer has a very simple API, that can be explained by the examples below or just execute the command "search-data-explorer [file]" to open the Search Data Explorer without executing a python script.


search-data requirements

The Search Data Explorer is used by loading the search-data with a few lines of code. The search data that is loaded from file must follow the pattern below. The columns can have any name but must contain the score, which is always included in search-data from Gradient-Free-Optimizers or Hyperactive.

first column name another column name ... score
0.756 0.1 0.2 -3
0.823 0.3 0.1 -10
... ... ... ...
... ... ... ...

Examples


Load search-data by passing dataframe

You can pass the search-data directly, if you do not want to save your search-data to disk and just explore it one time after the optimization has finished.

import numpy as np
from gradient_free_optimizers import RandomSearchOptimizer

from search_data_explorer import SearchDataExplorer


def parabola_function(para):
    loss = para["x"] * para["x"] + para["y"] * para["y"] + para["y"] * para["y"]
    return -loss


search_space = {
    "x": np.arange(-10, 10, 0.1),
    "y": np.arange(-10, 10, 0.1),
    "z": np.arange(-10, 10, 0.1),
}

# generate search-data for this example with gradient-free-optimizers

opt = RandomSearchOptimizer(search_space)
opt.search(parabola_function, n_iter=1000)

search_data = opt.search_data


# Open Search-Data-Explorer

sde = SearchDataExplorer()
sde.open(search_data)  # pass search-data

Load search-data by passing path to file

If you already have a search-data file on disk you can pass the path to the file to the search-data-explorer.

import numpy as np
from gradient_free_optimizers import RandomSearchOptimizer

from search_data_explorer import SearchDataExplorer


def parabola_function(para):
    loss = para["x"] * para["x"] + para["y"] * para["y"] + para["y"] * para["y"]
    return -loss


search_space = {
    "x": np.arange(-10, 10, 0.1),
    "y": np.arange(-10, 10, 0.1),
    "z": np.arange(-10, 10, 0.1),
}

# generate search-data for this example with gradient-free-optimizers

opt = RandomSearchOptimizer(search_space)
opt.search(parabola_function, n_iter=1000)

search_data = opt.search_data
search_data.to_csv("search_data.csv", index=False)


# Open Search-Data-Explorer

sde = SearchDataExplorer()
sde.open("model1.csv")  # pass path to file on disk

Load search-data by browsing for file

You can just open the search-data-explorer without passing a file or path. In this case you can browse for the file via a menu inside the search-data-explorer.

import numpy as np
from gradient_free_optimizers import RandomSearchOptimizer

from search_data_explorer import SearchDataExplorer


def parabola_function(para):
    loss = para["x"] * para["x"] + para["y"] * para["y"] + para["y"] * para["y"]
    return -loss


search_space = {
    "x": np.arange(-10, 10, 0.1),
    "y": np.arange(-10, 10, 0.1),
    "z": np.arange(-10, 10, 0.1),
}

# generate search-data for this example with gradient-free-optimizers

opt = RandomSearchOptimizer(search_space)
opt.search(parabola_function, n_iter=1000)

search_data = opt.search_data
search_data.to_csv("search_data.csv", index=False)


# Open Search-Data-Explorer

sde = SearchDataExplorer()
sde.open()  # start without passing anything and use the file explorer within the search-data-explorer

Metadata

Release files for search-data-explorer 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for search-data-explorer 0.4.2
File Interpreter ABI Platform
search_data_explorer-0.4.2-py3-none-any.whl Python 3 none any Details

Release files / search_data_explorer-0.4.2-py3-none-any.whl

Download URL search_data_explorer-0.4.2-py3-none-any.whl
Size 25.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee12f4697d6bf5e2811819fcad1e255d365ded6a0854ddc2c8bef0b45d117695
BLAKE2b-256 checksum
How to use checksums
d427fa6fd6a6abe61a8da9b9f833ecb47f9de4c2dae0c6e46060648a967c5d83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.10.10

Release history Release notifications | RSS feed

This release

0.4.2 This release

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page