{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![MLU Logo](../../data/MLU_Logo.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this exercise, we will see how to get feature importance from sklearn trees. Our dataset is the MNIST: Handwritten Digit dataset." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%pip install -q -r ../../requirements.txt" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading /home/ec2-user/.mxnet/datasets/mnist/train-images-idx3-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/train-images-idx3-ubyte.gz...\n", "Downloading /home/ec2-user/.mxnet/datasets/mnist/train-labels-idx1-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/train-labels-idx1-ubyte.gz...\n", "Downloading /home/ec2-user/.mxnet/datasets/mnist/t10k-images-idx3-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/t10k-images-idx3-ubyte.gz...\n", "Downloading /home/ec2-user/.mxnet/datasets/mnist/t10k-labels-idx1-ubyte.gz from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/mnist/t10k-labels-idx1-ubyte.gz...\n" ] } ], "source": [ "import numpy as np\n", "from mxnet import gluon\n", "\n", "# Grab the MNIST dataset\n", "x_train, y_train = gluon.data.vision.MNIST(train=True)[:]\n", "x_test, y_test = gluon.data.vision.MNIST(train=False)[:]\n", "\n", "x_train = x_train.asnumpy()\n", "x_test = x_test.asnumpy()\n", "\n", "# reshape and scale to be in [0,1]\n", "x_train = x_train.reshape(60000, 784)\n", "x_test = x_test.reshape(10000, 784)\n", "x_train = x_train.astype('float32')\n", "x_test = x_test.astype('float32')\n", "x_train /= 255\n", "x_test /= 255" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Feature importance with Decision Tree:__" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from sklearn.tree import DecisionTreeClassifier\n", "\n", "tree_features = DecisionTreeClassifier(random_state = 8675309)\n", "tree_features.fit(x_train,y_train)\n", "\n", "plt.figure(figsize=(10, 10))\n", "plt.axis('off')\n", "plt.imshow(tree_features.feature_importances_.reshape(28,28))\n", "plt.title(\"Decision Tree Feature Importances (Acc: {})\".format(tree_features.score(x_test,y_test)))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Feature importance with Random Forest:__" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 0.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 1.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 2.8s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 3.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.8s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 4.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 5.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.8s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 6.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 7.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 8.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.8s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.7s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.0s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 9.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 10.5s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.3s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.2s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.6s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.4s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 11.9s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n", "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 15 out of 15 | elapsed: 12.1s finished\n", "[Parallel(n_jobs=15)]: Using backend ThreadingBackend with 15 concurrent workers.\n", "[Parallel(n_jobs=15)]: Done 2 out of 15 | elapsed: 0.0s remaining: 0.1s\n", "[Parallel(n_jobs=15)]: Done 15 out of 15 | elapsed: 0.0s finished\n" ] } ], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "\n", "# Do a quick sweep for optimal number of features\n", "log = []\n", "for i in np.arange(1, 28*28, 10):\n", " model = RandomForestClassifier(max_features = i,\n", " n_estimators = 15,\n", " n_jobs = -1,\n", " verbose = 1,\n", " random_state = 8675309)\n", " model.fit(x_train,y_train)\n", " log.append(model.score(x_test,y_test))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10,10))\n", "plt.plot(np.arange(1,28*28,10),log)\n", "plt.title(\"Accuracy Max At: {}\".format(np.arange(1,28*28,10)[np.argmax(log)]))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[Parallel(n_jobs=-1)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=-1)]: Done 120 tasks | elapsed: 9.7s\n", "[Parallel(n_jobs=-1)]: Done 255 out of 255 | elapsed: 18.4s finished\n", "[Parallel(n_jobs=40)]: Using backend ThreadingBackend with 40 concurrent workers.\n", "[Parallel(n_jobs=40)]: Done 120 tasks | elapsed: 0.1s\n", "[Parallel(n_jobs=40)]: Done 255 out of 255 | elapsed: 0.1s finished\n" ] }, { "data": { "text/plain": [ "Text(0.5, 1.0, 'Random Forest Feature Importances (Acc: 0.9707)')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Plot the importance there\n", "\n", "best_features = RandomForestClassifier(max_features = 100,\n", " n_estimators = 255,\n", " n_jobs = -1,\n", " verbose = 1,\n", " random_state = 8675309)\n", "best_features.fit(x_train,y_train)\n", "\n", "plt.figure(figsize=(10,10))\n", "plt.axis('off')\n", "plt.imshow(best_features.feature_importances_.reshape(28,28))\n", "plt.title(\"Random Forest Feature Importances (Acc: {})\".format(best_features.score(x_test,y_test)))" ] } ], "metadata": { "kernelspec": { "display_name": "conda_mxnet_p36", "language": "python", "name": "conda_mxnet_p36" }, "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.6.13" } }, "nbformat": 4, "nbformat_minor": 2 }