{ "cells": [ { "cell_type": "markdown", "id": "a7e1ece6", "metadata": {}, "source": [ "# Analysing Samples" ] }, { "cell_type": "markdown", "id": "4d09269b", "metadata": {}, "source": [ "{nb-download}`Download this as a Jupyter notebook `" ] }, { "cell_type": "markdown", "id": "b253a871", "metadata": {}, "source": [ "This guide covers how to use `pyXla` to conduct landscape analysis." ] }, { "cell_type": "markdown", "id": "79bc3162", "metadata": {}, "source": [ "The first step is to load a sample:" ] }, { "cell_type": "code", "execution_count": 1, "id": "b51d9fa4", "metadata": {}, "outputs": [], "source": [ "from pyxla.sampling import HilbertCurveSampler\n", "from pyxla import load_data" ] }, { "cell_type": "code", "execution_count": 2, "id": "995acb9d", "metadata": {}, "outputs": [], "source": [ "sampler = HilbertCurveSampler(\n", " sample_size=100, dim=2, return_neighbourhood=True\n", ")\n", "\n", "sample = {\n", " \"X\": sampler,\n", " \"F\": lambda x: (x**2).sum(),\n", " \"V\": lambda x: ((x**2).sum() - 3),\n", " \"D\": lambda x1, x2: ((x1 - x2)**2).sum(), #must take a pair of arguments and real number\n", " # N file is provided by the sampler since return_neighbourhood=True\n", "}\n", "\n", "load_data(sample)" ] }, { "cell_type": "markdown", "id": "dddb7a49", "metadata": {}, "source": [ "The next step, is to import the explainable landscape analysis (xLA) feature of choice. For instance we import the `distr_f` (distribution of objective values) below:" ] }, { "cell_type": "code", "execution_count": 3, "id": "d73cceaf", "metadata": {}, "outputs": [], "source": [ "from pyxla import distr_f" ] }, { "cell_type": "markdown", "id": "94e637b4", "metadata": {}, "source": [ "Lastly, invoke the imported feature." ] }, { "cell_type": "code", "execution_count": 4, "id": "8804c8b1", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "feat, plot = distr_f(sample)" ] }, { "cell_type": "markdown", "id": "dc5be4ba", "metadata": {}, "source": [ "Each xLA feature in `pyXla` produces as output both visual and numerical outputs. For most features these outputs are returned as a pair." ] }, { "cell_type": "markdown", "id": "434a8458", "metadata": {}, "source": [ "The numerical output is the first item in the pair:" ] }, { "cell_type": "code", "execution_count": 5, "id": "1164940f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'f0_min': 160.73330040837118,\n", " 'f0_max': 19232.752479099458,\n", " 'f0_mean': 6936.420529350553,\n", " 'f0_med': 6280.405961150287,\n", " 'f0_q1': 2854.8108119722488,\n", " 'f0_q3': 10077.962605872353,\n", " 'f0_sd': 4584.961439365193,\n", " 'f0_skew': 0.5215991797189812,\n", " 'f0_kurt': -0.4057251792349854,\n", " 'f0_rank_min': 1,\n", " 'f0_rank_max': 100,\n", " 'f0_rank_mean': 50.5,\n", " 'f0_rank_med': 50.5,\n", " 'f0_rank_q1': 25.25,\n", " 'f0_rank_q3': 75.75,\n", " 'f0_rank_sd': 29.011491975882016,\n", " 'f0_rank_skew': 0.0,\n", " 'f0_rank_kurt': -1.2002400240024003}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "feat" ] }, { "cell_type": "markdown", "id": "68659247", "metadata": {}, "source": [ "The visual output is the second item in the pair:" ] }, { "cell_type": "code", "execution_count": 6, "id": "ce2099f6", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot" ] }, { "cell_type": "markdown", "id": "ee6e5dfb", "metadata": {}, "source": [ "For a complete reference of all the xLA features implemented in `pyXla` see the {doc}`API reference <../api-reference/pyxla>`." ] } ], "metadata": { "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.14.4" } }, "nbformat": 4, "nbformat_minor": 5 }