Package: search-data-explorer
Search Data ExplorerVisualize optimization search-data via plotly in a streamlit dashboardThe Search-Data-Explorer is a simple application specialized to visualize search-data generated fromGradient-Free-OptimizersorHyperactive. 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.DisclaimerThis 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.Installationpip install search-data-explorerHow to useThe 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 requirementsThe 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 thescore, which is always included in search-data fromGradient-Free-OptimizersorHyperactive.first column nameanother column name...score0.7560.10.2-30.8230.30.1-10........................ExamplesLoad search-data by passing dataframeYou 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.importnumpyasnpfromgradient_free_optimizersimportRandomSearchOptimizerfromsearch_data_explorerimportSearchDataExplorerdefparabola_function(para):loss=para["x"]*para["x"]+para["y"]*para["y"]+para["y"]*para["y"]return-losssearch_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-optimizersopt=RandomSearchOptimizer(search_space)opt.search(parabola_function,n_iter=1000)search_data=opt.search_data# Open Search-Data-Explorersde=SearchDataExplorer()sde.open(search_data)# pass search-dataLoad search-data by passing path to fileIf you already have a search-data file on disk you can pass the path to the file to the search-data-explorer.importnumpyasnpfromgradient_free_optimizersimportRandomSearchOptimizerfromsearch_data_explorerimportSearchDataExplorerdefparabola_function(para):loss=para["x"]*para["x"]+para["y"]*para["y"]+para["y"]*para["y"]return-losssearch_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-optimizersopt=RandomSearchOptimizer(search_space)opt.search(parabola_function,n_iter=1000)search_data=opt.search_datasearch_data.to_csv("search_data.csv",index=False)# Open Search-Data-Explorersde=SearchDataExplorer()sde.open("model1.csv")# pass path to file on diskLoad search-data by browsing for fileYou 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.importnumpyasnpfromgradient_free_optimizersimportRandomSearchOptimizerfromsearch_data_explorerimportSearchDataExplorerdefparabola_function(para):loss=para["x"]*para["x"]+para["y"]*para["y"]+para["y"]*para["y"]return-losssearch_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-optimizersopt=RandomSearchOptimizer(search_space)opt.search(parabola_function,n_iter=1000)search_data=opt.search_datasearch_data.to_csv("search_data.csv",index=False)# Open Search-Data-Explorersde=SearchDataExplorer()sde.open()# start without passing anything and use the file explorer within the search-data-explorer