{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "f413d164-9481-45c8-aeac-c3b78227f3b1", "metadata": { "slideshow": { "slide_type": "skip" }, "tags": [] }, "outputs": [], "source": [ "import altair\n", "import attr\n", "import cattr\n", "import yaml\n", "import enum\n", "from IPython.display import display\n", "from sklearn.neighbors import LocalOutlierFactor\n", "from sklearn.datasets import load_iris, load_linnerud" ] }, { "cell_type": "markdown", "id": "ba8d91a0-ba99-4f1c-b04e-ab463e97c934", "metadata": { "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "# Extracting the Config - Usage" ] }, { "cell_type": "code", "execution_count": 2, "id": "4c046299-965d-4d48-b70a-0f7037b9ec0f", "metadata": { "slideshow": { "slide_type": "fragment" }, "tags": [] }, "outputs": [], "source": [ "@enum.unique\n", "class Dataset(enum.Enum):\n", " LINNERUD = \"linnerud\"\n", " IRIS = \"iris\"\n", "\n", "\n", "@attr.frozen\n", "class ConfigSchema:\n", " dataset: Dataset\n", " outlier_n: int\n", " plot_x: str\n", " plot_y: str" ] }, { "cell_type": "code", "execution_count": 3, "id": "f4fd02df-bc93-40bc-8861-98e0adca2715", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "" ], "text/plain": [ "alt.Chart(...)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "with open(\"config_b.yaml\") as f:\n", " config = cattr.structure(yaml.safe_load(f), ConfigSchema)\n", "\n", "if config.dataset == Dataset.LINNERUD:\n", " data = load_linnerud(as_frame=True).data\n", "elif config.dataset == Dataset.IRIS:\n", " data = load_iris(as_frame=True).data\n", "else:\n", " raise ValueError(f\"Unsupported dataset {config.dataset}\")\n", "\n", "data[\"Outlier\"] = (\n", " LocalOutlierFactor(config.outlier_n)\n", " .fit_predict(data) == -1\n", ")\n", "\n", "altair.Chart(data).mark_point().encode(\n", " x=config.plot_x,\n", " y=config.plot_y,\n", " color=\"Outlier\"\n", ")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.7.3" }, "toc-autonumbering": false, "toc-showmarkdowntxt": false }, "nbformat": 4, "nbformat_minor": 5 }