Skip to content

Instantly share code, notes, and snippets.

@nipunbatra
Last active December 14, 2015 21:49
Show Gist options
  • Save nipunbatra/5153583 to your computer and use it in GitHub Desktop.
Save nipunbatra/5153583 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "SVM_Assignment"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Experimental Setup\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* AIM : To compare primal and dual SVM implementations\n",
"* Dataset: ADULT dataset from UCI ML repository\n",
"* CPU : i7 2.3 GHz\n",
"* Operating System: Ubuntu 12.10 64 bit\n",
"* RAM: 8 GB\n",
"* Python version: 2.7\n",
"* Scikit-learn version: .13\n",
"* IPython version: .13\n",
"* IPython Number of Kernels used: 8\n",
"\n"
]
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Data Preprocessing"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Data Loading"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We use Numpy's built in method to load the data from txt file. \n",
"* We also specify various column headers in **data_headers**."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"\n",
"data_headers=['age','workclass','fnlwgt','education','education_num','marital_status','occupation','relationship','race','sex','capital_gain'\\\n",
" ,'capital_loss','hours_per_week','native_country','salary']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data=np.array(np.genfromtxt('dataset.txt', dtype=(int, 'S32',int, 'S32',int,'S32'\\\n",
",'S32','S32','S32','S32',int,int,int,'S32','S32'),delimiter=',',autostrip=True,names=data_headers))\n",
"\n",
"\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We now see the shape of the matrix obtained."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 3,
"text": [
"(32561,)"
]
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Handling Missing Values"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We Deleting all the rows which contain '?' or missing values.\n",
"* This could have also been done by replacing the missing value by the most common value in that column (for categorical attributes) or averaging (for continuous attributes)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"row_idx_to_delete=[]\n",
"for i in range(0,len(data)):\n",
" if \"?\" in data[i]:\n",
" row_idx_to_delete.append(i)\n",
"\n",
"print len(row_idx_to_delete),\" records have incomplete data and will be deleted\"\n",
"data=np.delete(data,row_idx_to_delete)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"2399 records have incomplete data and will be deleted\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Converting Attributes to Discrete Type"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Firstly, we plot the histogram for **age** to find out where to split."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"hist(data['age'],3);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAD9CAYAAABTJWtQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFlpJREFUeJzt3X9MVff9x/HXabnfNFsrVSIXx2XByEW8cgU2imSZCe3t\nZdVV1FJ/0EWpumbRtLGuf5j9sU2ztOKWpdNN8106mi91SXEzTl0z72jV29luwkScazH1rkOFK7Ip\nYvEn6j7fP5yfSXUUr+g9rc9HQgKfe8+973OR+/Qe70HHGGMEAICke5I9AADAPYgCAMAiCgAAiygA\nACyiAACwiAIAwBowCu3t7Xr44Yc1fvx45efna82aNZKk7u5uhcNh5ebmqry8XD09PXablStXyu/3\nKy8vTw0NDXa9ublZwWBQfr9fS5YssesXLlzQ7Nmz5ff7VVpaqsOHDw/1PgIABmnAKHg8Hr388st6\n//33tXv3bq1du1YHDhxQTU2NwuGwDh48qFAopJqaGklSa2urNmzYoNbWVkUiES1evFhXT4NYtGiR\namtrFYvFFIvFFIlEJEm1tbVKS0tTLBbT0qVLtWzZstu8ywCA/2bAKGRkZKiwsFCSdP/992vcuHGK\nx+PaunWrqqurJUnV1dXavHmzJGnLli2qqqqSx+NRdna2cnJy1NjYqM7OTvX29qqkpESSNG/ePLvN\ntbdVWVmp7du33549BQB8opTBXvHQoUNqaWnRxIkT1dXVJa/XK0nyer3q6uqSJB09elSlpaV2G5/P\np3g8Lo/HI5/PZ9czMzMVj8clSfF4XFlZWVeGSUlRamqquru7NWLECHt9x3FuYRcB4O6UyC+sGNQ/\nNJ8+fVqVlZVavXq1HnjggX6XOY5zR560jTGu/vj+97+f9BmYkzmZkzmvfiTqE6Nw8eJFVVZWau7c\nuZo+fbqkK68Ojh07Jknq7OxUenq6pCuvANrb2+22HR0d8vl8yszMVEdHx3XrV7c5cuSIJOnSpUs6\ndepUv1cJAIA7Z8AoGGO0cOFCBQIBPf/883a9oqJCdXV1kqS6ujobi4qKCtXX16uvr09tbW2KxWIq\nKSlRRkaGhg0bpsbGRhljtH79ek2bNu2629q4caNCodBt2VEAwCCYAezatcs4jmMKCgpMYWGhKSws\nNNu2bTMnTpwwoVDI+P1+Ew6HzcmTJ+02L774ohkzZowZO3asiUQidn3Pnj0mPz/fjBkzxjz33HN2\n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\nuW7OsWPHqqWlRS0tLWpubtbnPvc5zZgxw1VzHjp0SK+88or27t2rv/71r7p8+bLq6+tdNaMkvffe\ne/rFL36hP//5z/rLX/6iN954Qx9++GFicxoXamtrM/n5+fbrsWPHmmPHjhljjOns7DRjx45N1mg3\nNG3aNPPmm2+6es4zZ86Y4uJi895777lyzvb2dhMKhcyOHTvM448/boxx5/c9OzvbHD9+vN+a2+bs\n6ekxo0ePvm7dbXNe6/e//7356le/aoxx15wnTpwwubm5pru721y8eNE8/vjjpqGhwVUzGmPMr3/9\na7Nw4UL79Q9+8AOzatWqhOZ03SuFG+nq6pLX65Ukeb1edXV1JXmi/zh06JBaWlo0ceJEV875r3/9\nS4WFhfJ6vfaQlxvnXLp0qX70ox/pnnv+80fSjXM6jqNHH31UxcXFeuWVVyS5b862tjaNHDlS8+fP\n15e+9CU988wzOnPmjOvmvFZ9fb2qqqokuevxHDFihF544QV98Ytf1Be+8AU9+OCDCofDrppRkvLz\n87Vr1y51d3fr7Nmz+t3vfqeOjo6E5vxUROFajuO45r/9O336tCorK7V69Wo98MAD/S5zy5z33HOP\n9u3bp46ODv3hD3/Qzp07+13uhjnfeOMNpaenq6io6L+ek+KGOSXp3XffVUtLi7Zt26a1a9dq165d\n/S53w5yXLl3S3r17tXjxYu3du1ef//znrzts4IY5r+rr69Nvf/tbzZw587rLkj3nhx9+qJ/85Cc6\ndOiQjh49qtOnT+uXv/xlv+ske0ZJysvL07Jly1ReXq7JkyersLBQ9957b7/rDHbOT0UUvF6vjh07\nJknq7OxUenp6kieSLl68qMrKSs2dO1fTp0+X5M45r0pNTdXXv/51NTc3u27OP/7xj9q6datGjx6t\nqqoq7dixQ3PnznXdnJI0atQoSdLIkSM1Y8YMNTU1uW5On88nn8+nhx56SJL05JNPau/evcrIyHDV\nnFdt27ZNX/7ylzVy5EhJ7vo52rNnj77yla8oLS1NKSkpeuKJJ/SnP/3JlY/lggULtGfPHr399tsa\nPny4cnNzE3osPxVRqKioUF1dnSSprq7OPgknizFGCxcuVCAQ0PPPP2/X3Tbn8ePH7bsNzp07pzff\nfFNFRUWum/Oll15Se3u72traVF9fr0ceeUTr16933Zxnz55Vb2+vJOnMmTNqaGhQMBh03ZwZGRnK\nysrSwYMHJUlvvfWWxo8fr6lTp7pqzqtef/11e+hIctfPUV5ennbv3q1z587JGKO33npLgUDAlY/l\nP/7xD0nSkSNHtGnTJj311FOJPZa35589EjdnzhwzatQo4/F4jM/nM6+++qo5ceKECYVCxu/3m3A4\nbE6ePJnUGXft2mUcxzEFBQWmsLDQFBYWmm3btrluzv3795uioiJTUFBggsGg+eEPf2iMMa6b81rR\naNRMnTrVGOO+Of/+97+bgoICU1BQYMaPH29eeuklV85pjDH79u0zxcXFZsKECWbGjBmmp6fHlXOe\nPn3apKWlmY8++siuuW3OVatWmUAgYPLz8828efNMX1+f62Y0xphJkyaZQCBgCgoKzI4dO4wxiT2W\njjH8YiEAwBWfisNHAIA7gygAACyiAACwiAIAwCIKAACLKAAArP8HQOm3KwxRQHkAAAAASUVORK5C\nYII=\n"
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the histogram, we observe that the attribute **age** can be split as follows:\n",
"\n",
"* 0: age<30 \n",
"* 1: age>=30 and age<=55\n",
"* 2: age>=55 \n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_age_0=data['age']<30\n",
"idx_age_1=(data['age']>=30) & (data['age']<=55)\n",
"idx_age_2=data['age']>55\n",
"\n",
"\n",
"\n",
"data['age'][idx_age_0]=0\n",
"data['age'][idx_age_1]=1\n",
"data['age'][idx_age_2]=2\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Next for **workclass** attribute we convert categorical quantities into numerical quantities."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"workclass_attributes=[\"Private\", \"Self-emp-not-inc\", \"Self-emp-inc\", \"Federal-gov\",\\\n",
" \"Local-gov\", \"State-gov\", \"Without-pay\", \"Never-worked\"]\n",
"idx_workclass={}\n",
"for workclass in workclass_attributes:\n",
" idx_workclass[workclass]=data[\"workclass\"]==workclass\n",
"\n",
"#Converting the datatype to integer now\n",
"for i in range(0,len(workclass_attributes)):\n",
" data[\"workclass\"][idx_workclass[workclass_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Fnlwgt** is a continuous attribute. We plot it to estimate a numerical range (since we are not doing regression)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=hist(data['fnlwgt'],8)\n",
"means=[(a[1][i]+a[1][i+1])/2.0 for i in range(0,len(a[1])-1)]\n",
"means,a[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 8,
"text": [
"([105702.5,\n",
" 289569.5,\n",
" 473436.5,\n",
" 657303.5,\n",
" 841170.5,\n",
" 1025037.5,\n",
" 1208904.5,\n",
" 1392771.5],\n",
" array([18283, 10410, 1291, 142, 21, 7, 5, 3]))"
]
},
{
"output_type": "display_data",
"png": "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\nTbZ///64nHPjxo2WmZlpWVlZVlJSYmfOnImLOVeuXGlJSUmWlZXlrcV6rk8++cRycnIsGAza8uXL\nrbe3d8Q5f/KTn1hGRobdfPPNdvfdd1tXV1dczjnoF7/4hfl8Pmtvb4/bOV9++WXLyMiw2bNn209/\n+tOYzzmauA5Kf3+/paWlWSQSsd7eXpszZ441NjY6v53W1lY7cuSImZl1d3fbrFmzrLGx0Z5++ml7\n9tlnzcyssrLS1q1bZ2Zm77//vs2ZM8d6e3stEolYWlqaDQwMmJnZrbfeag0NDWZmduedd9qePXvM\nzOy1116zVatWmZlZTU2NLV++3MzO31HceOON1tnZaZ2dnd6fv8oLL7xg999/v33/+983M4vLGUtL\nS62qqsrMzPr6+qyrqyvu5oxEIpaammpnzpwxM7Pi4mLbsmVLXMz59ttv2+HDh4fcscRqrsEgLFu2\nzLZv325mZo899pj96le/GnHOuro6O3funJmZrVu3Lm7nNDv/i+SiRYssJSXFC0q8zblv3z67/fbb\nvTvyf/3rXzGfczRxHZR3333XFi1a5H1dUVFhFRUVY367S5Yssb/+9a+Wnp5uJ06cMLPz0UlPTzez\n878ZXPhoadGiRfbee+9ZS0uLZWRkeOvbtm2zRx991LvM/v37zez8nex1111nZmZ/+MMf7LHHHvO2\nefTRR23btm0jztXU1GT5+fm2b98+7xFKvM3Y1dVlqampw9bjbc729nabNWuWdXR0WF9fn911111W\nV1cXN3NGIpEhdyyxnGtgYMCuu+46LxTvvfee93P55Tkv9Kc//ckeeOCBuJ3z3nvvtX/84x9DghJv\ncy5btsz27t077Hsb6zm/SsxflB9NNBrVzJkzva8DgYCi0eiY3uaxY8d05MgRLViwQG1tbUpOTpYk\nJScnq62tTZLU0tIy5Ei0wbm+vO73+715L9yXhIQETZ48We3t7V95XSNZu3atnn/+eU2Y8P//2uJt\nxkgkouuvv14rV67ULbfcokceeUQ9PT1xN+fUqVP11FNP6YYbbtC3v/1tTZkyRQUFBXE356BYztXR\n0aEpU6Z4/+4uvK7RbN68WYsXL47LOXft2qVAIKCbb755yHq8zRkOh/X2228rNzdXeXl5OnjwYFzO\nOSiugzLeb2g8deqUioqK9NJLL2nixInDZonlGyz/8pe/KCkpSfPmzfvK9+XEekZJ6u/v1+HDh7V6\n9WodPnxY3/zmN1VZWTnkMvEw58cff6wXX3xRx44dU0tLi06dOqXXX399yGXiYc6RjOdcl3s7GzZs\n0DXXXKP777/f8UQju5Q5T58+rY0bN2r9+vXe2lf9TLl2qd/P/v5+dXZ2av/+/Xr++edVXFw8RpMN\ndbl/73EdlPF8j0pfX5+Kioq0YsUKLV26VNL53wRPnDghSWptbVVSUtKIczU3NysQCMjv96u5uXnY\n+uA2x48fl3T+H8nJkyc1bdq0i97Hd999V7t371ZqaqpKSkq0b98+rVixIq5mlM7/dhMIBHTrrbdK\nku69914dPnxY06dPj6s5Dx48qO9+97uaNm2aEhISdM899+i9996LuzkHxerv2e/3a+rUqerq6tLA\nwIB3XX6//ytn3bJli9544w39/ve/99biac6PP/5Yx44d05w5c5Samqrm5mZ95zvfUVtbW1zNKZ3/\nebrnnnskSbfeeqsmTJigzz//PO7m9Iz6hFiM9fX12Y033miRSMTOnj07Zi/KDwwM2IoVK+zJJ58c\nsv700097z1NWVFQMe4Hx7Nmz9sknn9iNN97ovSCWk5Nj+/fvt4GBgWEviA0+T7lt27YhL4ilpqZa\nZ2endXR0eH8eTX19vfcaSjzOeNttt9mHH35oZmbPPPOMPf3003E359GjR2327Nl2+vRpGxgYsNLS\nUnv11VfjZs4vP5ce67mWLVtmNTU1Znb+OfbBF2e/POeePXssMzPTPvvssyH7E29zXmikF+XjZc5f\n//rX9vOf/9zMzD788EObOXNmXMz5VeI6KGZmb7zxhs2aNcvS0tJs48aNY3Ib77zzjvl8PpszZ47N\nnTvX5s6da3v27LH29nbLz88f8VDNDRs2WFpamqWnp1ttba23PnjIXlpamj3++OPe+pkzZ2zZsmXe\nIXuRSMQ7b/PmzRYMBi0YDNqWLVv+47z19fXeUV7xOOPRo0dt/vz5Qw4djcc5n332We+w4dLSUuvt\n7Y2LOe+77z6bMWOGJSYmWiAQsM2bN8d8rgsPHy0uLrbe3t5hc1ZVVVkwGLQbbrjB+zkaPKooHua8\n5pprvO/nhVJTU4ccNhxPc/b29toPfvADy8rKsltuucXeeuutmM85mph/OCQA4OoQ16+hAACuHAQF\nAOAEQQEAOEFQAABOEBQAgBMEBQDgxP8FySKi4B/y4XwAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Thus the attribute can be split as follows:\n",
"\n",
"* 0: fnlwgt<=105702\n",
"* 1: fnlwgt>105702 and fnlwgt<=289569\n",
"* 2: fnlwgt>289569"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_wgt_0=data['fnlwgt']<=105702\n",
"idx_wgt_1=(data['fnlwgt']>=105702) & (data['fnlwgt']<=289569) \n",
"idx_wgt_2=data['fnlwgt']>=289569\n",
"\n",
"\n",
"data['fnlwgt'][idx_wgt_0]=0\n",
"data['fnlwgt'][idx_wgt_1]=1\n",
"data['fnlwgt'][idx_wgt_2]=2\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Education** is a categorical attribute and is here converted to numerical attribute."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"education_attributes=[\"Bachelors\", \"Some-college\", \"11th\", \"HS-grad\", \"Prof-school\", \"Assoc-acdm\", \"Assoc-voc\"\\\n",
", \"9th\", \"7th-8th\", \"12th\", \"Masters\", \"1st-4th\", \"10th\", \"Doctorate\", \"5th-6th\", \"Preschool\"]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_education={}\n",
"for education in education_attributes:\n",
" idx_education[education]=data[\"education\"]==education\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(education_attributes)):\n",
" data[\"education\"][idx_education[education_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 11
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Education number** is a continuous numeric attribute."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=hist(data['education_num'],4)\n",
"means=[(a[1][i]+a[1][i+1])/2.0 for i in range(0,len(a[1])-1)]\n",
"means,a[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 13,
"text": [
"([2.875, 6.625, 10.375, 14.125], array([ 1041, 2700, 18833, 7588]))"
]
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 13
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Thus, the attribute can be split as follows:\n",
"\n",
"* 0: education_num<2.9\n",
"* 1: education_num>2.9 and education_num<=6.7\n",
"* 2: education_num>6.7 and education_num<=10.4\n",
"* 3: education_num>10.4"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_enum_0=data['education_num']<=means[0]\n",
"idx_enum_1=(data['education_num']>means[0]) & (data['education_num']<=means[1]) \n",
"idx_enum_2=(data['education_num']>=means[1]) & (data['education_num']<=means[2])\n",
"idx_enum_3=data['education_num']>means[2]\n",
"\n",
"\n",
"data['education_num'][idx_enum_0]=0\n",
"data['education_num'][idx_enum_1]=1\n",
"data['education_num'][idx_enum_2]=2\n",
"data['education_num'][idx_enum_3]=3\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Similarly for all other datatypes we perform similar conversion."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"marital_status_attributes=['Married-civ-spouse', 'Divorced', 'Never-married', 'Separated', 'Widowed',\\\n",
" 'Married-spouse-absent','Married-AF-spouse']\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_marital_status={}\n",
"for marital_status in marital_status_attributes:\n",
" idx_marital_status[marital_status]=data[\"marital_status\"]==marital_status\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(marital_status_attributes)):\n",
" data[\"marital_status\"][idx_marital_status[marital_status_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 16
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"occupation_attributes=['Tech-support', 'Craft-repair', 'Other-service', 'Sales', 'Exec-managerial', 'Prof-specialty', 'Handlers-cleaners',\\\n",
" 'Machine-op-inspct', 'Adm-clerical', 'Farming-fishing', 'Transport-moving', 'Priv-house-serv', 'Protective-serv', 'Armed-Forces']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_occupation={}\n",
"for occupation in occupation_attributes:\n",
" idx_occupation[occupation]=data[\"occupation\"]==occupation\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(occupation_attributes)):\n",
" data[\"occupation\"][idx_occupation[occupation_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 18
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"relationship_attributes=['Wife', 'Own-child', 'Husband', 'Not-in-family', 'Other-relative', 'Unmarried']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_relationship={}\n",
"for relationship in relationship_attributes:\n",
" idx_relationship[relationship]=data[\"relationship\"]==relationship\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(relationship_attributes)):\n",
" data[\"relationship\"][idx_relationship[relationship_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"race_attributes=['White', 'Asian-Pac-Islander', 'Amer-Indian-Eskimo', 'Other', 'Black']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_race={}\n",
"for race in race_attributes:\n",
" idx_race[race]=data[\"race\"]==race\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(race_attributes)):\n",
" data[\"race\"][idx_race[race_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 22
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sex_attributes=['Female', 'Male']\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_sex={}\n",
"for sex in sex_attributes:\n",
" idx_sex[sex]=data[\"sex\"]==sex\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(sex_attributes)):\n",
" data[\"sex\"][idx_sex[sex_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 24
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=hist(data['capital_gain'],2)\n",
"means=[(a[1][i]+a[1][i+1])/2.0 for i in range(0,len(a[1])-1)]\n",
"means,a[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 25,
"text": [
"([24999.75, 74999.25], array([30014, 148]))"
]
},
{
"output_type": "display_data",
"png": "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\nChEREXHs/wMV4dystvlpLAAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_cap_gain_0=data['capital_gain']<=means[0]\n",
"idx_cap_gain_1=(data['capital_gain']>means[0]) & (data['capital_gain']<=means[1]) \n",
"\n",
"\n",
"data['capital_gain'][idx_cap_gain_0]=0\n",
"data['capital_gain'][idx_cap_gain_1]=1\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=hist(data['capital_loss'],2)\n",
"means=[(a[1][i]+a[1][i+1])/2.0 for i in range(0,len(a[1])-1)]\n",
"means,a[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 27,
"text": [
"([1089.0, 3267.0], array([29955, 207]))"
]
},
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAD9CAYAAABN7FvjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHDpJREFUeJzt3HFM1Pfh//HXp+OWpaNaNeVwdyYIHEUUgcUiWWJCQ7Fq\nV7Sh1bIVsNX9Fkwa6rrG9I/2q9+khW5zi+1K0iw0oS4ZNiYVshTG6rzVufT8ytAmZZk3i8odB2lF\nHbYqKu/fH+pnVZG34sHR7flIPsnxvs/nc6/PO3f3yuc+dzjGGCMAAMZwV6IDAACmPsoCAGBFWQAA\nrCgLAIAVZQEAsKIsAABWY5bFuXPntHjxYuXn5ysnJ0cvvviiJGlwcFClpaXKysrS0qVLderUKXeb\nuro6BQIBZWdnq6Ojwx3v7OxUbm6uAoGAamtr3fHz589rzZo1CgQCKioq0rFjx+J9jACAOzRmWXzr\nW9/Snj17dPDgQX388cfas2eP/vKXv6i+vl6lpaU6fPiwSkpKVF9fL0nq7u7Wjh071N3drfb2dm3Y\nsEFXf8ZRU1OjxsZGhcNhhcNhtbe3S5IaGxs1a9YshcNhbdy4UZs2bZrgQwYA3C7rx1B33323JGl4\neFiXLl3SjBkz1NraqurqaklSdXW1du3aJUlqaWlRRUWFPB6P0tLSlJmZqVAopFgspqGhIRUWFkqS\nqqqq3G2+uq/y8nLt3r07/kcJALgjSbYVRkZG9N3vfldHjhxRTU2N5s+fr4GBAXm9XkmS1+vVwMCA\nJKmvr09FRUXutn6/X9FoVB6PR36/3x33+XyKRqOSpGg0qjlz5lwOk5Sk6dOna3BwUDNnznTXdxwn\nDocKAP9d4vkPOqxlcdddd+ngwYM6ffq0Hn74Ye3Zs+ea+x3HmaQ38/+VNG0SHudWtUtalugQ1yHT\nrRlfpm9+83/197//n9LT0+MfSdLmzZu1efPmCdn3eJHp1kzFTPF+X7aWxVXTp0/XI488os7OTnm9\nXvX39ys1NVWxWEwpKSmSLp8x9Pb2uttEIhH5/X75fD5FIpEbxq9uc/z4cX3nO9/RxYsXdfr06WvO\nKv7t/0nyju8oJ8RJSbXWtSYXmW7N+DJ985vb4h8F+JoY85rF559/7n7T6ezZs/rjH/+ogoIClZWV\nqampSZLU1NSkVatWSZLKysrU3Nys4eFh9fT0KBwOq7CwUKmpqZo2bZpCoZCMMdq+fbtWrlzpbnN1\n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\nwOr/A8Mv6JtiigmBAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 27
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_cap_loss_0=data['capital_loss']<=means[0]\n",
"idx_cap_loss_1=(data['capital_loss']>means[0]) & (data['capital_loss']<=means[1]) \n",
"\n",
"\n",
"data['capital_loss'][idx_cap_loss_0]=0\n",
"data['capital_loss'][idx_cap_loss_1]=1"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 28
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=hist(data['hours_per_week'],4)\n",
"means=[(a[1][i]+a[1][i+1])/2.0 for i in range(0,len(a[1])-1)]\n",
"means,a[0]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 29,
"text": [
"([13.25, 37.75, 62.25, 86.75], array([ 3261, 20708, 5798, 395]))"
]
},
{
"output_type": "display_data",
"png": "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\nAElFTkSuQmCC\n"
}
],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_hours_0=data['hours_per_week']<=means[0]\n",
"idx_hours_1=(data['hours_per_week']>means[0]) & (data['hours_per_week']<=means[1]) \n",
"idx_hours_2=(data['hours_per_week']>=means[1]) & (data['hours_per_week']<=means[2])\n",
"idx_hours_3=data['hours_per_week']>means[2]\n",
"\n",
"\n",
"data['hours_per_week'][idx_hours_0]=0\n",
"data['hours_per_week'][idx_hours_1]=1\n",
"data['hours_per_week'][idx_hours_2]=2\n",
"data['hours_per_week'][idx_hours_3]=3\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"native_country_attributes=['United-States', 'Cambodia', 'England', 'Puerto-Rico', 'Canada', 'Germany', 'Outlying-US(Guam-USVI-etc)'\\\n",
",'India', 'Japan', 'Greece', 'South', 'China', 'Cuba', 'Iran', 'Honduras', 'Philippines', 'Italy', 'Poland', 'Jamaica', 'Vietnam'\n",
", 'Mexico', 'Portugal', 'Ireland', 'France', 'Dominican-Republic', 'Laos', 'Ecuador', 'Taiwan', 'Haiti', 'Columbia', 'Hungary', 'Guatemala',\n",
"'Nicaragua', 'Scotland', 'Thailand', 'Yugoslavia', 'El-Salvador', 'Trinadad&Tobago', 'Peru', 'Hong', 'Holand-Netherlands']"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_native_country={}\n",
"for native_country in native_country_attributes:\n",
" idx_native_country[native_country]=data[\"native_country\"]==native_country\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(native_country_attributes)):\n",
" data[\"native_country\"][idx_native_country[native_country_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"salary_attributes=['<=50K','>50K']\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 33
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"idx_salary={}\n",
"for salary in salary_attributes:\n",
" idx_salary[salary]=data[\"salary\"]==salary\n",
"\n",
"#Converting the datatype to integer now\n",
"\n",
"for i in range(0,len(salary_attributes)):\n",
" data[\"salary\"][idx_salary[salary_attributes[i]]]=int(i)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We save the filtered data after converting into numerical discrete quantities for each attribute."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.savetxt('filtered.txt',data,fmt=\"%s\",delimiter=',')\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 35
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Scaling Data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* SVM literature suggests that using attribute values with zero mean will improve the performance. We use **scikit-learn's** preprocessing module for the same.\n",
"* From this filtered data, we now need to make a training and a test set. Since my roll number ends in 09, i shall use 9% of data as training set and the remaining as test set. Since the proportion of training data is very less in comparison to test data, the results are bound to be not too good."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sklearn import preprocessing"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"filtered_data=np.array(np.genfromtxt('filtered.txt', delimiter=',',autostrip=True))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"scaled_filtered_data=preprocessing.scale(filtered_data)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"salary=scaled_filtered_data[:,14]\n",
"scaled_filtered_data=scaled_filtered_data[:,:-1]\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print salary"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[-0.57569132 -0.57569132 -0.57569132 ..., -0.57569132 -0.57569132\n",
" 1.73704199]\n"
]
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We now see the obtained shape of the **filtered scaled** data."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print scaled_filtered_data.shape"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(30162, 14)\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* For the **Y** attribute, which is in our case salary, we set it to 1 and -1 according to positive and negative class."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sklearn import svm\n",
"salary2=np.array([-1]*len(salary))\n",
"for i in range(0,len(salary2)):\n",
" if salary[i]>0:\n",
" salary2[i]=1\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Paritioning data into test and train set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* 9% of data is randomly chosen for **training** and the remainig is chosen for **testing**."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import random,math\n",
"training_size_fraction=.09\n",
"test_idx=np.array(random.sample(xrange(len(salary2)), int((1-training_size_fraction)*len(salary2))))\n",
"train_idx=np.array([x for x in xrange(len(salary2)) if x not in test_idx])\n",
"test_samples=scaled_filtered_data[test_idx]\n",
"train_samples=scaled_filtered_data[train_idx]\n",
"test_out=salary2[test_idx]\n",
"train_out=salary2[train_idx]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Results using SMO based LibSVM implementation in Scikit Learn"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* We use a **linear** kernel.\n",
"* We use Python's **time** module to find the time consumed.\n",
"* It is based on SMO."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import time\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"clf = svm.SVC(kernel='linear')\n",
"libsvm_start=time.time()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 29
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"clf.fit(train_samples, train_out)\n",
"libsvm_train_end=time.time()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 30
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a=np.array(clf.predict(test_samples).astype(int))\n",
"libsvm_test_end=time.time()\n",
"c=a==np.array(test_out)\n",
"c=np.array(a)==np.array(test_out)\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"Accuracy : \",str(sum(c)*100.0/len(a))+\" %\"\n",
"print \"Number of support vectors for positive class: \",clf.n_support_[0]\n",
"print \"Number of support vectors for negative class: \",clf.n_support_[1]\n",
"print \"Time Required for training : \",str(libsvm_train_end-libsvm_start)+\" s\"\n",
"print \"Time Required for testing : \",str(libsvm_test_end-libsvm_train_end)+\" s\"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Accuracy : 81.2839290269 %\n",
"Number of support vectors for positive class: 606\n",
"Number of support vectors for negative class: 595\n",
"Time Required for training : 0.947898864746 s\n",
"Time Required for testing : 1.50630402565 s\n"
]
}
],
"prompt_number": 35
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Results using Dual form based SVMlight implementation provided by the SVMlight authors."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* SVM Light requires data to be in a specific format and that is what is being done in the next step. We create a **test.dat** and **train.dat** accordingly.\n",
"* Moreover, we compile the **svmlight** binaries and call them as executables from Python program using subprocess module.\n",
"* SVMLight is based on working set selection (steepest feasible descent). "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"test_data_string=\"\"\n",
"for i in range(0,len(test_out)):\n",
" if test_out[i]==1:\n",
" c='+1'\n",
" else:\n",
" c='-1'\n",
" test_data_string=test_data_string+c\n",
" for j in range(0,14):\n",
" test_data_string=test_data_string+\" \"+str(j+1)+\":\"+str(test_samples[i][j])\n",
" test_data_string=test_data_string+\"\\n\"\n",
"f=open('test.dat','w')\n",
"f.write(test_data_string)\n",
" "
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 50
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"train_data_string=\"\"\n",
"for i in range(0,len(train_out)):\n",
" if train_out[i]==1:\n",
" c='+1'\n",
" else:\n",
" c='-1'\n",
" train_data_string=train_data_string+c\n",
" for j in range(0,14):\n",
" train_data_string=train_data_string+\" \"+str(j+1)+\":\"+str(train_samples[i][j])\n",
" train_data_string=train_data_string+\"\\n\"\n",
"f=open('train.dat','w')\n",
"f.write(train_data_string)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 51
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import subprocess"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"svmlight_start=time.time()\n",
"p = subprocess.Popen('./svm_learn train.dat model', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n",
"svmlight_train_end=time.time()\n",
"train_output= p.stdout.readlines()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"p = subprocess.Popen('./svm_classify test.dat model', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)\n",
"svmlight_test_end=time.time()\n",
"test_output= p.stdout.readlines()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 38
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"test_output"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 39,
"text": [
"['Reading model...OK. (1262 support vectors read)\\n',\n",
" 'Classifying test examples..100..200..300..400..500..600..700..800..900..1000..1100..1200..1300..1400..1500..1600..1700..1800..1900..2000..2100..2200..2300..2400..2500..2600..2700..2800..2900..3000..3100..3200..3300..3400..3500..3600..3700..3800..3900..4000..4100..4200..4300..4400..4500..4600..4700..4800..4900..5000..5100..5200..5300..5400..5500..5600..5700..5800..5900..6000..6100..6200..6300..6400..6500..6600..6700..6800..6900..7000..7100..7200..7300..7400..7500..7600..7700..7800..7900..8000..8100..8200..8300..8400..8500..8600..8700..8800..8900..9000..9100..9200..9300..9400..9500..9600..9700..9800..9900..10000..10100..10200..10300..10400..10500..10600..10700..10800..10900..11000..11100..11200..11300..11400..11500..11600..11700..11800..11900..12000..12100..12200..12300..12400..12500..12600..12700..12800..12900..13000..13100..13200..13300..13400..13500..13600..13700..13800..13900..14000..14100..14200..14300..14400..14500..14600..14700..14800..14900..15000..15100..15200..15300..15400..15500..15600..15700..15800..15900..16000..16100..16200..16300..16400..16500..16600..16700..16800..16900..17000..17100..17200..17300..17400..17500..17600..17700..17800..17900..18000..18100..18200..18300..18400..18500..18600..18700..18800..18900..19000..19100..19200..19300..19400..19500..19600..19700..19800..19900..20000..20100..20200..20300..20400..20500..20600..20700..20800..20900..21000..21100..21200..21300..21400..21500..21600..21700..21800..21900..22000..22100..22200..22300..22400..22500..22600..22700..22800..22900..23000..23100..23200..23300..23400..23500..23600..23700..23800..23900..24000..24100..24200..24300..24400..24500..24600..24700..24800..24900..25000..25100..25200..25300..25400..25500..25600..25700..25800..25900..26000..26100..26200..26300..26400..26500..26600..26700..26800..26900..27000..27100..27200..27300..27400..done\\n',\n",
" 'Runtime (without IO) in cpu-seconds: 0.00\\n',\n",
" 'Accuracy on test set: 81.62% (22402 correct, 5045 incorrect, 27447 total)\\n',\n",
" 'Precision/recall on test set: 68.83%/48.42%\\n']"
]
}
],
"prompt_number": 39
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"train_output"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 40,
"text": [
"['Scanning examples...done\\n',\n",
" 'Reading examples into memory...100..200..300..400..500..600..700..800..900..1000..1100..1200..1300..1400..1500..1600..1700..1800..1900..2000..2100..2200..2300..2400..2500..2600..2700..OK. (2715 examples read)\\n',\n",
" 'Setting default regularization parameter C=0.0886\\n',\n",
" 'Optimizing.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done. (1432 iterations)\\n',\n",
" 'Optimization finished (533 misclassified, maxdiff=0.00067).\\n',\n",
" 'Runtime in cpu-seconds: 0.12\\n',\n",
" 'Number of SV: 1262 (including 1245 at upper bound)\\n',\n",
" 'L1 loss: loss=1236.86964\\n',\n",
" 'Norm of weight vector: |w|=1.19922\\n',\n",
" 'Norm of longest example vector: |x|=73.94389\\n',\n",
" 'Estimated VCdim of classifier: VCdim<=300.27786\\n',\n",
" 'Computing XiAlpha-estimates...done\\n',\n",
" 'Runtime for XiAlpha-estimates in cpu-seconds: 0.00\\n',\n",
" 'XiAlpha-estimate of the error: error<=46.48% (rho=1.00,depth=0)\\n',\n",
" 'XiAlpha-estimate of the recall: recall=>2.33% (rho=1.00,depth=0)\\n',\n",
" 'XiAlpha-estimate of the precision: precision=>2.32% (rho=1.00,depth=0)\\n',\n",
" 'Number of kernel evaluations: 89900\\n',\n",
" 'Writing model file...done\\n']"
]
}
],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"Accuracy : \",str(81.62)+\" %\"\n",
"print \"Number of support vectors : 1262\" \n",
"print \"Time Required for training : \",str(svmlight_train_end-svmlight_start)+\" s\"\n",
"print \"Time Required for testing : \",str(svmlight_test_end-svmlight_train_end)+\" s\""
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Accuracy : 81.62 %\n",
"Number of support vectors : 1262\n",
"Time Required for training : 0.0196049213409 s\n",
"Time Required for testing : 0.980164051056 s\n"
]
}
],
"prompt_number": 42
},
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"Results using Primal form based Pegasos implementation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Optimization Technique Used: SGD\n",
"* Since the code provided by the authors did not talk about Support Vectors, i chose to implement the algorithm on my own in Python.\n",
"* Caveat: One small routine is not vectorized and in thus taking a major chunk of the time.\n",
"* We choose the following parameters as default:\n",
" * **k**: 10% of training data\n",
" * **T**: 1000\n",
" * **Lambda**: 1"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import pegasos\n",
"pegasos_start_time=time.time()\n",
"weight_vector,bias,sv_array=pegasos.train(train_samples,train_out,1,1000)\n",
"pegasos_train_end=time.time()\n",
"classification=pegasos.test(test_samples,test_out,a,b)\n",
"pegasos_test_end=time.time()\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 91
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"f=-1*ones(len(classification))\n",
"idxz=classification>0\n",
"f[idxz]=1\n",
"f=f.astype(int)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 93
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"print \"Accuracy : \",str(100.0*sum(f==test_out)/len(test_out))+\"%\"\n",
"print \"Number of support vectors : \",len(sv_array[(sv_array<.1) & (sv_array>-0.1)]) \n",
"print \"Time Required for training : \",str(pegasos_train_end-pegasos_start_time)+\" s\"\n",
"print \"Time Required for testing : \",str(pegasos_test_end-pegasos_train_end)+\" s\""
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Accuracy : 77.5239552592%\n",
"Number of support vectors : 266\n",
"Time Required for training : 0.437710046768 s\n",
"Time Required for testing : 0.0149388313293 s\n"
]
}
],
"prompt_number": 94
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Who is the winner?\n"
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Training Time"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"figsize(7,5)\n",
"bar(0,0.947898864746,label='LibSVM',color='r')\n",
"bar(1,0.0196049213409,label='SVMLight',color='g')\n",
"bar(2,0.437710046768,label='Pegasos');\n",
"legend()\n",
"ylabel(\"Time in seconds\")\n",
"xlabel(\"Algorithms\");\n",
"title(\"Training Time for different SVM implementations\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nTkSuQmCC\n"
}
],
"prompt_number": 133
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Testing Time\n"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bar(0,1.50630402565,label='LibSVM',color='r')\n",
"bar(1,0.980164051056,label='SVMLight',color='g')\n",
"bar(2,0.0149388313293,label='Pegasos');\n",
"legend()\n",
"ylabel(\"Time in seconds\")\n",
"xlabel(\"Algorithms\");\n",
"title(\"Testing Time for different SVM implementations\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAbwAAAFPCAYAAAA2tntoAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVPXeB/DPYROQAQZUlE1MEBTBDUP0qmMbuOYupoBk\nZiaVt3u7al0T0se0J3vqZqV1zXIjS1PMBbccDRMQdyWRTGRxecKVRQWG3/OH1/MwsgziDCDn8369\n5vXicH5zznfO/JgPvzNnkYQQAkRERE2cWUMXQEREVB8YeEREpAgMPCIiUgQGHhERKQIDj4iIFIGB\nR0REisDAa2JUKhWysrLqdZ3vv/8+pkyZUi/r2rhxIzw8PKBSqXD8+HGjLz82NhYREREAgOzsbKhU\nKtw/c+fKlSvo168f7O3t8dZbbwEAoqOj4eTkhF69ehm9lsfVtGnTMH/+fJMs28vLC3v27DHJshvS\nmjVrEBoa2tBlNH2C6k3z5s2FnZ2dsLOzE5IkCRsbG3l67dq1D728/v37i3//+98mqFTf1KlT5Tqt\nrKyEpaWlPD1o0CCTr7+iJ554QmzevNlky4+NjRUTJ06sct57770nRo0aJU/v379fuLu7i9u3b5us\nnuqcP39eSJIkdDpdtW2uX78uoqOjRevWrYVKpRIdOnQQCxcuFEII4evrK77++utKz/n4449FUFCQ\nEOJe/5IkSRw/flyvzfDhw4UkSWLfvn1GfEW14+XlJfbs2VPv663JihUrxF/+8pdat6/Ne0emwRFe\nPSosLERBQQEKCgrQtm1bbNmyRZ4eP378Qy9PkiQTVFnZ0qVL5TrffvtthIeHy9Nbt26tlxoAQAiB\n7OxsdOrUqU7PLy8vf6T1X7hwAR07dtSb9vLygrW19UMvq6ys7JFquU/UcN2Iv/71ryguLsaZM2dw\n69YtbN68GT4+PgCASZMmYeXKlZWes2rVKkyaNEme9vX11Wt39epVHDx4EK1atTJK/UpW03tHJtLA\ngatYFf9T1el04v333xft27cXzs7OYuzYseLatWtCCCFu374tJkyYIJydnYWjo6Po2bOnuHLlinj7\n7beFubm5sLa2FnZ2duK1114TQgghSZI4d+6cEEKIqKgo8eqrr4rBgwcLlUolgoOD5XlCCLFjxw7R\noUMH4eDgIF599VXRr18/gyPGuXPnVhoBVfzd/f9eV6xYITw8PISTk5P44osvRGpqqggICBCOjo4i\nJiZG7/nLly8XHTt2FGq1WoSGhooLFy5UWu+dO3dE8+bNhSRJonnz5sLb21sIIUR6erro37+/cHR0\nFP7+/nqjv6ioKPHKK6+IgQMHiubNm1c5Mvjjjz9Ev379hEqlEs8++6yIiYmp9FrKyspEVFSUsLS0\nFFZWVsLOzk4sW7ZMWFtbC3Nzc2FnZydiY2OFEEL89NNPokuXLsLR0VH07t1bnDhxQl5X27ZtxaJF\ni0RAQICwtrYWOp1OHDx4UISEhAhHR0fRpUsXodVq5fb9+/cXc+bMEX369BEqlUo899xzIj8/Xwgh\nhIeHh5AkSR5pJycnV3ptnTt3Fps2baryfczJyREWFhZ62/r06dPCyspKXL16VQghhEajEe+9955w\nd3cX5eXlQgghPv30UzFt2jTh7u5e7QgvKipK/POf/xRCCLF3717h5uYmPvjgA9GyZUvRpk0bsXHj\nRrF161bh4+MjnJycxPvvvy8/d+7cuWLUqFFi3LhxQqVSie7du+uNMCv+3ZSXl1f7d2PsfihJkli6\ndKnw8fERjo6OYvr06UKIe/2vYj9Qq9VCCCG2bNkiunbtKuzt7YWHh4fcPx5871QqlTh48GClUeKB\nAwdEUFCQcHBwED179hS//vqrPK+mflHd5wXdw8BrIBX/cD/++GMREhIi8vLyRElJiZg6daoYP368\nEEKIpUuXiqFDh4rbt2+L8vJyceTIEXHr1i0hxL0PpOXLl+st98HAc3Z2FocOHRJlZWViwoQJIjw8\nXAghxJ9//ins7e3Fxo0bhU6nE5988omwtLSstLwHVRV4FXcD3v+gmTZtmrh7967YuXOnsLKyEsOH\nDxd//vmnyMvLE61atZI/LDdt2iS8vb3FmTNnhE6nE/Pnzxe9e/eudv0VX19JSYlo3769eP/990Vp\naan4+eefhUqlEhkZGfLrd3BwkD8s7ty5U2l5vXr1En/7299ESUmJ2L9/v1CpVCIiIkLvtdzf9TRp\n0iQxZ84c+bnffPON3ofUkSNHRKtWrURqaqooLy8X3377rfDy8hIlJSVCiHuB161bN5Gbmyvu3Lkj\ncnNzhbOzs9i+fbsQQohdu3YJZ2dn+cOrf//+wtvbW2RmZorbt28LjUYjZs2aJYQQIisry+BusZde\nekn4+/uLFStWiLNnz1aa/+yzz4r58+fL07NmzRIjRoyQpzUajfj3v/8tnnvuObnGJ598Uhw8eLDG\n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\nRK5CYII=\n"
}
],
"prompt_number": 134
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Accuracy"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bar(0,81.2839290269,label='LibSVM',color='r')\n",
"bar(1,81.62,label='SVMLight',color='g')\n",
"bar(2,77.5239552592,label='Pegasos');\n",
"legend()\n",
"ylabel(\"Accuracy\")\n",
"xlabel(\"Algorithms\");\n",
"\n",
"title(\"% Accuracy for different SVM implementations\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nRK5CYII=\n"
}
],
"prompt_number": 135
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Number of Support Vectors"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bar(0,1201,label='LibSVM',color='r')\n",
"bar(1,1262,label='SVMLight',color='g')\n",
"bar(2,266,label='Pegasos');\n",
"legend()\n",
"ylabel(\"Number of Support Vectors\")\n",
"xlabel(\"Algorithms\");\n",
"\n",
"title(\"Number of Support Vectors for different SVM implementations\");"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 137
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"Theoretical comparison"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import Image\n",
"Image(filename='svm.png');"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 140
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Similarities\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Working set selection and active set selection are both optimization tecniques used to optimize the SVM optimization problem and in general optimization problems. Sequential minimal optimization is one of the working set techniques.\n",
"* Both the algorithms are iterative in nature. \n",
"* Both the algorithms try to find which constraints would influence the final optimization result."
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Differences"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* As we can see from the above diagram, Active set selection is recommended to be used for medium size datasets. In contrast for large datasets, working set selection tecniques are recommended.\n",
"* Memory complexity is $$O(n^2)$$, whereas for SMO it is $$O(n)$$\n",
"* SMO chooses the constraints which violate KKT conditions and Active set selection strategy starts with a point satisfying the equality condition."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
@PkuRainBow
Copy link

I want to know more about why the SVM-light is faster than the LIBSVM, can you explain the reasons to me? Thanks a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment