Last active
March 11, 2018 05:26
-
-
Save sanvishal/21501b6e8dc3e1cb61c7279f52aee2db to your computer and use it in GitHub Desktop.
ML
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"%matplotlib inline\n", | |
"import numpy as np\n", | |
"from matplotlib import pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 139, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"data = [[3, 1.5, 1],\n", | |
" [2, 1, 0],\n", | |
" [4, 1.5, 1],\n", | |
" [3, 1, 0],\n", | |
" [3.5, .5, 1],\n", | |
" [2, .5, 0],\n", | |
" [5.5, 1, 1],\n", | |
" [1, 1, 0]]\n", | |
"\n", | |
"mystery_flower = [1,4]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"w1 = np.random.randn()\n", | |
"w2 = np.random.randn()\n", | |
"b = np.random.randn()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 157, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0xfc5a9b0>]" | |
] | |
}, | |
"execution_count": 157, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"def sigmoid(x):\n", | |
" return 1/(1+np.exp(-x))\n", | |
"def dsigmoid(x):\n", | |
" return sigmoid(x)*(1-sigmoid(x))\n", | |
"l = []\n", | |
"for i in range(-100,100): l.append(sigmoid(i))\n", | |
"plt.plot(l)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 158, | |
"metadata": { | |
"scrolled": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0xfd28a50>]" | |
] | |
}, | |
"execution_count": 158, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"X = np.linspace(-5,5,100)\n", | |
"Y = sigmoid(X)\n", | |
"dY = dsigmoid(X)\n", | |
"plt.plot(X,Y,c='g')\n", | |
"plt.plot(X,dY,c='r')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"#scatter\n", | |
"plt.axis([0,6,0,6])\n", | |
"plt.grid()\n", | |
"for i in data:\n", | |
" point = i\n", | |
" c = ''\n", | |
" if(i[2] == 0):\n", | |
" c = 'g'\n", | |
" else: c = 'r'\n", | |
" plt.scatter(i[0],i[1],c = c)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 214, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"0.0016364089990859596\n", | |
"it's blue!!\n" | |
] | |
} | |
], | |
"source": [ | |
"#train\n", | |
"learnrate = .2\n", | |
"costs = []\n", | |
"w1 = np.random.randn()\n", | |
"w2 = np.random.randn()\n", | |
"b = np.random.randn()\n", | |
"for i in range(5000):\n", | |
" pt = np.random.randint(len(data))\n", | |
" point = data[pt]\n", | |
" z = w1*point[0] + w2*point[1] + b\n", | |
" pred = sigmoid(z)\n", | |
" tar = point[2]\n", | |
" cost = np.square(h-tar)\n", | |
" if(i%1000 == 0):\n", | |
" costs.append(cost)\n", | |
" dcostpred = 2*(pred-tar)\n", | |
" dpredz = dsigmoid(z)\n", | |
" dw1z = point[0]\n", | |
" dw2z = point[1]\n", | |
" dbz = 1\n", | |
" \n", | |
" dcostw1 = dcostpred * dpredz * dw1z\n", | |
" dcostw2= dcostpred * dpredz * dw2z\n", | |
" dcostb= dcostpred * dpredz * dbz\n", | |
" \n", | |
" w1 -= dcostw1 * learnrate\n", | |
" w2 -= dcostw2 * learnrate\n", | |
" b -= dcostb * learnrate\n", | |
"z = mystery_flower[0]*w1 + mystery_flower[1]*w2 + b\n", | |
"sz = (sigmoid(z))\n", | |
"print(sz)\n", | |
"print('it\\'s red!!' if sz > 0.5 else 'it\\'s blue!!')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 145, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"1" | |
] | |
}, | |
"execution_count": 145, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"import os\n", | |
"os.system('say red')" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment