Skip to content

Instantly share code, notes, and snippets.

@xeonqq
Created August 4, 2015 13:24
Show Gist options
  • Save xeonqq/eae118f8e258e45214a6 to your computer and use it in GitHub Desktop.
Save xeonqq/eae118f8e258e45214a6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:0e106048bd091455c506746ba01dba2e60e9f484c9c324863fbf9e3686ba5129"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"from sklearn.datasets import load_iris\n",
"import numpy as np\n",
"from numpy import where\n",
"from pylab import scatter, show, legend, xlabel, ylabel, plot\n",
"from scipy.optimize import fmin_bfgs, fmin, fmin_cg\n",
"%matplotlib inline\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 345
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"iris = load_iris()\n",
"x = iris.data[:100,0:2]\n",
"\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 346
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y = iris.target[0:100]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 347
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pos = where(target == 1)\n",
"neg = where(target == 0)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 348
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"scatter(x[pos, 0], x[pos, 1], marker='o', c='b')\n",
"scatter(x[neg, 0], x[neg, 1], marker='x', c='r')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 349,
"text": [
"<matplotlib.collections.PathCollection at 0x7f2699bdf510>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n/h/qJjksU03asQAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7f2699c81fd0>"
]
}
],
"prompt_number": 349
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#append 1 for each row, because the theta0*x0+theta1*x1+theta2\n",
"x = np.hstack((x, np.ones(100).reshape(1,-1).T))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 350
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def sigmoid(x):\n",
" return 1.0/(1.0+np.exp(-x))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 351
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def h(x, theta):\n",
" assert len(theta) == x.shape[1]\n",
" return sigmoid(x.dot(theta))"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 352
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def cost_function(theta):\n",
" m = len(y)\n",
" j = -1.0/m*np.sum(y*np.log(h(x, theta)) + (1-y)*np.log(1-h(x, theta))) \n",
" return j"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 353
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def cost_function_gradient(theta): \n",
" m = len(y)\n",
" dj = 1.0/m * np.sum(x*((h(x, theta)-y)[:,np.newaxis]), axis=0)\n",
" return dj"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 354
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"theta0 = np.array([0,0,0])\n",
"r1= fmin_bfgs(cost_function, theta0, cost_function_gradient)\n",
"#r2 = fmin_cg(cost_function, theta0, cost_function_gradient)\n",
"#r3 = fmin(cost_function, theta0)\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Warning: Desired error not necessarily achieved due to precision loss.\n",
" Current function value: nan\n",
" Iterations: 34\n",
" Function evaluations: 67\n",
" Gradient evaluations: 67\n"
]
}
],
"prompt_number": 356
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"linx = np.linspace(min(x[:,0]),max(x[:,0]), 100)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 366
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"liny1 = -(r1[0]*linx+r1[2])/r1[1]\n",
"#liny2 = -(r2[0]*linx+r2[2])/r2[1]\n",
"#liny3 = -(r3[0]*linx+r3[2])/r3[1]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 367
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"scatter(x[pos, 0], x[pos, 1], marker='o', c='b')\n",
"scatter(x[neg, 0], x[neg, 1], marker='x', c='r')\n",
"plot(linx, liny1)\n",
"#plot(linx, liny2)\n",
"#plot(linx, liny3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 368,
"text": [
"[<matplotlib.lines.Line2D at 0x7f26998846d0>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7f26998efb10>"
]
}
],
"prompt_number": 368
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 368
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment