Skip to content

Instantly share code, notes, and snippets.

@fedeisas
Created March 2, 2017 19:59
Show Gist options
  • Save fedeisas/e042c804fc9c474872e89da7d25fd311 to your computer and use it in GitHub Desktop.
Save fedeisas/e042c804fc9c474872e89da7d25fd311 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Total examples: 150\n",
"[TRAIN] Total examples: 90 [30, 30, 30]\n",
"[TEST] Total examples: 30 [10, 10, 10]\n",
"[DEV] Total examples: 30 [10, 10, 10]\n",
"[TRAIN] Best score is 0.9667 with n_neighbors=14 and weights=distance\n",
"[DEV] Score is 0.8000 with n_neighbors=14 and weights=distance\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1081f17d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.colors import ListedColormap\n",
"from sklearn import neighbors, datasets\n",
"from sklearn.model_selection import train_test_split\n",
"\n",
"random_state = 100\n",
"\n",
"# import some data to play with\n",
"iris = datasets.load_iris()\n",
"X = iris.data[:, :2] # we only take the first two features. We could\n",
" # avoid this ugly slicing by using a two-dim dataset\n",
"y = iris.target\n",
"\n",
"h = .02 # step size in the mesh\n",
"\n",
"# Create color maps\n",
"cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])\n",
"cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])\n",
"\n",
"print \"Total examples: %d\" % len(X)\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.40, stratify=y, random_state=random_state)\n",
"X_test, X_dev, y_test, y_dev = train_test_split(X_test, y_test, test_size=0.50, stratify=y_test, random_state=random_state)\n",
"\n",
"print \"[TRAIN] Total examples: %d\" % len(X_train), [len(X_train[y_train == target]) for target in [0, 1, 2]]\n",
"print \"[TEST] Total examples: %d\" % len(X_test), [len(X_test[y_test == target]) for target in [0, 1, 2]]\n",
"print \"[DEV] Total examples: %d\" % len(X_dev), [len(X_dev[y_dev == target]) for target in [0, 1, 2]]\n",
"\n",
"best_n_neighbors = None\n",
"best_weights = None\n",
"best_score = None\n",
"\n",
"for n_neighbors in range(5, 15):\n",
" for weights in [\"distance\", \"uniform\"]:\n",
" clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)\n",
" clf.fit(X, y)\n",
" score = clf.score(X_test, y_test)\n",
" \n",
" if best_score is None or score >= best_score:\n",
" best_n_neighbors = n_neighbors\n",
" best_weights = weights\n",
" best_score = score\n",
"\n",
"print \"[TRAIN] Best score is %.4f with n_neighbors=%d and weights=%s\" % (best_score, best_n_neighbors, best_weights)\n",
"\n",
"clf = neighbors.KNeighborsClassifier(best_n_neighbors, weights=best_weights)\n",
"clf.fit(X_train, y_train)\n",
"score = clf.score(X_dev, y_dev)\n",
"print \"[DEV] Score is %.4f with n_neighbors=%d and weights=%s\" % (score, best_n_neighbors, best_weights)\n",
"\n",
"# Plot the decision boundary. For that, we will assign a color to each\n",
"# point in the mesh [x_min, x_max]x[y_min, y_max].\n",
"x_min, x_max = X_dev[:, 0].min() - 1, X_dev[:, 0].max() + 1\n",
"y_min, y_max = X_dev[:, 1].min() - 1, X_dev[:, 1].max() + 1\n",
"xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
" np.arange(y_min, y_max, h))\n",
"Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n",
"\n",
"# Put the result into a color plot\n",
"Z = Z.reshape(xx.shape)\n",
"plt.figure()\n",
"plt.pcolormesh(xx, yy, Z, cmap=cmap_light)\n",
"\n",
"# Plot also the training points\n",
"plt.scatter(X_dev[:, 0], X_dev[:, 1], c=y_dev, cmap=cmap_bold)\n",
"plt.xlim(xx.min(), xx.max())\n",
"plt.ylim(yy.min(), yy.max())\n",
"plt.title(\"3-Class classification (k = %i, weights = '%s')\"\n",
" % (best_n_neighbors, best_weights))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1099bbd10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"import itertools\n",
"cm = confusion_matrix(clf.predict(X_dev), y_dev)\n",
"classes = iris.target_names\n",
"\n",
"plt.imshow(cm, interpolation='nearest', cmap=plt.cm.Blues)\n",
"plt.title('Confusion matrix')\n",
"tick_marks = np.arange(len(classes))\n",
"plt.xticks(tick_marks, classes, rotation=45)\n",
"plt.yticks(tick_marks, classes)\n",
"\n",
"thresh = cm.max() / 2.\n",
"for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
" plt.text(j, i, cm[i, j],\n",
" horizontalalignment=\"center\",\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\n",
"\n",
"plt.tight_layout()\n",
"plt.ylabel('True label')\n",
"plt.xlabel('Predicted label')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment