{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Week2 Linear Regression\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sklearn.base import BaseEstimator\n", "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n", "import numpy as np\n", "\n", "def load_dataset(fname='data/ex1data2.txt'):\n", " \"\"\"\n", " load a (X,y) tuple while X is a n_samples * n_features numpy array and y is the label.\n", " \"\"\"\n", " X = []\n", " y = []\n", " for line in open(fname):\n", " rows = [int(x) for x in line.split(',')]\n", " X.append(rows[0:2])\n", " y.append(rows[-1])\n", " return np.array(X, float32), np.array(y, int)\n", "\n", "class LinearRegression(BaseEstimator):\n", " \"\"\"\n", " implement the linear regression with gradient descent.\n", " \"\"\"\n", " def __init__(self, alpha=0.3, max_iters=100, tols=0.001):\n", " # learning rate\n", " self.alpha = alpha\n", " self.max_iters = max_iters\n", " self.tols = tols\n", " self.histories_ = []\n", " \n", " def fit(self, X, y):\n", " i = 0\n", " prep_J = 0\n", " m, n = X.shape\n", " self.theta = np.zeros(n)\n", " \n", " while i < self.max_iters:\n", " \n", " self.theta = self.theta - self.alpha * self._compute_gradient(X, y)\n", " J = self._compute_cost(X, y)\n", " if abs(J - prep_J) <= self.tols:\n", " print 'converged'\n", " break\n", " else:\n", " # print 'iteration %s cost function %s' %(i, J)\n", " prep_J = J\n", " self.histories_.append(J) \n", " i += 1\n", " \n", " def predict(self, X):\n", " return np.dot(X, self.theta)\n", " \n", " def _compute_cost(self, X, y):\n", " m = X.shape[0]\n", " predicted = self.predict(X)\n", " error = predicted - y\n", " return np.dot(error.T, error) / (2 * m) \n", " \n", " def _compute_gradient(self, X, y):\n", " predicted = self.predict(X)\n", " error = predicted - y \n", " m = X.shape[0]\n", " return np.dot(X.T, error) / m\n", " \n", "X, y = load_dataset()\n", "min_max_scalar = MinMaxScaler()\n", "lr = LinearRegression()\n", "X_scaled = min_max_scalar.fit_transform(X)\n", "X = np.concatenate((np.ones((X.shape[0], 1)), X_scaled), axis=1)\n", "lr.fit(X, y)\n", "\n", "X, y = load_dataset()\n", "lr2 = LinearRegression()\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(X)\n", "X = np.concatenate((np.ones((X.shape[0], 1)), X_scaled), axis=1)\n", "\n", "lr2.fit(X, y)\n", "\n", "import matplotlib.pyplot as plt\n", "x1 = [i for i in range(len(lr.histories_))]\n", "y1 = lr.histories_\n", "x2 = [i for i in range(len(lr2.histories_))]\n", "y2 = lr2.histories_\n", "plt.xlabel('# iterations')\n", "plt.ylabel('cost function')\n", "\n", "plt.plot(x1, y1)\n", "plt.plot(x2, y2, 'r')\n", "plt.show()\n", "\n", "test = np.array([1650, 3], float32)\n", "print 'predicted', np.dot(np.hstack((1, min_max_scalar.transform(test))), lr.theta)\n", "print 'predicted', np.dot(np.hstack((1, scaler.transform(test))), lr2.theta)\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "converged\n" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\ngqFARESK/wfLDlbe8tiSXAAAAABJRU5ErkJggg==\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "predicted 303997.639902\n", "predicted 293081.47949\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some notes\n", "\n", "- seems like the linear regression will not converge if not scale the features. same in octave." ] } ], "metadata": {} } ] }