Skip to content

Instantly share code, notes, and snippets.

@naturale0
Last active October 22, 2020 12:14
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save naturale0/2d5924c6f22cc42fb66a61df7a8a9134 to your computer and use it in GitHub Desktop.
Save naturale0/2d5924c6f22cc42fb66a61df7a8a9134 to your computer and use it in GitHub Desktop.
Implementation of linear (Softmax) classifier with python 2.7.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import seaborn.apionly as sns\n",
"import pandas as pd\n",
"from sklearn.datasets import load_iris\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Fisher's iris data"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(150, 2) (150,)\n"
]
}
],
"source": [
"iris = load_iris()\n",
"X = iris.data[:, [0,2]]\n",
"y = iris.target\n",
"print X.shape, y.shape"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10baee250>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\niyZEpZSy/D8LdchaX2DpjAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10ba839d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(5,5))\n",
"plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor=\"k\", cmap=mpl.cm.Spectral, alpha=.75)\n",
"plt.xlabel(\"Sepal length\")\n",
"plt.ylabel(\"Petal length\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Softmax classifier"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0: loss=1.09227526371\n",
"100: loss=0.601962198994\n",
"200: loss=0.562780512314\n",
"300: loss=0.551222946296\n",
"400: loss=0.545630826021\n",
"500: loss=0.541882691307\n",
"600: loss=0.538820809089\n",
"700: loss=0.536061873077\n",
"800: loss=0.533467262093\n",
"900: loss=0.530983376503\n"
]
}
],
"source": [
"N = 150 # number of samples per class\n",
"D = 2 # feature dimension\n",
"K = 3 # number of classes\n",
"\n",
"reg = 0.05 # regularization strength\n",
"eta = 0.05 # learning rate\n",
"\n",
"# initialize weights (and bias)\n",
"W = np.random.randn(D, K) * 0.01\n",
"b = np.zeros(K)\n",
"\n",
"# training process\n",
"losses = []\n",
"for epoch in range(1000):\n",
" # construct linear decision function\n",
" f = X.dot(W) + b\n",
" \n",
" # compute gradients (backpropagation / chain rule)\n",
" p = np.exp(f) / np.sum(np.exp(f), axis=1, keepdims=True)\n",
" I = np.zeros(p.shape)\n",
" I[range(X.shape[0]), y] = 1\n",
" df = (p - I) / X.shape[0]\n",
" \n",
" dW = (X.T).dot(df)\n",
" dW += reg * W\n",
" db = np.sum(df, axis=0)\n",
" \n",
" # update weights by gradient descent\n",
" W -= eta * dW\n",
" b -= eta * db\n",
" \n",
" # calculate and print loss\n",
" data_loss = -np.sum(np.log(p[range(X.shape[0]), y])) / X.shape[0]\n",
" reg_loss = np.sum(0.5 * reg * (W**2))\n",
" loss = data_loss + reg_loss\n",
" losses.append(loss)\n",
" if epoch % 100 == 0:\n",
" print \"{}: loss={}\".format(epoch, loss)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10bc5e990>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10bcb75d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(losses)\n",
"plt.ylabel(\"Loss\")\n",
"plt.xlabel(\"Epochs\")"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 0.926666666667\n"
]
}
],
"source": [
"# prediction\n",
"pred = np.argmax(X.dot(W) + b, axis=1)\n",
"# accuracy\n",
"acc = (pred==y) / float(y.shape[0])\n",
"print \"Accuracy:\", sum(acc)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10bfc9410>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nrkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10bd38350>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xx1, xx2 = np.meshgrid(np.linspace(4, 9, 200),\n",
" np.linspace(0, 7, 200))\n",
"\n",
"test_data = np.c_[xx1.flatten(), xx2.flatten()]\n",
"test = np.argmax(test_data.dot(W) + b, axis=1)\n",
"\n",
"plt.figure(figsize=(5,5))\n",
"plt.contourf(xx1, xx2, test.reshape(200, 200),\n",
" cmap=mpl.cm.Spectral)\n",
"plt.scatter(X[:, 0], X[:, 1], c=y, edgecolor=\"k\", cmap=mpl.cm.Spectral, alpha=.75)\n",
"plt.xlabel(\"Sepal length\")\n",
"plt.ylabel(\"Petal length\")\n",
"plt.title(\"Decision hyperplane\")"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x10f8c7f90>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10be61d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.heatmap(W, cmap=mpl.cm.bwr)\n",
"plt.xlabel(\"species\")\n",
"plt.ylabel(\"features\")\n",
"plt.title(\"Weights\")"
]
},
{
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment