{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# One-class SVM with non-linear kernel (RBF)\n",
    "\n",
    "One-class SVM is an unsupervised algorithm that learns a decision function for novelty detection: \n",
    "> classifying new data as similar or different to the training set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.font_manager\n",
    "from sklearn import svm\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "xx, yy = np.meshgrid(np.linspace(-5, 5, 500), np.linspace(-5, 5, 500))\n",
    "# Generate train data\n",
    "X = 0.3 * np.random.randn(100, 2)\n",
    "X_train = np.r_[X + 2, X - 2]\n",
    "# Generate some regular novel observations\n",
    "X = 0.3 * np.random.randn(20, 2)\n",
    "X_test = np.r_[X + 2, X - 2]\n",
    "# Generate some abnormal novel observations\n",
    "X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# fit the model\n",
    "clf = svm.OneClassSVM(nu=0.1, kernel=\"rbf\", gamma=0.1)\n",
    "clf.fit(X_train)\n",
    "y_pred_train = clf.predict(X_train)\n",
    "y_pred_test = clf.predict(X_test)\n",
    "y_pred_outliers = clf.predict(X_outliers)\n",
    "n_error_train = y_pred_train[y_pred_train == -1].size\n",
    "n_error_test = y_pred_test[y_pred_test == -1].size\n",
    "n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method OneClassSVM.decision_function of OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma=0.1, kernel='rbf',\n",
       "      max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
       "      verbose=False)>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f649654c198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the line, the points, and the nearest vectors to the plane\n",
    "Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
    "Z = Z.reshape(xx.shape)\n",
    "\n",
    "plt.title(\"Novelty Detection\")\n",
    "plt.contourf(xx, yy, Z, levels=np.linspace(Z.min(), 0, 7), cmap=plt.cm.PuBu)\n",
    "a = plt.contour(xx, yy, Z, levels=[0], linewidths=2, colors='darkred')\n",
    "plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
    "\n",
    "s = 40\n",
    "b1 = plt.scatter(X_train[:, 0], X_train[:, 1], c='white', s=s, edgecolors='k')\n",
    "b2 = plt.scatter(X_test[:, 0], X_test[:, 1], c='blueviolet', s=s,\n",
    "                 edgecolors='k')\n",
    "c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], c='gold', s=s,\n",
    "                edgecolors='k')\n",
    "plt.axis('tight')\n",
    "plt.xlim((-5, 5))\n",
    "plt.ylim((-5, 5))\n",
    "plt.legend([a.collections[0], b1, b2, c],\n",
    "           [\"learned frontier\", \"training observations\",\n",
    "            \"new regular observations\", \"new abnormal observations\"],\n",
    "           loc=\"upper left\",\n",
    "           prop=matplotlib.font_manager.FontProperties(size=11))\n",
    "plt.xlabel(\n",
    "    \"error train: %d/200 ; errors novel regular: %d/40 ; \"\n",
    "    \"errors novel abnormal: %d/40\"\n",
    "    % (n_error_train, n_error_test, n_error_outliers))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
