bindings/jupyter/notebooks/feature-list-view.ipynb (146 lines of code) (raw):
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Feature List View\n",
"\n",
"## Usage"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "92fae3525cd246e4bd6bdaabca12fd98",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"FeatureListView(props='{\"data\": [{\"name\": \"dummy-categorical-feature\", \"type\": \"categorical\", \"domain\": [\"Alab…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import sys, json, math\n",
"from mlvis import FeatureListView\n",
"from random import uniform, gauss\n",
"from IPython.display import display\n",
"if sys.version_info[0] < 3:\n",
" import urllib2 as url\n",
"else:\n",
" import urllib.request as url\n",
" \n",
"def generate_random_steps(k):\n",
" randoms = [uniform(0, 1) / 2 for i in range(0, k)]\n",
" steps = [0] * (k - 1)\n",
" t = 0\n",
" for i in range(0, k - 1):\n",
" steps[i] = t + (1 - t) * randoms[i]\n",
" t = steps[i]\n",
" return steps + [1]\n",
"\n",
"def generate_categorical_feature(states):\n",
" size = len(states)\n",
" distro_a = [uniform(0, 1) for i in range(0, size)] \n",
" distro_b = [uniform(0, 1) for i in range(0, size)]\n",
" return {\n",
" 'name': 'dummy-categorical-feature',\n",
" 'type': 'categorical',\n",
" 'domain': list(states.values()),\n",
" 'distributions': [distro_a, distro_b],\n",
" 'distributionNormalized': [distro_a, distro_b],\n",
" 'colors': ['#47B274', '#6F5AA7'],\n",
" 'divergence': uniform(0, 1)\n",
" }\n",
"\n",
"def generate_numerical_feature():\n",
" domain_size = 100\n",
" distro_a = [uniform(0, 1) for i in range(0, domain_size)]\n",
" distro_b = [uniform(0, 1) for i in range(0, domain_size)]\n",
" return {\n",
" 'name': 'dummy-categorical-numerical',\n",
" 'type': 'numerical',\n",
" 'domain': generate_random_steps(domain_size),\n",
" 'distributions': [distro_a, distro_b],\n",
" 'distributionNormalized': [distro_a, distro_b],\n",
" 'colors': ['#47B274', '#6F5AA7'],\n",
" 'divergence': uniform(0, 1)\n",
" }\n",
"\n",
"def generate_random_categorical_values(states):\n",
" k = 10000\n",
" values = [None] * k\n",
" domain = list(states.values())\n",
" size = len(states)\n",
" for i in range(0, k):\n",
" d = int(math.floor(uniform(0, 1) * size))\n",
" values[i] = domain[d]\n",
" return values\n",
"\n",
"def generate_raw_categorical_feature(states):\n",
" return {\n",
" 'name': 'dummy-raw-categorical-feature',\n",
" 'type': 'categorical',\n",
" 'values': [generate_random_categorical_values(states),\n",
" generate_random_categorical_values(states)]\n",
" }\n",
"\n",
"def generate_raw_numerical_feature():\n",
" return {\n",
" 'name': 'dummy-raw-numerical-feature',\n",
" 'type': 'numerical',\n",
" 'values': [\n",
" [gauss(2, 0.5) for i in range(0, 2500)],\n",
" [gauss(0, 1) for i in range(0, 7500)]\n",
" ]\n",
" }\n",
"\n",
"# load the US states data\n",
"PREFIX = 'https://d1a3f4spazzrp4.cloudfront.net/mlvis/'\n",
"response = url.urlopen(PREFIX + 'jupyter/states.json')\n",
"states = json.loads(response.read().decode())\n",
"\n",
"# Randomly generate the data for the feature list view\n",
"categorical_feature = generate_categorical_feature(states)\n",
"raw_categorical_feature = generate_raw_categorical_feature(states)\n",
"numerical_feature = generate_numerical_feature()\n",
"raw_numerical_feature = generate_raw_numerical_feature()\n",
"data = [categorical_feature, raw_categorical_feature, numerical_feature, raw_numerical_feature]\n",
"\n",
"feature_list_view = FeatureListView(props={\"data\": data, \"width\": 1000})\n",
"\n",
"display(feature_list_view) "
]
}
],
"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.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}