From ea3673fcfd56c29aa7ecd494f180df35e962be2e Mon Sep 17 00:00:00 2001 From: Mustafa Aldemir Date: Tue, 19 Dec 2017 01:17:31 +0300 Subject: [PATCH] fixed samples --- CNN_MNIST_Keras.ipynb | 95 +++++++----- Classification_SMS.ipynb | 156 +++++-------------- Classification_Titanic.ipynb | 69 +++++++-- ClusteringBlobs.ipynb | 293 +++++++++++++++++++---------------- DecisionTreeClassifier.ipynb | 228 ++++++++------------------- SoftmaxRegression.ipynb | 211 +++++++++++++++++++------ 6 files changed, 544 insertions(+), 508 deletions(-) diff --git a/CNN_MNIST_Keras.ipynb b/CNN_MNIST_Keras.ipynb index 0d60b3e..19c1caf 100644 --- a/CNN_MNIST_Keras.ipynb +++ b/CNN_MNIST_Keras.ipynb @@ -1,5 +1,13 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Convolutional Neural Network\n", + "## recognizing MNIST digits using Keras" + ] + }, { "cell_type": "code", "execution_count": 1, @@ -14,7 +22,6 @@ } ], "source": [ - "# 3. Import libraries and modules\n", "import numpy as np\n", "np.random.seed(123) # for reproducibility\n", " \n", @@ -33,7 +40,7 @@ }, "outputs": [], "source": [ - "# 4. Load pre-shuffled MNIST data into train and test sets\n", + "# get train and test datasets\n", "(X_train, y_train), (X_test, y_test) = mnist.load_data()" ] }, @@ -45,9 +52,7 @@ }, "outputs": [], "source": [ - "# 5. Preprocess input data\n", - "#X_train = X_train.reshape(X_train.shape[0], 1, 28, 28)\n", - "#X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)\n", + "# preprocess input data\n", "\n", "X_train = X_train.reshape(-1, 28, 28, 1)\n", "X_test = X_test.reshape(-1, 28, 28, 1)\n", @@ -85,7 +90,7 @@ }, "outputs": [], "source": [ - "# 6. Preprocess class labels\n", + "# preprocess class labels\n", "Y_train = np_utils.to_categorical(y_train, 10)\n", "Y_test = np_utils.to_categorical(y_test, 10)" ] @@ -112,13 +117,13 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# 7. Define model architecture\n", + "# define the topology\n", "model = Sequential()\n", "\n", "model.add(Convolution2D(32, (3, 3), activation='relu', input_shape=(28,28,1)))\n", @@ -134,13 +139,13 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# 8. Compile model\n", + "# compile the model\n", "model.compile(loss='categorical_crossentropy',\n", " optimizer='adam',\n", " metrics=['accuracy'])" @@ -148,66 +153,78 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/10\n", - "60000/60000 [==============================] - 262s - loss: 0.2154 - acc: 0.9343 \n", - "Epoch 2/10\n", - "27712/60000 [============>.................] - ETA: 142s - loss: 0.0942 - acc: 0.9727" + "Epoch 1/3\n", + "60000/60000 [==============================] - 193s - loss: 0.2465 - acc: 0.9243 \n", + "Epoch 2/3\n", + "60000/60000 [==============================] - 190s - loss: 0.0953 - acc: 0.9711 \n", + "Epoch 3/3\n", + "60000/60000 [==============================] - 224s - loss: 0.0745 - acc: 0.9774 \n" ] }, { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# 9. Fit model on training data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m model.fit(X_train, Y_train, \n\u001b[0;32m----> 3\u001b[0;31m batch_size=32, epochs=10, verbose=1)\n\u001b[0m", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/keras/models.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, **kwargs)\u001b[0m\n\u001b[1;32m 865\u001b[0m \u001b[0mclass_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclass_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 866\u001b[0m \u001b[0msample_weight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msample_weight\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 867\u001b[0;31m initial_epoch=initial_epoch)\n\u001b[0m\u001b[1;32m 868\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 869\u001b[0m def evaluate(self, x, y, batch_size=32, verbose=1,\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m 1596\u001b[0m \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1597\u001b[0m \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1598\u001b[0;31m validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m 1599\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1600\u001b[0m def evaluate(self, x, y,\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36m_fit_loop\u001b[0;34m(self, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m 1181\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'size'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_ids\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1182\u001b[0m \u001b[0mcallbacks\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mon_batch_begin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_index\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch_logs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1183\u001b[0;31m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1184\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1185\u001b[0m \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m 2271\u001b[0m updated = session.run(self.outputs + [self.updates_op],\n\u001b[1;32m 2272\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2273\u001b[0;31m **self.session_kwargs)\n\u001b[0m\u001b[1;32m 2274\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mupdated\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2275\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 893\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 894\u001b[0m result = self._run(None, fetches, feed_dict, options_ptr,\n\u001b[0;32m--> 895\u001b[0;31m run_metadata_ptr)\n\u001b[0m\u001b[1;32m 896\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run\u001b[0;34m(self, handle, fetches, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1122\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfinal_fetches\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0mfinal_targets\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mhandle\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mfeed_dict_tensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1123\u001b[0m results = self._do_run(handle, final_targets, final_fetches,\n\u001b[0;32m-> 1124\u001b[0;31m feed_dict_tensor, options, run_metadata)\n\u001b[0m\u001b[1;32m 1125\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1126\u001b[0m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_run\u001b[0;34m(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)\u001b[0m\n\u001b[1;32m 1319\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mhandle\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1320\u001b[0m return self._do_call(_run_fn, self._session, feeds, fetches, targets,\n\u001b[0;32m-> 1321\u001b[0;31m options, run_metadata)\n\u001b[0m\u001b[1;32m 1322\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1323\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_prun_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeeds\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_do_call\u001b[0;34m(self, fn, *args)\u001b[0m\n\u001b[1;32m 1325\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_do_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1326\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1327\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1328\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mOpError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1329\u001b[0m \u001b[0mmessage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcompat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_text\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/anaconda3/envs/idp36/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m_run_fn\u001b[0;34m(session, feed_dict, fetch_list, target_list, options, run_metadata)\u001b[0m\n\u001b[1;32m 1304\u001b[0m return tf_session.TF_Run(session, options,\n\u001b[1;32m 1305\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget_list\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1306\u001b[0;31m status, run_metadata)\n\u001b[0m\u001b[1;32m 1307\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1308\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_prun_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msession\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfeed_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfetch_list\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "# 9. Fit model on training data\n", + "# 9train the model\n", "model.fit(X_train, Y_train, \n", - " batch_size=32, epochs=10, verbose=1)" + " batch_size=64, epochs=3, verbose=1)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "# 10. Evaluate model on test data\n", + "# evaluate model on test data\n", "score = model.evaluate(X_test, Y_test, verbose=0)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[0.035671641548021583, 0.98750000000000004]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "score" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/Classification_SMS.ipynb b/Classification_SMS.ipynb index 751c0aa..5bc67b4 100644 --- a/Classification_SMS.ipynb +++ b/Classification_SMS.ipynb @@ -17,14 +17,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# SciPy 2016 Scikit-learn Tutorial" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Case Study - Text classification for SMS spam detection" + "# Text classification for SMS spam detection" ] }, { @@ -41,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "metadata": { "collapsed": true }, @@ -58,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { "scrolled": true }, @@ -78,7 +71,7 @@ " 'Had your mobile 11 months or more? U R entitled to Update to the latest colour mobiles with camera for Free! Call The Mobile Update Co FREE on 08002986030']" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -89,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "scrolled": true }, @@ -100,7 +93,7 @@ "[0, 0, 1, 0, 0, 1, 0, 0, 1, 1]" ] }, - "execution_count": 7, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -111,7 +104,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -128,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -137,7 +130,7 @@ "list" ] }, - "execution_count": 9, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -148,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -157,7 +150,7 @@ "list" ] }, - "execution_count": 10, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -175,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -198,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -219,7 +212,7 @@ " tokenizer=None, vocabulary=None)" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -233,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": { "collapsed": true }, @@ -248,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "metadata": { "scrolled": true }, @@ -267,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -276,7 +269,7 @@ "(4180, 7453)" ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -287,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -304,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -321,7 +314,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -354,33 +347,18 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 16, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", - " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", - " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", - " verbose=0, warm_start=False)" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "\n", - "clf = LogisticRegression()\n", - "clf" + "clf = LogisticRegression()" ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -392,7 +370,7 @@ " verbose=0, warm_start=False)" ] }, - "execution_count": 20, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -410,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -419,7 +397,7 @@ "0.98493543758967006" ] }, - "execution_count": 21, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -437,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -446,7 +424,7 @@ "0.99832535885167462" ] }, - "execution_count": 22, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -459,12 +437,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Visualizing important features" + "### Visualizing important features" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 20, "metadata": { "collapsed": true }, @@ -476,6 +454,7 @@ " positive_coefficients = np.argsort(coef)[-n_top_features:]\n", " negative_coefficients = np.argsort(coef)[:n_top_features]\n", " interesting_coefficients = np.hstack([negative_coefficients, positive_coefficients])\n", + " \n", " # plot them\n", " plt.figure(figsize=(15, 5))\n", " colors = [\"red\" if c < 0 else \"blue\" for c in coef[interesting_coefficients]]\n", @@ -486,62 +465,14 @@ }, { "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3YAAAFUCAYAAABoVq6ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xm879W8+PHX+5xTp3k+zROJRCFHqVCGqKRBorhNhkil\nwZgpsyRCEkmUMRkqVCoiZOhEyXhlrMsl3OsOXFTr98d7fX/7c759h88+e5+9z6fzej4e38fe+7u/\n6/uZ11rvtdZnfaKUgiRJkiSpu+bM9gpIkiRJkqbGwE6SJEmSOs7ATpIkSZI6zsBOkiRJkjrOwE6S\nJEmSOs7ATpIkSZI6zsBOkiRJkjrOwE6SJEmSOs7ATpIkSZI6bt5sr8Aw6623Xtlyyy1nezUkSZIk\naVbccMMNfyylLGjz2WU2sNtyyy1ZtGjRbK+GJEmSJM2KiPh12886FFOSJEmSOs7ATpIkSZI6zsBO\nkiRJkjpuyoFdRGwWEddExI8j4ocRcfyAz0REvCsibomI70fEDlNdriRJkiQpTcfkKXcALyylfDci\nVgduiIirSik/anxmL2Dr+toJOLv+lCRJkiRN0ZR77EopvyulfLf+/t/Aj4FN+j62H3BBSd8C1oqI\njaa6bEmSJEnSNN9jFxFbAg8Bvt33r02AWxt/38bdgz8i4qiIWBQRi26//fbpXDVJkiRJuseatsAu\nIlYDPg2cUEr5r/5/D0hS7vZGKeeUUhaWUhYuWNDqOXySJEmStNyblsAuIlYgg7qPllI+M+AjtwGb\nNf7eFPjtdCxbkiRJkpZ30zErZgAfAH5cSnn7kI9dChxWZ8d8OPCXUsrvprpsSZIkSdL0zIq5K3Ao\ncHNE3FjfezmwOUAp5b3AZcDewC3AX4Ejp2G5kiRJknQ3MehGsBHK3W4S654pB3allK8z+B665mcK\ncMxUlyVJkiRJurtpnRVTkiRJkjTzDOwkSZIkqeMM7CRJkiSp4wzsJEmSJKnjDOwkSZIkqeMM7CRJ\nkiSp4wzsJEmSJKnjDOwkSZIkqeMM7CRJkiSp4wzsJEmSJKnjDOwkSZIkqeMM7CRJkiSp4wzsJEmS\nJKnjDOwkSZIkqeMM7CRJkiSp4+bN9gpIkiRJUr+IyX2+lKWzHl1hj50kSZIkdZyBnSRJkiR1nIGd\nJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0k\nSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkddy82V4BSZIkSfdMEZP7fClLZz2WB/bYSZIkSVLH\nGdhJkiRJUsdNS2AXEedFxB8i4gdD/r97RPwlIm6sr1dPx3IlSZIkjRYxuddU0k526KWmz3TdY/ch\n4N3ABSM+87VSyj7TtDxJkiRpueG9ahpnWnrsSinXAn+eju+SJEmSJE3OTN5jt3NE3BQRl0fEA2Zw\nuZIkSZJ0jzZTjzv4LrBFKeV/ImJv4GJg6/4PRcRRwFEAm2+++QytmiRJkiR124z02JVS/quU8j/1\n98uAFSJivQGfO6eUsrCUsnDBggUzsWqSJEmS1HkzEthFxIYRectnROxYl/unmVi2JEmSJN3TTctQ\nzIj4OLA7sF5E3AacAqwAUEp5L/AU4OiIuAP4G3BwKc7VI0mSJEnTYVoCu1LKIWP+/27ycQiSJEmS\npGk2k7NiSpIkSZKWAgM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6rhpedyB\nJEmSpNEiJvd5n/qsybDHTpIkSZI6zsBOkiRJkjrOwE6SJEmSOs577CRJkqQWvEdOyzJ77CRJkiSp\n4+yxkyRJ0nLDXjfdU9ljJ0mSJEkdZ4+dJEmSOsVeN+nu7LGTJEmSpI4zsJMkSZKkjjOwkyRJkqSO\n8x47SZIkTdpU7nObbNr+9JLuzh47SZIkSeo4AztJkiRJ6jiHYkqSJC2nfGyAdM9hYCdJktRhBmeS\nwKGYkiRJktR5BnaSJEmS1HEOxZQkSZpFDqWUNB0M7CRJkpjZ57IZnEmabgZ2kiTpHsGHXktannmP\nnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nJOnSJKkaeXskpI086alxy4izouIP0TED4b8\nPyLiXRFxS0R8PyJ2mI7lSpKkwSIm/5pKeknS7JquoZgfAvYc8f+9gK3r6yjg7GlariRJkiQt96Yl\nsCulXAv8ecRH9gMuKOlbwFoRsdF0LFuSJEmSlnczNXnKJsCtjb9vq+8tJiKOiohFEbHo9ttvn6FV\nkyRp2eRwSElSWzMV2A0qbu52u3Mp5ZxSysJSysIFCxbMwGpJkjSa96pJkrpgpgK724DNGn9vCvx2\nhpYtSZIkSfdoMxXYXQocVmfHfDjwl1LK72Zo2ZIkSZJ0jzYtz7GLiI8DuwPrRcRtwCnACgCllPcC\nlwF7A7cAfwWOnI7lSpIkSZKmKbArpRwy5v8FOGY6liVJkiRJWtxMDcWUJEmSJC0lBnaSJEmS1HEG\ndpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2\nkiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaS\nJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIk\nSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJktRxBnaSJEmS1HEGdpIkSZLUcQZ2kiRJ\nktRxBnaSJEmS1HEGdpIkSZLUcdMS2EXEnhHx04i4JSJeNuD/R0TE7RFxY309ezqWK0mSJEmCeVP9\ngoiYC5wF7AHcBlwfEZeWUn7U99ELSynHTnV5kiRJkqTFTUeP3Y7ALaWUX5RS/gF8AthvGr5XkiRJ\nktTCdAR2mwC3Nv6+rb7X78CI+H5EfCoiNhv0RRFxVEQsiohFt99++zSsmiRJkiTd801HYBcD3it9\nf38O2LKUsj1wNXD+oC8qpZxTSllYSlm4YMGCaVg1SZIkSbrnm47A7jag2QO3KfDb5gdKKX8qpfy9\n/vl+4KHTsFxJkiRJEtMT2F0PbB0R94qIFYGDgUubH4iIjRp/7gv8eBqWK0mSJEliGmbFLKXcERHH\nAl8E5gLnlVJ+GBGvAxaVUi4FXhAR+wJ3AH8GjpjqciVJkiRJKUrpvx1u2bBw4cKyaNGi2V4NSdJy\nLgbdST5Gs2idbPrZSjuby3ablzztbC7bYzW5tLO5bI/V5NIuSyLihlLKwjafnZYHlEuSJEmSZo+B\nnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGd\nJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0k\nSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJ\nkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmSJHWcgZ0kSZIkdZyBnSRJkiR1nIGdJEmS\nJHWcgZ0kSZIkdZyBnSRJkiR13LQEdhGxZ0T8NCJuiYiXDfj//Ii4sP7/2xGx5XQsV5IkSZI0DYFd\nRMwFzgL2ArYFDomIbfs+9izgP0op9wHOAN4y1eVKkiRJktJ09NjtCNxSSvlFKeUfwCeA/fo+sx9w\nfv39U8BjIyKmYdmSJEmStNybjsBuE+DWxt+31fcGfqaUcgfwF2DdaVi2JEmSJC335k3DdwzqeStL\n8Bki4ijgKIDNN9986mu2NCxJR2NpbOpk089W2tlctts8ubSzuWy3ecnTzuayPVaTStt/2CZrKuln\nK+1sLttt7s6y3ebuLNttXj5MR4/dbcBmjb83BX477DMRMQ9YE/hz/xeVUs4ppSwspSxcsGDBNKya\nJEmSJN3zTUdgdz2wdUTcKyJWBA4GLu37zKXA4fX3pwBfLmV5jKMlSZIkafpNeShmKeWOiDgW+CIw\nFzivlPLDiHgdsKiUcinwAeDDEXEL2VN38FSXK0mSJElK03GPHaWUy4DL+t57deP3/wMOmo5lSZIk\nSZIWNy0PKJckSZIkzR4DO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJ\nkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mS\nJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIk\nSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ\n6jgDO0mSJEnqOAM7SZIkSeo4AztJkiRJ6jgDO0mSJEnqOAM7SZIkSeq4KQV2EbFORFwVET+rP9ce\n8rk7I+LG+rp0KsuUJEmSJC1uqj12LwO+VErZGvhS/XuQv5VSHlxf+05xmZIkSZKkhqkGdvsB59ff\nzwf2n+L3SZIkSZImaaqB3QallN8B1J/rD/ncShGxKCK+FRFDg7+IOKp+btHtt98+xVWTJEmSpOXD\nvHEfiIirgQ0H/OsVk1jO5qWU30bEvYEvR8TNpZSf93+olHIOcA7AwoULyyS+X5IkSZKWW2MDu1LK\n44b9LyJ+HxEblVJ+FxEbAX8Y8h2/rT9/ERFfAR4C3C2wkyRJkiRN3lSHYl4KHF5/Pxy4pP8DEbF2\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "visualize_coefficients(clf, vectorizer.get_feature_names())" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.995454545455\n", - "0.98350071736\n" - ] - } - ], - "source": [ - "vectorizer = CountVectorizer(min_df=2)\n", - "vectorizer.fit(text_train)\n", - "\n", - "X_train = vectorizer.transform(text_train)\n", - "X_test = vectorizer.transform(text_test)\n", - "\n", - "clf = LogisticRegression()\n", - "clf.fit(X_train, y_train)\n", - "\n", - "print(clf.score(X_train, y_train))\n", - "print(clf.score(X_test, y_test))" - ] - }, - { - "cell_type": "code", - "execution_count": 28, + "execution_count": 21, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\nLEmSJEnS/BZWV0xJkiRJ0gJiYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEkt\nZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1n\nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdg\nJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2An\nSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLTctgV1E7BoRP4uIOyPijX0+PzAi\n7omIm+rr4OlYriRJkiQJZk/1CyJiFnAqsDNwN/CjiDi/lHJ7z6xnl1KOnOryJEmSJEnzm44Wu+2A\nO0spvyyl3At8BdhrGr5XkiRJkjSG6Qjs1gfuary/u07r9fyIuCUivh4RG/b7oog4JCLmRcS8e+65\nZxpWTZIkSZIWf9MR2EWfaaXn/QXAJqWUrYHLgTP7fVEp5fRSytxSytw5c+ZMw6pJkiRJ0uJvOgK7\nu4FmC9wGwG+bM5RS/lRK+Wd9+yngcdOwXEmSJEkS0xPY/QjYPCIeGhHLAPsA5zdniIh1G2/3BO6Y\nhuVKkiRJkpiGUTFLKfdFxJHAt4FZwBmllNsi4gRgXinlfOBVEbEncB/wZ+DAqS5XkiRJkpSilN7b\n4RYNc+fOLfPmzZvp1ZAkLeGi353kIzQvrRNNP1NpZ3LZ/ubJp53JZbuvJpZ2JpftvppY2kVJRNxQ\nSpk7zrzT8oBySZIkSdLMMbCTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOw\nkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CT\nJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMk\nSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJ\nkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJablsAuInaNiJ9FxJ0R8cY+ny8bEWfX\nz6+LiE2mY7mSJEmSpGkI7CJiFnAqsBuwJbBvRGzZM9srgP8spWwGfAg4carLlSRJkiSl6Wix2w64\ns5Tyy1LKvcBXgL165tkLOLP+/3Vgp4iIaVi2JEmSJC3xZk/Dd6wP3NV4fzew/aB5Sin3RcRfgTWB\nPzZniohDgEMANtpoo2lYtQVgMvFoKZNPP1NpZ3LZ/uaJpZ3JZfubJ592JpftvppQ2t7dNlFTST9T\naWdy2f7m9izb39yeZfublwzT0WLX72rZuynHmYdSyumllLmllLlz5syZhlWTJEmSpMXfdAR2dwMb\nNt5vAPx20DwRMRtYFfjzNCxbkiRJkpZ40xHY/QjYPCIeGhHLAPsA5/fMcz5wQP3/BcB3SlkSG0gl\nSZIkafpN+R67es/ckcC3gVnAGaWU2yLiBGBeKeV84DPA5yPiTrKlbp+pLleSJEmSlKZj8BRKKRcB\nF/VMe1vj/38AL5yOZUmSJEmS5jctDyiXJEmSJM0cAztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJ\nkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJajkDO0mS\nJElqOQM7SZIkSWo5AztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJajkDO0mSJElqOQM7SZIk\nSWo5AztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJ\najkDO0mSJElqOQM7SZIkSWo5AztJkiRJajkDO0mSJElqOQM7SZIkSWo5AztJkiRJarkpBXYRsUZE\nXBYRP69/Vx8w3/0RcVN9nT+VZUqSJEmS5jfVFrs3AleUUjYHrqjv+/l7KWWb+tpzisuUJEmSJDVM\nNbDbCziz/n8msPcUv0+SJEmSNEFTDezWKaX8DqD+XXvAfMtFxLyIuDYiBgZ/EXFInW/ePffcM8VV\nkyRJkqQlw+xRM0TE5cBD+nz0lgksZ6NSym8j4mHAdyLi1lLKL3pnKqWcDpwOMHfu3DKB75ckSZKk\nJdbIwK6U8sxBn0XE7yNi3VLK7yJiXeAPA77jt/XvLyPiu8BjgQcFdpIkSZKkiZtqV8zzgQPq/wcA\n5/XOEBGrR8Sy9f+1gCcDt09xuZIkSZKkaqqB3fuAnSPi58DO9T0RMTciPl3neSQwLyJuBq4E3ldK\n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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3YAAAFUCAYAAABoVq6ZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xm8b9X8+PHX+3Zv423uNk8kJSpyFYkypRINlDKkDJc0\nSKaMmUsqNJdESVFISaUiKoUKSYavzHz9CF++fPt+kdbvj/f6OPt++kxnuOfc3X09H4/P45yzz2ft\nea+93mutvXaUUpAkSZIktdesmV4BSZIkSdLkGNhJkiRJUssZ2EmSJElSyxnYSZIkSVLLGdhJkiRJ\nUssZ2EmSJElSyxnYSZIkSVLLGdhJkiRJUssZ2EmSJElSy82e6RUYZI011igbb7zxTK+GJEmSJM2I\n22677Q+llHnDvrdYB3Ybb7wxt95660yvhiRJkiTNiIj4xSjfsyumJEmSJLWcgZ0kSZIktZyBnSRJ\nkiS13KQDu4jYICKui4jvR8SdEfGqHt+JiDgpIu6KiO9GxDaTXa4kSZIkKU3F4Cn3Aq8ppXwrIlYE\nbouIa0op3298Z1dg0/rZDji9/pQkSZIkTdKkW+xKKb8tpXyr/v5X4AfAel1f2wM4r6SvA6tExDqT\nXbYkSZIkaYqfsYuIjYFHAd/o+td6wK8af/+a+wd/nXksiIhbI+LWu+++eypXT5IkSZIekKYssIuI\nucBngCNKKf890fmUUs4qpcwvpcyfN2/oe/gkSZIkaYk3JYFdRMwhg7pPlFI+2+MrvwE2aPy9fp0m\nSZIkSZqkqRgVM4CPAD8opZzY52uXAQfU0TEfC/yllPLbyS5bkiRJkjQ1o2I+HnghcEdEfKdOexOw\nIUAp5QzgCmA34C7gHuCgKViuJEmSJN1PxPjTlDL16zGdJh3YlVJuBAbuulJKAQ6Z7LIkSZIkSfc3\npaNiSpIkSZKmn4GdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1\nnIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWc\ngZ0kSZIktdzsmV4BSZIkSeoWMb7vl7Jo1qMtbLGTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmS\npJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKkljOwkyRJkqSWM7CTJEmSpJYzsJMkSZKk\nljOwkyRJkqSWM7CTJEmSpJabPdMrIEmSJOmBKWJ83y9l0azHksAWO0mSJElqOQM7SZIkSWq5KQns\nIuKciPh9RHyvz/93ioi/RMR36udtU7FcSZIkSYNFjO8zmbTj7XqpqTNVz9h9DDgFOG/Ad24opew+\nRcuTJEmSlhg+q6ZhpqTFrpRyPfCnqZiXJEmSJGl8pvMZu+0j4rsRcWVEPHwalytJkiRJD2jT9bqD\nbwEbllL+FhG7AZ8DNu31xYhYACwA2HDDDadp9SRJkiSpvaalxa6U8t+llL/V368A5kTEGn2+e1Yp\nZX4pZf68efOmY/UkSZIkqdWmJbCLiLUj8pHPiNi2LveP07FsSZIkSXqgm5KumBFxIbATsEZE/Bo4\nGpgDUEo5A3gOcHBE3Av8L7BfKY7VI0mSJElTYUoCu1LK/kP+fwr5OgRJkiRJ0hSbzlExJUmSJEmL\ngIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktdyUvO5AkiRJ0mAR4/u+b33W\neNhiJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLeczdpIkSdIIxvuMHPicnKaPLXaSJEmS1HK22EmSJGmJ\n4ciUeqCyxU6SJEmSWs4WO0mSJLWKrW7S/dliJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLeczdpIkSRq3\nyT7n5nNy0tSyxU6SJEmSWs7ATpIkSZJazq6YkiRJSyi7Q0oPHAZ2kiRJLWZwJgnsiilJkiRJrWdg\nJ0mSJEktZ1dMSZKkGTTerpRgd0pJ92dgJ0mSxOSeVfM5N0kzzcBOkiQ9YBhgSVpS+YydJEmSJLWc\ngZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcg6dIkqQpNZ2jS3anl6Ql1ZS02EXEORHx+4j4Xp//R0Sc\nFBF3RcR3I2KbqViuJEnqLWL8n8mklyTNrKnqivkxYJcB/98V2LR+FgCnT9FyJUmSJGmJNyWBXSnl\neuBPA76yB3BeSV8HVomIdaZi2ZIkSZK0pJuuwVPWA37V+PvXddr9RMSCiLg1Im69++67p2XlJEla\nHNkdUpI0qsVuVMxSylmllPmllPnz5s2b6dWRJMln1SRJi73pCux+A2zQ+Hv9Ok2SJEmSNEnTFdhd\nBhxQR8d8LPCXUspvp2nZkiRJkvSANiXvsYuIC4GdgDUi4tfA0cAcgFLKGcAVwG7AXcA9wEFTsVxJ\nkiRJ0hQFdqWU/Yf8vwCHTMWyJEmSJEkLW+wGT5EkSZIkjY+BnSRJkiS1nIGdJEmSJLWcgZ0kSZIk\ntZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1\nnIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWc\ngZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyB\nnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGd\nJEmSJLXclAR2EbFLRPwoIu6KiKN6/H+niPhLRHynft42FcuVJEmSJMHsyc4gIpYCTgWeBvwauCUi\nLiulfL/rqzeUUnaf7PIkSZIkSQubiha7bYG7Sik/LaX8A/gksMcUzFeSJEmSNIKpCOzWA37V+PvX\ndVq37SPiuxFxZUQ8vN/MImJBRNwaEbfefffdU7B6kiRJkvTANl2Dp3wL2LCUshVwMvC5fl8spZxV\nSplfSpk/b968aVo9SZIkSWqvqQjsfgNs0Ph7/Trt30op/11K+Vv9/QpgTkSsMQXLliRJkqQl3lQE\ndrcAm0bEgyJiaWA/4LLmFyJi7YiI+vu2dbl/nIJlS5IkSdISb9KjYpZS7o2IQ4EvAksB55RS7oyI\nV9T/nwE8Bzg4Iu4F/hfYr5RSJrtsSZIkSdIUBHbw7+6VV3RNO6Px+ynAKVOxLEmSJEnSwqZr8BRJ\nkiRJ0iJiYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJ\nkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mS\nJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIk\nSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJ\nLWdgJ0mSJEktZ2AnSZIkSS1nYCdJkiRJLTclgV1E7BIRP4qIuyLiqB7/j4g4qf7/uxGxzVQsV5Ik\nSZI0BYFdRCwFnArsCmwB7B8RW3R9bVdg0/pZAJw+2eVKkiRJktJUtNhtC9xVSvlpKeUfwCeBPbq+\nswdwXklfB1aJiHWmYNmSJEmStMSbisBuPeBXjb9/XaeN9zuSJEmSpAmYPdMr0C0iFpDdNdlwww1n\neG36iBjf90tpX9qZXPaSuN5L+jbP5LI9Vos27UwuewrXu/t0nehqtCXtTC57SVzvJXGbZ3LZbvP0\npZ3JZU92vdtoKlrsfgNs0Ph7/TptvN8BoJRyVillfill/rx586Zg9SRJkiTpgW0qArtbgE0j4kER\nsTSwH3BZ13cuAw6oo2M+FvhLKeW3U7BsSZIkSVriTborZinl3og4FPgisBRwTinlzoh4Rf3/GcAV\nwG7AXcA9wEGTXa4kSZIkKU3JM3allCvI4K057YzG7wU4ZCqWJUmSJEla2JS8oFySJEmSNHMM7CRJ\nkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmS\nJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIk\nqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp\n5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnl\nDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlZk8mcUSsBnwK2Bj4ObBvKeW/enzv58BfgX8B95ZS5k9m\nuZIkSZKkMZNtsTsK+FIpZVPgS/Xvfp5USnmkQZ0kSZIkTa3JBnZ7AOfW388F9pzk/CRJkiRJ4zTZ\nwG6tUspv6+//D1irz/cKcG1E3BYRCwbNMCIWRMStEXHr3XffPcnVkyRJkqQHvqHP2EXEtcDaPf71\n5uYfpZQSEaXPbHYopfwmItYEromIH5ZSru/1xVLKWcBZAPPnz+83P0mSJElSNTSwK6U8td//IuJ3\nEbFOKeW3EbEO8Ps+8/hN/fn7iLgE2BboGdhJkiRJksZnsl0xLwNeVH9/EXBp9xciYoWIWLHzO7Az\n8L1JLleSpNGVMv6PJEktMtnA7ljgaRHxY+Cp9W8iYt2IuKJ+Zy3gxoi4Hfgm8IVSylWTXK4kqY0m\nE1wZmEmS1Nek3mNXSvkj8JQe0/8T2K3+/lNg68ksR5I0hSYT9BgwSZK0WJpUYCdJmiEGWJIkqcHA\nTpJmisGZJEmaIgZ2kpZsdkuUJEkPAAZ2ktrPAEuSJC3hDOwkTY3JBlcGZ5IkSRNmYCc90Ni1UJIk\naYljYCctbgyuJEmSNE6TfUG5JEmSJGmGGdhJkiRJUsvZFVNaFOxOKUmSpGlkYCf1Y3AmSZKkljCw\n0+LNIfQlSZKkoQzstOgZXEmSJEmLlIGdRmNwJkmSJC22HBVTkiRJklrOwE6SJEmSWs7ATpIkSZJa\nzsBOkiRJklrOwE6SJEmSWs7ATpIkSZJazsBOkiRJklrOwE6SJEmSWs7ATpIkSZJabvZMr4DGoZSZ\nSStJkiRpsWaLnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyBnSRJkiS1nIGdJEmSJLWcgZ0kSZIktZyB\nnSRJkiS1nIGdJEmSJLWcgZ0kSZIktdykAruI2Cci7oyI+yJi/oDv7RIRP4qIuyLiqMkss/VKGd9H\nkiRJkoaYbIvd94C9gev7fSEilgJOBXYFtgD2j4gtJrlcSZIkSVI1ezKJSyk/AIiIQV/bFrirlPLT\n+t1PAnsA35/MsiVJkiRJaTqesVsP+FXj71/XaT1FxIKIuDUibr377rsX+cpJkiRJUtsNbbGLiGuB\ntXv8682llEuneoVKKWcBZwHMnz/fh8wkSZIkaYihgV0p5amTXMZvgA0af69fp7WXg5pIkiRJWoxM\nR1fMW4BNI+JBEbE0sB9w2TQsV5IkSZKWCJN93cFeEfFr4HHAFyLii3X6uhFxBUAp5V7gUOCLwA+A\ni0opd05utSVJkiRJHZMdFfMS4JIe0/8T2K3x9xXAFZNZliRJkiSpt+noiilJkiRJWoQM7CRJkiSp\n5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5QzsJEmSJKnlDOwkSZIkqeUM7CRJkiSp5aKUMtPr0FdE\n3A38YqbXY5qsAfxhBtLO5LLd5vYs222evrQzuewlcb2XxG2eyWW7ze1Ztts8fWlnctlL4nrP5DZP\n1EallHlDv1VK8bMYfIBbZyLtTC7bbW7Pst1mt3lxXrbb3J5lu83tWbbb7DYvzstu6zYv6o9dMSVJ\nkiSp5QzsJEmSJKnlDOwWH2fNUNqZXLbb3J5lu83Tl3Yml70krveSuM0zuWy3uT3LdpunL+1MLntJ\n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\n3lnEqzMAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -552,13 +483,6 @@ "visualize_coefficients(clf, vectorizer.get_feature_names())" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -570,13 +494,13 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "#Code here" + "# code here\n" ] }, { @@ -588,13 +512,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "#Code here" + "# code here\n" ] } ], diff --git a/Classification_Titanic.ipynb b/Classification_Titanic.ipynb index d1fb498..019ca2d 100644 --- a/Classification_Titanic.ipynb +++ b/Classification_Titanic.ipynb @@ -1138,9 +1138,10 @@ "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import Imputer\n", "\n", + "# split train and test datasets\n", + "train_data, test_data, train_labels, test_labels = train_test_split(data, labels, random_state=42)\n", "\n", - "train_data, test_data, train_labels, test_labels = train_test_split(data, labels, random_state=0)\n", - "\n", + "# complete missing values\n", "imp = Imputer()\n", "imp.fit(train_data)\n", "train_data_finite = imp.transform(train_data)\n", @@ -1156,15 +1157,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "Prediction accuracy: 0.634146\n" + "Prediction accuracy: 0.560976\n" ] } ], "source": [ + "# import required class\n", "from sklearn.dummy import DummyClassifier\n", "\n", + "# create an object\n", "clf = DummyClassifier('most_frequent')\n", + "\n", + "# train the model\n", "clf.fit(train_data_finite, train_labels)\n", + "\n", + "# test with test data\n", "print(\"Prediction accuracy: %f\" % clf.score(test_data_finite, test_labels))" ] }, @@ -1176,24 +1183,66 @@ "source": [ "Exercise\n", "=====\n", - "Try executing the above classification, using LogisticRegression, DecisionTreeClassifier, RandomForestClassifier and MLPClassifier instead of DummyClassifier\n", + "Try executing the above classification, using LogisticRegression, DecisionTreeClassifier, RandomForestClassifier and MLPClassifier instead of DummyClassifier" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Prediction accuracy: 0.746951\n" + ] + } + ], + "source": [ + "# import required class\n", + "from sklearn.tree import DecisionTreeClassifier\n", "\n", - "Does selecting a different subset of features help?" + "# create an object\n", + "clf = DecisionTreeClassifier()\n", + "\n", + "# train the model\n", + "clf.fit(train_data_finite, train_labels)\n", + "\n", + "# test with test data\n", + "print(\"Prediction accuracy: %f\" % clf.score(test_data_finite, test_labels))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "from sklearn import DecisionTreeClassifier\n", + "# code here\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Exercise\n", + "=====\n", "\n", - "clf = DecisionTreeClassifier('most_frequent')\n", - "clf.fit(train_data_finite, train_labels)\n", - "print(\"Prediction accuracy: %f\" % clf.score(test_data_finite, test_labels))" + "Does selecting a different subset of features help?" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# code here\n" ] } ], diff --git a/ClusteringBlobs.ipynb b/ClusteringBlobs.ipynb index 18a8f97..35553c3 100644 --- a/ClusteringBlobs.ipynb +++ b/ClusteringBlobs.ipynb @@ -13,13 +13,6 @@ "import numpy as np" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# SciPy 2016 Scikit-learn Tutorial" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -56,7 +49,18 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import make_blobs\n", + "\n", + "X, y = make_blobs(random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -65,28 +69,45 @@ "(100, 2)" ] }, - "execution_count": 12, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from sklearn.datasets import make_blobs\n", - "\n", - "X, y = make_blobs(random_state=42)\n", "X.shape" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(100,)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -101,9 +122,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the scatter plot above, we can see three separate groups of data points and we would like to recover them using clustering -- think of \"discovering\" the class labels that we already take for granted in a classification task.\n", - "\n", - "Even if the groups are obvious in the data, it is hard to find them when the data lives in a high-dimensional space, which we can't visualize in a single histogram or scatterplot." + "In the scatter plot above, we can see three separate groups of data points and we would like to recover them using clustering -- think of \"discovering\" the class labels that we already take for granted in a classification task." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### K-Means" ] }, { @@ -113,14 +139,12 @@ "Now we will use one of the simplest clustering algorithms, K-means.\n", "This is an iterative algorithm which searches for three cluster\n", "centers such that the distance from each point to its cluster is\n", - "minimized. The standard implementation of K-means uses the Euclidean distance, which is why we want to make sure that all our variables are measured on the same scale if we are working with real-world datastets. In the previous notebook, we talked about one technique to achieve this, namely, standardization.\n", - "\n", - "**Question:** what would you expect the output to look like?" + "minimized." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 6, "metadata": { "collapsed": true }, @@ -142,18 +166,18 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "labels = kmeans.fit_predict(X)" + "predictions = kmeans.fit_predict(X)" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -166,18 +190,18 @@ " 2, 0, 2, 2, 2, 0, 1, 2], dtype=int32)" ] }, - "execution_count": 17, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "labels" + "predictions" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -186,13 +210,13 @@ "False" ] }, - "execution_count": 21, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "all(y == labels)" + "all(y == predictions)" ] }, { @@ -204,14 +228,24 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 10, "metadata": {}, "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -219,88 +253,14 @@ } ], "source": [ - "plt.scatter(X[:, 0], X[:, 1], c=labels);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Compared to the true labels:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.scatter(X[:, 0], X[:, 1], c=y);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, we are probably satisfied with the clustering results. But in general we might want to have a more quantitative evaluation. How about comparing our cluster labels with the ground truth we got when generating the blobs?" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy score: 0.0\n", - "[[ 0 0 34]\n", - " [33 0 0]\n", - " [ 0 33 0]]\n" - ] - } - ], - "source": [ - "from sklearn.metrics import confusion_matrix, accuracy_score\n", + "# c: color, sequence, or sequence of color, optional, default: ‘b’\n", "\n", - "print('Accuracy score:', accuracy_score(y, labels))\n", - "print(confusion_matrix(y, labels))" + "plt.scatter(X[:, 0], X[:, 1], c=predictions)" ] }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "np.mean(y == labels)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "---\n", - "\n", - "**Exercise**\n", - "\n", - "After looking at the \"True\" label array y, and the scatterplot and `labels` above, can you figure out why our computed accuracy is 0.0, not 1.0, and can you fix it?\n", - "\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Even though we recovered the partitioning of the data into clusters perfectly, the cluster IDs we assigned were arbitrary,\n", - "and we can not hope to recover them. Therefore, we must use a different scoring metric, such as ``adjusted_rand_score``, which is invariant to permutations of the labels:" - ] - }, - { - "cell_type": "code", - "execution_count": 23, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -309,7 +269,7 @@ "1.0" ] }, - "execution_count": 23, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +277,15 @@ "source": [ "from sklearn.metrics import adjusted_rand_score\n", "\n", - "adjusted_rand_score(y, labels)" + "# compute the score without taking cluster IDs into account\n", + "adjusted_rand_score(y, predictions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Number of clusters" ] }, { @@ -329,14 +297,14 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -344,9 +312,14 @@ } ], "source": [ - "kmeans = KMeans(n_clusters=4, random_state=42)\n", - "labels = kmeans.fit_predict(X)\n", - "plt.scatter(X[:, 0], X[:, 1], c=labels);" + "# create an object\n", + "kmeans = KMeans(n_clusters=2, random_state=42)\n", + "\n", + "# cluster and get labels\n", + "predictions = kmeans.fit_predict(X)\n", + "\n", + "# plot \n", + "plt.scatter(X[:, 0], X[:, 1], c=predictions);" ] }, { @@ -360,14 +333,14 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nxw+qE1fPmJJSRWZmhyrbYSs7OrOm5y9hufHBZWzYtov6OjG4LsPvTx6TcmVmZgc4PCrQrOkT9ofI\n7za9woU3/YIv/XgJN31wesqVmZnl+bBVhTtl7Eg+fu5k5j6zgZ8t2ZR2OWZmgMOjKnz0nSdz6gkj\n+Zt7FrF9l28UZWbpc3hUgcH1Gb76gTPY8soevvLTpWmXY2bm8KgWZ0wczRXveAN3LFjLL1e8mHY5\nZjbAOTyqyGfOP4WmMSO49u6F7Ny7L+1yzGwAc3hUkaGD6rjh4jNY+/IuT1diZqlyeFSZ1qYsl75l\nErf/ahVPrPa07WaWDodHFbpm5qmMHzWMa+5ayO52367WzPqfw6MKHTeknq+8/3Se2/Ia//fny9Mu\nx8wGIIdHlXrHKY184OyJ/POjK3l2ve93bmb9y+FRxb5w4WlkRwzmmrsW0t7RmXY5ZjaAODyq2Kjh\ng/jyRdNYsnEHtz62Mu1yzGwAcXhUuZnTTuDC08fxrZ8tZ8XmV9Iux8wGCIdHDfji+6YyfEgd19y1\nkI7O6L2DmdkxcnjUgMaRQ/i7PzqNJ9dsY86vVqVdjpkNAA6PGjHrzAmcO6WRGx9cxpqXdqZdjpnV\nOIdHjZDEdX98OnUZMftHC4nw4SszKx+HRw0ZP3oY177nVH654iX+c8HatMsxsxpWtvCQ9K+SNkt6\ntqAtK+khScuT54aC12ZLWiFpmaQZBe1nS1qUvHaTJJWr5lrwodaTeHNTluvuW8oL23enXY6Z1ahy\n7nncDszs1nYtMC8iJgPzknUknQZcAkxN+twsqS7pcwtwBTA5eXR/TyuQyYgbLj6D9s5OPn/PIh++\nMrOyKFt4RMRjQPdpXy8C5iTLc4BZBe13RMSeiHgeWAG0ShoHHB8Rj0f+t+B3C/rYYeTGjOCzF0zh\nZ0s3M/eZDWmXY2Y1qL/HPMZGxMZk+QVgbLI8ASg8SL8uaZuQLHdv75GkKyW1SWrbsmVL31Vdhf7y\n7U286cTRfOnHS3jp1T1pl2NmNSa1AfNkT6JPj6lExK0R0RwRzY2NjX351lWnLiNu/MAZvLK7nS/+\neEna5ZhZjenv8NiUHIoied6ctK8HTizYbmLStj5Z7t5uRThl7Eg+fu5kfvzMBh5asintcsyshvR3\neMwFLkuWLwPuLWi/RNIQSU3kB8bnJ4e4dkg6JznL6tKCPlaEj77zZE49YSR/86NFbN/VnnY5ZlYj\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -375,12 +348,16 @@ } ], "source": [ + "# inertia: Sum of squared distances of samples to their closest cluster center\n", + "\n", "distortions = []\n", "for i in range(1, 11):\n", " km = KMeans(n_clusters=i, \n", " random_state=0)\n", " km.fit(X)\n", " distortions.append(km.inertia_)\n", + " \n", + "# plot inertia for different number of clusters\n", "plt.plot(range(1, 11), distortions, marker='o')\n", "plt.xlabel('Number of clusters')\n", "plt.ylabel('Distortion')\n", @@ -413,9 +390,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from sklearn.datasets import make_blobs\n", "\n", @@ -425,6 +423,36 @@ "transformation = rng.normal(size=(2, 2))\n", "X = np.dot(X, transformation)\n", "\n", + "plt.scatter(X[:, 0], X[:, 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\ngg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ "y_pred = KMeans(n_clusters=3).fit_predict(X)\n", "\n", "plt.scatter(X[:, 0], X[:, 1], c=y_pred)" @@ -434,14 +462,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Some Notable Clustering Routines" + "## Exercise: Clustering algorithms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The following are two well-known clustering algorithms. \n", + "Try some other clustering algorithms\n", "\n", "- `sklearn.cluster.KMeans`:
\n", " The simplest, yet effective clustering algorithm. Needs to be provided with the\n", @@ -467,10 +495,14 @@ ] }, { - "cell_type": "markdown", - "metadata": {}, + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "" + "# code here\n" ] }, { @@ -494,26 +526,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.datasets import load_digits\n", - "digits = load_digits()\n", - "# ..." + "\n", + "# load dataset\n", + "digits = load_digits()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "#%load solutions/08B_digits_clustering.py" + "# code here\n" ] } ], diff --git a/DecisionTreeClassifier.ipynb b/DecisionTreeClassifier.ipynb index b5d4e6c..003de49 100644 --- a/DecisionTreeClassifier.ipynb +++ b/DecisionTreeClassifier.ipynb @@ -335,24 +335,24 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ - "estimator = DecisionTreeClassifier(max_depth=5)" + "estimator = DecisionTreeClassifier(max_depth=2)" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=5,\n", + "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", @@ -360,7 +360,7 @@ " splitter='best')" ] }, - "execution_count": 36, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -371,13 +371,13 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=5,\n", + "DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,\n", " max_features=None, max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", @@ -385,7 +385,7 @@ " splitter='best')" ] }, - "execution_count": 37, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -396,7 +396,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 14, "metadata": { "collapsed": true }, @@ -407,17 +407,17 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 0, 2, 1, 0,\n", - " 0, 2, 0, 0, 1, 1, 0, 2, 1, 0, 2, 2, 1, 0, 2])" + "array([2, 1, 0, 2, 0, 2, 0, 1, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0,\n", + " 0, 1, 0, 0, 1, 1, 0, 2, 1, 0, 1, 2, 1, 0, 2])" ] }, - "execution_count": 39, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -428,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -438,7 +438,7 @@ " 0, 2, 0, 0, 1, 1, 0, 2, 1, 0, 2, 2, 1, 0, 1])" ] }, - "execution_count": 40, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -449,16 +449,16 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "37" + "34" ] }, - "execution_count": 41, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -470,7 +470,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -479,7 +479,7 @@ "38" ] }, - "execution_count": 42, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -490,14 +490,14 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Accuracy: 0.973684\n" + "Accuracy: 0.894737\n" ] } ], @@ -507,7 +507,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -665,7 +665,7 @@ " [ 5.9, 3. , 5.1, 1.8]])" ] }, - "execution_count": 33, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -685,7 +685,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 21, "metadata": { "collapsed": true }, @@ -710,175 +710,75 @@ "\n", "\n", - "\n", - "\n", + "\n", + "\n", "Tree\n", - "\n", + "\n", "\n", "0\n", - "\n", - "petal length (cm) <= 2.35\n", - "samples = 112\n", - "value = [37, 34, 41]\n", - "class = virginica\n", + "\n", + "petal width (cm) <= 0.8\n", + "samples = 112\n", + "value = [37, 34, 41]\n", + "class = virginica\n", "\n", "\n", "1\n", - "\n", - "samples = 37\n", - "value = [37, 0, 0]\n", - "class = setosa\n", + "\n", + "samples = 37\n", + "value = [37, 0, 0]\n", + "class = setosa\n", "\n", "\n", "0->1\n", - "\n", - "\n", - "True\n", + "\n", + "\n", + "True\n", "\n", "\n", "2\n", - "\n", - "petal length (cm) <= 4.95\n", - "samples = 75\n", - "value = [0, 34, 41]\n", - "class = virginica\n", + "\n", + "petal length (cm) <= 4.95\n", + "samples = 75\n", + "value = [0, 34, 41]\n", + "class = virginica\n", "\n", "\n", "0->2\n", - "\n", - "\n", - "False\n", + "\n", + "\n", + "False\n", "\n", "\n", "3\n", - "\n", - "petal width (cm) <= 1.65\n", - "samples = 36\n", - "value = [0, 33, 3]\n", - "class = versicolor\n", + "\n", + "samples = 36\n", + "value = [0, 33, 3]\n", + "class = versicolor\n", "\n", "\n", "2->3\n", - "\n", - "\n", - "\n", - "\n", - "8\n", - "\n", - "petal width (cm) <= 1.75\n", - "samples = 39\n", - "value = [0, 1, 38]\n", - "class = virginica\n", - "\n", - "\n", - "2->8\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "4\n", - "\n", - "samples = 32\n", - "value = [0, 32, 0]\n", - "class = versicolor\n", - "\n", - "\n", - "3->4\n", - "\n", - "\n", - "\n", - "\n", - "5\n", - "\n", - "sepal width (cm) <= 3.1\n", - "samples = 4\n", - "value = [0, 1, 3]\n", - "class = virginica\n", - "\n", - "\n", - "3->5\n", - "\n", - "\n", - "\n", - "\n", - "6\n", - "\n", - "samples = 3\n", - "value = [0, 0, 3]\n", - "class = virginica\n", - "\n", - "\n", - "5->6\n", - "\n", - "\n", - "\n", - "\n", - "7\n", - "\n", - "samples = 1\n", - "value = [0, 1, 0]\n", - "class = versicolor\n", - "\n", - "\n", - "5->7\n", - "\n", - "\n", - "\n", - "\n", - "9\n", - "\n", - "petal width (cm) <= 1.65\n", - "samples = 4\n", - "value = [0, 1, 3]\n", - "class = virginica\n", - "\n", - "\n", - "8->9\n", - "\n", - "\n", - "\n", - "\n", - "12\n", - "\n", - "samples = 35\n", - "value = [0, 0, 35]\n", - "class = virginica\n", - "\n", - "\n", - "8->12\n", - "\n", - "\n", - "\n", - "\n", - "10\n", - "\n", - "samples = 3\n", - "value = [0, 0, 3]\n", - "class = virginica\n", - "\n", - "\n", - "9->10\n", - "\n", - "\n", - "\n", - "\n", - "11\n", - "\n", - "samples = 1\n", - "value = [0, 1, 0]\n", - "class = versicolor\n", + "\n", + "samples = 39\n", + "value = [0, 1, 38]\n", + "class = virginica\n", "\n", - "\n", - "9->11\n", - "\n", - "\n", + "\n", + "2->4\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/SoftmaxRegression.ipynb b/SoftmaxRegression.ipynb index fa193eb..415f780 100644 --- a/SoftmaxRegression.ipynb +++ b/SoftmaxRegression.ipynb @@ -4,14 +4,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# MNIST For ML Beginners\n", - "\n", - "What we will accomplish in this tutorial:\n", - "\n", - "- Learn about the MNIST data and softmax regressions\n", - "- Create a function that is a model for recognizing digits, based on looking at every pixel in the image\n", - "- Use TensorFlow to train the model to recognize digits by having it \"look\" at thousands of examples (and run our first TensorFlow session to do so)\n", - "- Check the model's accuracy with our test data" + "# MNIST For ML Beginners" ] }, { @@ -31,19 +24,23 @@ }, "outputs": [], "source": [ + "%matplotlib inline\n", "from __future__ import absolute_import\n", "from __future__ import division\n", - "from __future__ import print_function" + "from __future__ import print_function\n" ] }, { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "import tensorflow as tf\n", + "import matplotlib.pyplot as plt\n", "\n", + "import tensorflow as tf\n", "from tensorflow.examples.tutorials.mnist import input_data" ] }, @@ -56,10 +53,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Extracting MNIST_data\\train-images-idx3-ubyte.gz\n", - "Extracting MNIST_data\\train-labels-idx1-ubyte.gz\n", - "Extracting MNIST_data\\t10k-images-idx3-ubyte.gz\n", - "Extracting MNIST_data\\t10k-labels-idx1-ubyte.gz\n" + "Extracting MNIST_data/train-images-idx3-ubyte.gz\n", + "Extracting MNIST_data/train-labels-idx1-ubyte.gz\n", + "Extracting MNIST_data/t10k-images-idx3-ubyte.gz\n", + "Extracting MNIST_data/t10k-labels-idx1-ubyte.gz\n" ] } ], @@ -70,8 +67,30 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Datasets(train=, validation=, test=)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mnist" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { @@ -96,7 +115,7 @@ { "data": { "text/plain": [ - "Datasets(train=, validation=, test=)" + "(55000, 10)" ] }, "execution_count": 6, @@ -105,13 +124,15 @@ } ], "source": [ - "mnist" + "mnist.train.labels.shape" ] }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, + "execution_count": 7, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "#Placeholders\n", @@ -125,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "collapsed": true }, @@ -135,6 +156,19 @@ "y = tf.matmul(x, W) + b" ] }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Define cost function\n", + "cost_func = tf.reduce_mean(\n", + " tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))" + ] + }, { "cell_type": "code", "execution_count": 10, @@ -143,7 +177,8 @@ }, "outputs": [], "source": [ - "# Define loss and optimizer\n" + "# Define training step\n", + "train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cost_func)" ] }, { @@ -154,8 +189,11 @@ }, "outputs": [], "source": [ - "cross_entropy = tf.reduce_mean(\n", - " tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))" + "# Start a TF session\n", + "sess = tf.InteractiveSession()\n", + "\n", + "# initialize the variables\n", + "tf.global_variables_initializer().run()" ] }, { @@ -166,20 +204,49 @@ }, "outputs": [], "source": [ - "train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)" + "# Train\n", + "for _ in range(100):\n", + " x_batch, y_batch = mnist.train.next_batch(50)\n", + " sess.run(train_step, feed_dict={x: x_batch, y_: y_batch})" ] }, { "cell_type": "code", "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.8717\n" + ] + } + ], + "source": [ + "# Test trained model\n", + "correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))\n", + "\n", + "accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n", + "\n", + "print(sess.run(accuracy, feed_dict={x: mnist.test.images,\n", + " y_: mnist.test.labels}))" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, "source": [ - "sess = tf.InteractiveSession()\n", - "\n", - "tf.global_variables_initializer().run()" + "## Test image" ] }, { @@ -190,31 +257,47 @@ }, "outputs": [], "source": [ - "# Train\n", - "for _ in range(100):\n", - " batch_xs, batch_ys = mnist.train.next_batch(50)\n", - " sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})" + "testimage = mnist.test.images[56]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(784,)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Test trained model\n", - "correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))" + "testimage.shape" ] }, { "cell_type": "code", "execution_count": 16, - "metadata": { - "collapsed": true - }, - "outputs": [], + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))" + "mnist.test.labels[56]" ] }, { @@ -223,18 +306,48 @@ "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.8834\n" - ] + "data": { + "image/png": "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\nTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "#Test\n", - "\n", - "print(sess.run(accuracy, feed_dict={x: mnist.test.images,\n", - " y_: mnist.test.labels}))" + "plt.imshow(testimage.reshape(28,28), cmap='gray')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "prediction=tf.argmax(y,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "prediction.eval(feed_dict={x: [testimage]}, session=sess)" ] }, {