{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "import xlrd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.stats import multivariate_normal as mvn\n", "import sklearn.neural_network as nn\n", "from scipy.stats import norm\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "hypnames = ['Even','Odd','Squares','Pow2', 'Pow4','Pow16','Mult5','Mult10','Num15to25','Num1to100']" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "workbook = xlrd.open_workbook('/Users/chandola/Downloads/Class_03_08_2017__09_26_1Q_quickquestion20170308926.xlsx')\n", "worksheet = workbook.sheet_by_name(workbook.sheet_names()[0])\n", "num_rows = worksheet.nrows - 1\n", "curr_row = -1\n", "flag = False\n", "vals = []\n", "while curr_row < num_rows:\n", " curr_row += 1\n", " row = worksheet.row(curr_row)\n", " cell_value = worksheet.cell_value(curr_row, 0)\n", " if flag:\n", " try:\n", " cval = int(cell_value)\n", " \n", " vals.append(cval)\n", " except ValueError:\n", " continue\n", " if('Student' in str(cell_value)):\n", " flag = True\n", "vals = np.array(vals)\n", "#plt.hist(vals)\n", "nvals = np.bincount(vals,minlength=11)\n", "\n", "nvals = nvals[1:11]\n", "nvals = nvals/np.sum(nvals[1:11])\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig = plt.figure(figsize=[10,6])\n", "plt.bar(range(1,11),list(nvals),alpha=0.6)\n", "xt = plt.xticks(range(1,11))\n", "ax = plt.gca()\n", "ax.set_xticklabels(hypnames,rotation=45,ha='right')\n", "plt.ylim([0,1])\n", "plt.title('Posterior Distribution, D = {16,4,64,32}')\n", "plt.savefig('/Users/chandola/cse574/slides/images/socrativeexp2017_posteriord2.png',dpi=240)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# generate data\n", "\n", "n = 100\n", "data = np.random.multivariate_normal([6,6],[[1,0],[0,1]],n)\n", "labels = 0*np.ones([data.shape[0],1])\n", "\n", "n = 100\n", "data1 = np.random.multivariate_normal([4,4],[[1,0],[0,1]],n)\n", "labels1 = 1*np.ones([data1.shape[0],1])\n", "\n", "data = np.vstack([data1,data])\n", "labels = np.vstack([labels1,labels])\n", "\n", "n = 100\n", "data1 = np.random.multivariate_normal([8,5],[[1,0],[0,1]],n)\n", "labels1 = 2*np.ones([data1.shape[0],1])\n", "\n", "data = np.vstack([data1,data])\n", "labels = np.vstack([labels1,labels]).flatten()\n", "\n", "plt.scatter(data[labels == 0,0],data[labels == 0,1],c='r',marker='+')\n", "plt.scatter(data[labels == 1,0],data[labels == 1,1],c='g',marker='x')\n", "plt.scatter(data[labels == 2,0],data[labels == 2,1],c='y')" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "mexico = [4.72, 4.15, 4.46, 4.23, 5.28, 4.07, 4.67, 4.87, 4.54, 3.75]\n", "boston = [5.76, 5.12, 5.64, 5.59, 5.54, 5.09, 5.46, 5.87, 5.71, 5.56]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "m_mean = np.mean(mexico)\n", "m_std = np.std(mexico)\n", "b_mean = np.mean(boston)\n", "b_std = np.std(boston)\n", "m_mle = norm(m_mean,m_std)\n", "b_mle = norm(b_mean,b_std)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "p_m_mean = 4.4\n", "p_m_std = 0.5\n", "p_b_mean = 5.0\n", "p_b_std = 0.7\n", "m_prior = norm(p_m_mean,p_m_std)\n", "b_prior = norm(p_b_mean,p_b_std)\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prob that A is born in Mexico City according to prior estimates = 0.736540280607\n", "Prob that B is born in Mexico City according to prior estimates = 0.483941449038\n", " Prob that A is born in Boston according to prior estimates = 0.484068479653\n", " Prob that B is born in Boston according to prior estimates = 0.564131628472\n", "Prob that A is born in Mexico City according to MLE estimates = 0.908572570334\n", "Prob that B is born in Mexico City according to MLE estimates = 0.567880803477\n", " Prob that A is born in Boston according to MLE estimates = 0.000942435640237\n", " Prob that B is born in Boston according to MLE estimates = 0.0528698790113\n" ] } ], "source": [ "a = 4.6\n", "b = 4.9\n", "print \"Prob that A is born in Mexico City according to prior estimates = \"+str(m_prior.pdf(a))\n", "print \"Prob that B is born in Mexico City according to prior estimates = \"+str(m_prior.pdf(b))\n", "\n", "print \" Prob that A is born in Boston according to prior estimates = \"+str(b_prior.pdf(a))\n", "print \" Prob that B is born in Boston according to prior estimates = \"+str(b_prior.pdf(b))\n", "\n", "\n", "print \"Prob that A is born in Mexico City according to MLE estimates = \"+str(m_mle.pdf(a))\n", "print \"Prob that B is born in Mexico City according to MLE estimates = \"+str(m_mle.pdf(b))\n", "\n", "print \" Prob that A is born in Boston according to MLE estimates = \"+str(b_mle.pdf(a))\n", "print \" Prob that B is born in Boston according to MLE estimates = \"+str(b_mle.pdf(b))\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = np.array([[2,2],[7,5],[6,3],[3,1]])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "y = np.array([1,1,-1,-1])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "(0, 8)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWgAAAEACAYAAACeQuziAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEH9JREFUeJzt3XuMrHV9x/H357Ci54BK8FK8kBxKqlFDqmApUairPfVW\nFDU1QmxtTGr/qQUr2EoT7Wn/qNEWtaYXigoBC9oKh7ZaEW+shdiowEEoF1tpqUcUIVChqG1Avv1j\n58jsurszszu7z29m3q9kwz4zz8zzzR72vc/+ZmYnVYUkqT3buh5AkrQyAy1JjTLQktQoAy1JjTLQ\nktQoAy1JjRoY6CRnJrkxyQ1JLkryyK0YTJJm3ZqBTrITeBNwdFUdBRwAnLz5Y0mS5gZcfx/wALAj\nyY+AHcDtmz6VJGntM+iqugc4C/gm8G3ge1X1ua0YTJJm3aAljiOBtwA7gScDByd5/RbMJUkzb9AS\nx3OBL1XV3QBJ9gDPAy7cv0MS/5iHJK1DVWWt6wcF+hbgHUm2A/8L7AK+MupBWpBkd1Xt7nqOQZxz\nvJxzvCZhzkmYEYY7uR20Bv014ALgauD63sXnbHw0SdIgg86gqar3AO/ZglkkSX1m6ZWEC10PMKSF\nrgcY0kLXAwxpoesBhrTQ9QBDWuh6gCEsdD3AuGSjf7A/SU3CGrQktWSYds7SGbQkTRQDLUmNMtCS\n1CgDLUmNMtCS1CgDLUmNMtCS1CgDLUmNMtCS1CgDLUmNMtCS1CgDLUmNMtCS1CgDLUmNMtCS1CgD\nLUmNMtCS1KiBgU7y9CR7+z7uTXLqVgwnSbNspLe8SrINuB04tqr29S7zLa8kaUSb8ZZXu4Bb98dZ\nkrR5Rg30ycBFmzGIJGmpoZc4khzI4vLGM6vqrr7LXeKQpBEN0865Ee7vZcA1/XHuO9Duvs2FqloY\n4X4laeolmQfmR7rNCGfQHwMuq6rzl13uGbQkjWiYdg4V6CQHAf8FHFFV/zPqQSRJS40t0Bs9iCRp\nqc14mp0kaYsYaElqlIGWpEYZaElqlIGWpEYZaElqlIGWpEYZaElqlIGWpEYZaElqlIGWpEYZaElq\nlIGWpEYZaElqlIGWpEYZaElqlIGWpEYZaElqlIGWpEYNDHSSQ5JcnOTmJDclOW4rBpOkWTc3xD5/\nBnyqqn4lyRxw0CbPJEliwLt6J3kssLeqfnqNfXxXb0ka0Tje1fsI4K4k5yW5NskHk+wY34iSpNUM\nWuKYA44G3lxVX03yfuDtwDv7d0qyu29zoaoWxjmkJE26JPPA/Ei3GbDEcRjwL1V1RG/7eODtVXVi\n3z4ucUjSiDa8xFFVdwD7kjytd9Eu4MYxzSdJWsOaZ9AASX4W+BBwIHAr8Maqurfves+gJWlEw7Rz\nYKDHcRBJ0lLjeBaHJKkjBlqSGmWgJalRBlqSGmWgJalRBlqSGmWgJalRBlqSGmWgJalRBlqSGmWg\nJalRBlqSGmWgJalRBlqSGmWgJalRBlqSGmWgJalRBlqSGmWgJalRc8PslOQ24D7gR8ADVXXsZg4l\nSRoy0EAB81V1z2YOI0nrkXA4sLOKK3vbJwC3VbGv28k2ZpQlDt+5W1KrdgJ7EuYT5oE9vcsmWqpq\n8E7JfwD3srjE8ddV9cG+6wa+dbgkbbZemK/obb6wioXuphlsmHYOu8Tx/Kr6TpInAJ9NcktVXdl3\noN19+y5U1cLI00rSFEsyD8yPdJthzqCXHeQPgPur6qzetmfQkjrVW3PeA7y2d9HHgdfsX5Nu0TDt\nHLgGnWRHkkf3Pj8IeDFww3hGlKSxuI3FIC/0ljZe07tsog08g05yBHBpb3MOuLCq3tV3vWfQkjSi\nYdo58hLHeg4iSVpqLEsckqRuGGhJapSBlqRGGWhJapSBlqRGGWhJapSBlqRGGWhJapSBlqRGGWhJ\napSBlqRGGWhJapSBlqRGGWhJapSBlqRGGWhJapSBlqRGGWhJapSBlqRGDRXoJAck2ZvkE5s9kCRp\n0bBn0KcBNwEbe4dZSdLQBgY6yVOBlwMfAnz3bknaIsOcQb8PeBvw0CbPIkkzIeHxw+w3t/ad5ETg\nzqram2R+jf12920uVNXCMAeXpFmRHHMSPPE34MhnwiFPGeo2VasvKyf5Y+DXgAeBRwGPAS6pqjf0\n7VNV5dKHJC2T8ATg1cBrgZ8DPg18HLgM8v1B7Vwz0EsPlBcAZ1TVK5ZdbqAlqWetKFfxg4f3G9zO\nNZc4VuCzOCRpmVWifDZwUn+UR77fYc+gVx/MM2hJs2fYM+XVbz+4nQZakoa00SgvvS8DLUkbMs4o\nL71fAy1JI9usKC89hoGWpKFsRZSXHs9AS9KqtjrKS49toCVpiS6jvHQOAy1JzUR56UwGWtKMajHK\n/Qy0pJnSepT7GWhJU2+SotzPQEuaSpMa5X4GWtLUmIYo9zPQkibatEW5n4GWNHGmOcr9DLSkiTAr\nUe5noCU1axaj3M9AS2rKrEe5n4GW1DmjvDIDLakTRnmwsQQ6yaOALwKPBA4E/qGqzhzlIJKmn1Ee\nzdjOoJPsqKofJJkDrgLOqKqrhj2IpMmW5CVw6OmLW/ecVVWXL15ulNdrmHbODXNHVbX/C30gcABw\nzwZnkzQhFuP8mEvhvdsXL/mj45NPngMnPouHo3w2cJJRHq+hAp1kG3AtcCTwV1V106ZOJakhh54O\nf7EdTu5tn7Idrnod8GaM8qYa9gz6IeDZSR4LXJ5kvqoW9l+fZHff7gv910maTA8vX3zmGDiq75q/\nA067oeruSzoabSIlmQfmR7rNqM/iSPIO4IdV9ae9bdegpSmx8pryBf8Gv3sGvLu3xHHqD+G+V+9f\nh9b6jOtZHI8HHqyq7yXZDlwO/GFVfX7Yg0hq1zAP9K32IKHWb1yBPgo4H9jW+/hIVf3JKAeR1Baf\nfdE9X6gi6ceMclsMtDTjjHK7DLQ0g4zyZDDQ0owwypPHQEtTzChPNgMtTRmjPD0MtDQFjPJ0MtDS\nhDLK089ASxPEKM8WAy01zijPLgMtNcgoCwy01AyjrOUMtNQho6y1GGhpixllDctAS1vAKGs9DLS0\nSYyyNspAS2NklDVOBlraIKOszWKgpXUwytoKBloaklHWVhvXm8YeDlwAPBEo4Jyq+sAoB5FaZJTV\npXEF+jDgsKq6LsnBwDXAq6rq5mEPorUlHA7srOLK3vYJwG1V7Ot2suljlNWKYdo5N+hOquoO4I7e\n5/cnuRl4MnDzWKYUwE5gT8Jre9sfB14DBnocVony2cBJRlktG2kNOslO4IvAs6rq/t5lnkGPQcI8\ncEVv84VVLHQ3zeRbFuVjgcvwTFkNGcsZdN+dHQxcDJy2P8591+3u21yoqoUR5pTGYpUoe6asJiSZ\nB+ZHus0wZ9BJHgF8Erisqt6/7DrPoDeot+a8B5Yucexfk9bqPFPWpBrXg4QBzgfurqrfWc9BtDYf\nJByNUdY0GFegjwf+GbiexafZAZxZVZ8e9iDSRhllTRtfqKKJZpQ1zQy0Jo5R1qww0JoIRlmzyECr\nWUZZs85AqylGWXqYgVbnjLK0MgOtThhlaTADrS1jlKXRGGhtKqMsrZ+B1tgZZWk8DLTGwihL42eg\ntW5GWdpcBlojMcrS1jHQGsgoS90w0FqRUZa6Z6D1Y0ZZaouBnnFGWWqXgZ5BRlmaDAZ6RhhlafKM\n6z0JzwV+Gbizqo5az0E0fkZZmmzjCvQJwP3ABQa6W0ZZmh7DtHNu0J1U1ZVJdo5rKI1mlSifDZzU\nRZSTvAQOPX1x656zquryrZ5BmhUDA62t11qUH54rL4HHXArv3b54yanHJ3m1kZY2h4FuRKtRXurQ\n0xfj/Ov7L9gObz0dMNDSJhhLoJPs7ttcqKqFcdzvtJuMKEsahyTzwPxItxnmaXa9NehP+CDhxk3y\nA30PL3F8YP8Sxw/hPpc4pHUY17M4Pgq8AHgccCfwzqo6b5SDzLpJjvJyPkgojYcvVOnQNEVZ0vgZ\n6C1mlCUNy0BvAaMsaT0M9CYxypI2ykCPkVGWNE4GeoOMsqTNYqDXwShL2goGekhGWdJWM9BrMMqS\numSglzHKklphoDHKkto0s4E2ypJaN1OBNsqSJsnUB9ooS5pUUxlooyxpGkxNoI2ypGkz0YE2ypKm\n2cQF2ihLmhUTEWijLGkWNRtooyxp1g3Tzm1D3MlLk9yS5N+T/N76h+EJCb+Z8FngG8CLgLOBJ1Vx\nchWXGGdJetiagU5yAPDnwEuBZwKnJHnGsHfeUpSTzG/FcTbKOcfLOcdrEuachBmHNegM+ljgG1V1\nW1U9AHwMOGmtG7QU5WXmOzjmesx3PcCQ5rseYEjzXQ8wpPmuBxjSfNcDDGG+6wHGZW7A9U8B9vVt\nfwv4+eU7rbKmfDZwkssWkrQ+gwI97COI38AoS9JYrfksjiTHAbur6qW97TOBh6rq3X37bOxpIJI0\nozb0NLskc8DXgV8Evg18BTilqm4e55CSpJ+05hJHVT2Y5M3A5cABwIeNsyRtjQ2/UEWStDkGvlBl\nLeN6EctmSnJuku8muaHrWdaS5PAkVyS5Mcm/Jjm165lWkuRRSb6c5LokNyV5V9czrSbJAUn2JvlE\n17OsJsltSa7vzfmVrudZTZJDklyc5Obev/txXc+0XJKn976O+z/ubfj76Mze9/oNSS5K8sgV91vv\nGXTvRSxfB3YBtwNfpcH16SQnAPcDF1TVUV3Ps5okhwGHVdV1SQ4GrgFe1drXEyDJjqr6Qe8xiquA\nM6rqqq7nWi7JW4FjgEdX1Su7nmclSf4TOKaq7ul6lrUkOR/4YlWd2/t3P6iq7u16rtUk2cZil46t\nqn2D9t9KSXYCXwCeUVX/l+RvgU9V1fnL993IGfTIL2LpQlVdCfx313MMUlV3VNV1vc/vB24Gntzt\nVCurqv1PozyQxccmmotLkqcCLwc+BHT+lmwDND1fkscCJ1TVubD42FTLce7ZBdzaWpx77gMeAHb0\nftjtYPGHyU/YSKBXehHLUzZwf+rp/YR9DvDlbidZWZJtSa4DvgtcUVU3dT3TCt4HvA14qOtBBijg\nc0muTvKmrodZxRHAXUnOS3Jtkg8m2dH1UAOcDFzU9RAr6f22dBbwTRafHfe9qvrcSvtuJNA+urgJ\nessbFwOn9c6km1NVD1XVs4GnAr/Q2t8+SHIicGdV7aXxs1Pg+VX1HOBlwG/1luRaMwccDfxlVR0N\nfB94e7cjrS7JgcArWPwLmc1JciTwFmAni78lH5zk9Svtu5FA3w4c3rd9OItn0VqnJI8ALgH+pqr+\nvut5Bun9mvtPwHO7nmWZ5wGv7K3vfhR4UZILOp5pRVX1nd5/7wIuZXHpsDXfAr5VVV/tbV/MYrBb\n9TLgmt7XtEXPBb5UVXdX1YPAHhb/n/0JGwn01cDPJNnZ+4n1OuAfN3B/My1JgA8DN1XV+7ueZzVJ\nHp/kkN7n24FfAvZ2O9VSVfX7VXV4VR3B4q+6X6iqN3Q913JJdiR5dO/zg4AXA80926iq7gD2JXla\n76JdwI0djjTIKSz+YG7VLcBxSbb3vu93ASsuEw76WxyrmpQXsST5KPAC4HFJ9gHvrKrzOh5rJc8H\nfhW4Psn+4J1ZVZ/ucKaVPAk4v/co+TbgI1X1+Y5nGqTV5bifAi5d/B5lDriwqj7T7Uir+m3gwt7J\n2K3AGzueZ0W9H3S7gFbX86mqr/V+o7uaxcdIrgXOWWlfX6giSY3a0AtVJEmbx0BLUqMMtCQ1ykBL\nUqMMtCQ1ykBLUqMMtCQ1ykBLUqP+H7F51CdkLwrKAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X[0:2,0],X[0:2,1],marker='x')\n", "plt.scatter(X[2:4,0],X[2:4,1],marker='o')\n", "a = 0.5\n", "c = 0\n", "p1 = [0,c+a*0]\n", "p2 = [(6.0-c)/a,6]\n", "plt.plot([p1[0],p2[0]],[p1[1],p2[1]])\n", "plt.xlim([0,8])\n", "plt.ylim([0,8])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 2. 1.]\n", " [ 1. 1.]\n", " [ 4. 1.]\n", " [ 3. 1.]]\n", "[[2]\n", " [3]\n", " [1]\n", " [4]]\n" ] } ], "source": [ "X = np.array([[2],[1],[4],[3]])\n", "y = np.array([2,3,1,4])\n", "y = y[:,np.newaxis]\n", "X = np.hstack([X,np.ones([X.shape[0],1])])\n", "print X\n", "print y" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 3.5]]\n", "[[ 11.375]]\n", "[[ 6.5]]\n", "[[ 4.875]]\n" ] } ], "source": [ "ws = [np.array([[.5],[1.5]]),np.array([[.5],[3.0]]),np.array([[1.5],[0.5]]),np.array([[.5],[2.0]])]\n", "\n", "for w in ws:\n", " alpha = 1\n", " J2 = 0.5*np.sum((np.dot(X,w) - y)**2) +0.5*alpha*np.dot(np.transpose(w),w)\n", "\n", " print J2" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.25\n", "3.75\n", "18.25\n", "52.5\n" ] } ], "source": [ "ws = [np.array([[.5],[1.5]]),np.array([[.0],[2.5]]),np.array([[1.5],[0.5]]),np.array([[2.5],[.0]])]\n", "\n", "for w in ws:\n", " alpha = 1\n", " J3 = 0.5*np.sum((np.dot(X,w) - y)**2) + 0.5*alpha*np.sum(np.abs(w))\n", " print J3" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "2.25" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = ws[0]\n", "0.5*np.sum((np.dot(X,w) - y)**2)" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 2. 1.]\n", " [ 1. 1.]\n", " [ 2. 1.]\n", " [ 3. 1.]]\n" ] } ], "source": [ "print X" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "from sklearn import linear_model" ] }, { "cell_type": "code", "execution_count": 149, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "model = linear_model.Ridge(fit_intercept=False)" ] }, { "cell_type": "code", "execution_count": 150, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "Ridge(alpha=1.0, copy_X=True, fit_intercept=False, max_iter=None,\n", " normalize=False, random_state=None, solver='auto', tol=0.001)" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X,y)" ] }, { "cell_type": "code", "execution_count": 151, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0.80645161 0.70967742]\n", "0.0\n" ] } ], "source": [ "print model.coef_\n", "print model.intercept_" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.5\n", "[ 0.]\n" ] } ], "source": [ "model1 = linear_model.Lasso()\n", "model1.fit(X,y)\n", "print model1.intercept_\n", "print model1.coef_" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[ 1. 0. ]\n", " [ 0.4 0.6]\n", " [ 0. 1. ]]\n" ] } ], "source": [ "R = np.array([[1,0],[0.4,0.6],[0,1]])\n", "print R" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = [1,10,20]\n", "X2 = [x**2 for x in X]" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0.46666667 0.53333333]\n" ] } ], "source": [ "pi = np.sum(R,axis=0)/3\n", "print pi" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.57142857143\n", "16.25\n" ] } ], "source": [ "mu_1 = np.sum(R[:,0]*X)/np.sum(R[:,0])\n", "mu_2 = np.sum(R[:,1]*X)/np.sum(R[:,1])\n", "print mu_1\n", "print mu_2" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "sigma_1 = (np.sum(R[:,0]*X2)/np.sum(R[:,0])) - mu_1**2\n", "sigma_2 = (np.sum(R[:,1]*X2)/np.sum(R[:,1])) - mu_2**2\n" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16.5306122449\n", "23.4375\n" ] } ], "source": [ "print sigma_1\n", "print sigma_2" ] }, { "cell_type": "code", "execution_count": 103, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = np.array([[0,0],[0,10],[10,0],[10,10],[4,4],[4,6],[6,4],[6,6]])" ] }, { "cell_type": "code", "execution_count": 104, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/chandola/anaconda/lib/python2.7/site-packages/matplotlib/collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self._edgecolors == str('face'):\n" ] }, { "data": { "image/png": "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\nqkuSczwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X[:,0],X[:,1])" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "import scipy.stats as st" ] }, { "cell_type": "code", "execution_count": 113, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = np.array([[-2,-4,-6],[-1,-3,-5],[0,0,0],[1,3,5],[2,4,6]])" ] }, { "cell_type": "code", "execution_count": 115, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "e,v = np.linalg.eig(np.cov(np.transpose(X)))" ] }, { "cell_type": "code", "execution_count": 116, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([ 4.53677475e+01, 1.32252544e-01, 3.81059486e-19])" ] }, "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ "e" ] }, { "cell_type": "code", "execution_count": 120, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "36.294197965093666" ] }, "execution_count": 120, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(np.dot(X,v[:,0:1]))" ] }, { "cell_type": "code", "execution_count": 121, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "0.10580203490632742" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(np.dot(X,v[:,1:2]))" ] }, { "cell_type": "code", "execution_count": 122, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "6.3108872417680948e-31" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.var(np.dot(X,v[:,2:3]))" ] }, { "cell_type": "code", "execution_count": 124, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([[-0.23, -0.88, 0.41],\n", " [-0.52, -0.24, -0.82],\n", " [-0.82, 0.4 , 0.41]])" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.round(v,2)" ] }, { "cell_type": "code", "execution_count": 126, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "text/plain": [ "array([ 0., 0., 0.])" ] }, "execution_count": 126, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(X,axis=0)" ] }, { "cell_type": "code", "execution_count": 134, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-0.23 & -0.88 & 0.41\\\\\n", "-0.52 & -0.24 & -0.82\\\\\n", "-0.82 & 0.40 & 0.41\\\\\n" ] } ], "source": [ "for i in range(3):\n", " print \" & \".join([\"%5.2f\"%x for x in v[i,:]])+\"\\\\\\\\\"" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20526.0517019\n" ] } ], "source": [ "h = np.exp(10*np.log(3))\n", "m = (1/0.05)*(1024 + np.log(1/0.1))\n", "print m" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.6603260869565217" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(18.0/125)/((18.0/125) + (2.0/27))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "## COPIED FROM SVD NOTEBOOK\n", "# ignore from here on\n", "X = np.array([[1,1,1,0,0,0],\n", " [1,1,1,0,0,0],\n", " [0,0 ,0 ,1 ,1 ,1],\n", " [0,0 ,0 ,1 ,1 ,1],\n", " [1,1 ,0 ,0 ,0 ,0]])\n", "print X\n", "U, s, Vh = svd(X)\n", "#plot the elbow plot\n", "plt.plot(s**2)\n", "plt.xlabel(\"K\")\n", "plt.ylabel('$s^2$')\n", "plt.title('Elbow plot for SVD')\n", "plt.show()\n", "#truncate to 2 \n", "s[1:]=0\n", "#calculate estimate using truncated S\n", "outX = np.round(np.dot(np.dot(U,diagsvd(s,5,6)),Vh))\n", "\n", "outX1 = np.round(np.dot(U[:,0:1],Vh[0:1,:])*s[0])\n", "#show results\n", "print \"X=\\n\"+str(X)\n", "print \"U=\\n\"+str(U[:1,:].round(2))\n", "print \"S=\\n\"+str(diagsvd(s,5,6).round(2))\n", "print \"V=\\n\"+str(Vh[:,:1].round(2))\n", "print \"X'=\\n\"+str(outX)\n", "print \"X'=\\n\"+str(outX1)\n", "\n", "foods = ['Chocolate','Peanuts','Crisps','Wine','Beer','Champagne']\n", "names = ['Annie','Brian','Chuck','Dave','Emma']\n", "print \"& \"+\" & \".join(foods)+\"\\\\\\\\\\hline\"\n", "for i in range(len(names)):\n", " print names[i]+\" & \"+\" & \".join([str(x) for x in X[i,:]])+\"\\\\\\\\\"\n", "U,s,V = svd(X)\n", "S = np.zeros(X.shape)\n", "for i in range(X.shape[0]):\n", " S[i,i] = s[i]\n", "print U\n", "print S\n", "print V\n", "\n", "for i in range(len(names)):\n", " print \" & \".join([\"%.2f\"%x for x in U[i,:]])+\"\\\\\\\\\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for i in range(6):\n", " print \" & \".join([\"%.2f\"%x for x in V[i,:]])+\"\\\\\\\\\"\n", " \n", "for i in range(5):\n", " print \" & \".join([\"%.2f\"%x for x in S[i,:]])+\"\\\\\\\\\"\n", " \n", "np.round(np.dot(np.dot(U,S),V)) - X\n", "\n", "U1 = np.round(U[:,0:1],2)\n", "V1 = np.round(V[0:1,:],2)\n", "S1 = np.round(S[0,0],2)\n", "np.round(np.dot(U1,V1)*S1)\n", "X = np.array([[-2,-4,-6],[-1,-3,-5],[0,0,0],[1,3,5],[2,4,6]])\n", "\n", "np.round(np.linalg.eig(np.cov(np.transpose(X)))[1],2)" ] } ], "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.0" } }, "nbformat": 4, "nbformat_minor": 0 }