diff --git a/README.md b/README.md index 7741a56..9bd5f8d 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# VGG-16-Implmentation \ No newline at end of file +# VGG-16-Implmentation and # linear regression from scratch \ No newline at end of file diff --git a/linear_regression_from_Scratch.ipynb b/linear_regression_from_Scratch.ipynb new file mode 100644 index 0000000..fb5fe2d --- /dev/null +++ b/linear_regression_from_Scratch.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.datasets import make_regression" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(500, 1) (500,)\n" + ] + } + ], + "source": [ + "x,y = make_regression(n_samples=500,n_features=1, bias=4.2,noise=5.1)\n", + "print (x.shape,y.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "400\n", + "(400, 1)\n", + "(100, 1)\n", + "(400,)\n", + "(100,)\n" + ] + } + ], + "source": [ + "split=int(0.8*x.shape[0])\n", + "print(split)\n", + "\n", + "x_train=x[:split]\n", + "x_test=x[split:]\n", + "\n", + "y_train=y[:split]\n", + "y_test=y[split:]\n", + "\n", + "print(x_train.shape)\n", + "print(x_test.shape)\n", + "\n", + "print(y_train.shape)\n", + "print(y_test.shape)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [], + "source": [ + "def hypothesis(x,w):\n", + " x0=1\n", + " return w[0]*x0+ x*w[1]\n", + "\n", + "\n", + "def get_error(x,w,y_true):\n", + " err=0.0\n", + " m=x.shape[0]\n", + " \n", + " for ix in range(m):\n", + " err += (y_true[ix] - hypothesis(x[ix],w))**2 #MSE error\n", + " \n", + " err=err/2*m\n", + " return err\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "def get_grad(x,w,y_true):\n", + " grad_0=0.0\n", + " grad_1=0.0\n", + " \n", + " \n", + " m=x.shape[0]\n", + " \n", + " for ix in range(m):\n", + " grad_0+=(y_true[ix] - hypothesis(x[ix],w))*(-1)\n", + " grad_1+=(y_true[ix] - hypothesis(x[ix],w))*(-1*x[ix])\n", + " \n", + " grad_0= grad_0/m\n", + " grad_1= grad_1/m\n", + " \n", + " \n", + " \n", + " return [grad_0,grad_1] " + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "def gradient_descent(x,w,y_true,learning_rate=0.1):\n", + " \n", + " error= get_error(x,w,y_true)\n", + " \n", + " \n", + " [grad_0,grad_1]= get_grad(x,w,y_true)\n", + " w[0] = w[0]-learning_rate*grad_0\n", + " w[1] = w[1]-learning_rate*grad_1\n", + " \n", + " \n", + " return error,w" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "w=np.array([0.1,0.1])\n", + "loss=[]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 4.03089334 53.32396686]\n" + ] + } + ], + "source": [ + "for ix in range(400):\n", + " er,w= gradient_descent(x_train,w,y_train,learning_rate=0.01)\n", + " loss.append(er)\n", + " \n", + "print(w) " + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2125290.69581013]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(loss)\n", + "plt.show\n", + "\n", + "\n", + "print(loss[-1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}