Skip to content

Instantly share code, notes, and snippets.

@ljbelenky
Created September 25, 2020 19:10
Show Gist options
  • Save ljbelenky/4287a5852cca03bbb0e869402352b4d9 to your computer and use it in GitHub Desktop.
Save ljbelenky/4287a5852cca03bbb0e869402352b4d9 to your computer and use it in GitHub Desktop.
Comparison of KNN and SVCs under various conditions
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Comparsion of Classification Using KNN and SVC"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.svm import SVC\n",
"from sklearn.preprocessing import StandardScaler as SS"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"n = 200\n",
"overlap = 3\n",
"weights = np.random.normal(size = (n))\n",
"species = np.random.normal(size = (n))>.5\n",
"df = pd.DataFrame({'weight':weights, 'species':species })\n",
"def height(row):\n",
" return row.species*(3*row.weight) + (1-row.species)*(4+row.weight) + overlap* np.random.random()\n",
"df['height'] = df.apply(height, axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normalize axes and Plot"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"X = SS().fit_transform(df[['height','weight']])\n",
"xx = np.linspace(X[:,0].min(),X[:,0].max(), 101)\n",
"yy = np.linspace(X[:,1].min(),X[:,1].max(), 101)\n",
"plt.scatter(*X[df['species']].T)\n",
"plt.scatter(*X[~df['species']].T);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Build a KNN Model on normalized data\n",
"\n",
"#### You can think of KNN as defining neighborhoods around the exisiting data points. Predictions are based on how close they are to existing data points.\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"model = KNeighborsClassifier().fit(X,df['species'])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"predictions = []\n",
"xs, ys = [],[]\n",
"for x in xx:\n",
" for y in yy:\n",
" predictions.append(model.predict([[x,y]])[0])\n",
" xs.append(x)\n",
" ys.append(y)\n",
"predictions = np.array(predictions)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(np.array(xs)[predictions], np.array(ys)[predictions])\n",
"plt.scatter(np.array(xs)[~predictions], np.array(ys)[~predictions])\n",
"plt.scatter(*X[df['species']].T)\n",
"plt.scatter(*X[~df['species']].T);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SVC\n",
"\n",
"### You can think of SVC as defining moats around the existing data. Predictions are based on proximity to the moats, rather than to data points."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SVC with Radial Basis Function"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"svc = SVC(kernel='rbf').fit(X,df['species'])\n",
"svc_predictions = []\n",
"xs, ys = [],[]\n",
"for x in xx:\n",
" for y in yy:\n",
" svc_predictions.append(svc.predict([[x,y]])[0])\n",
" xs.append(x)\n",
" ys.append(y)\n",
"svc_predictions = np.array(svc_predictions)\n",
"\n",
"plt.scatter(np.array(xs)[svc_predictions], np.array(ys)[svc_predictions])\n",
"plt.scatter(np.array(xs)[~svc_predictions], np.array(ys)[~svc_predictions])\n",
"plt.scatter(*X[df['species']].T)\n",
"plt.scatter(*X[~df['species']].T);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SVC With Linear Basis"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAD4CAYAAADxeG0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAso0lEQVR4nO2dfZBcZ5Xen9Mf4/mQZkZGGnkk2QxWtHx4Ua3wCJxaqtYOHwYMMqutJUDIBtiUl1AUTrIVB9ZViytbFM46tSlvYItVeVkqicF2iAGxxivbKRxKBBlJtiP8BcLeIbY1RiPkmZE0I2m6++SPnttz+/b73q++t/ve7udXJTx9+/btt4X63DPP+5xzRFVBCCEkvxS6vQBCCCHtwUBOCCE5h4GcEEJyDgM5IYTkHAZyQgjJOaVuvOnGjRt1amqqG29NCCG55ejRo6dUdZP3eFcC+dTUFI4cOdKNtyaEkNwiIr80Hae0QgghOYeBnBBCcg4DOSGE5BwGckIIyTkM5IQQknO64lqJw3eeeBl3HPgZTswvY2yoDBFgfmklsZ+3jA/hujdswg+em0vtPfL4M/9e+PfSS38v/2LdT3BL+V4ML7+CBzZswp3rBvBKUXBZVXHz2Yu44dU5YGhDPegsv5rcz2PbgB3vBo4/BCy8VH/8jj8Fdn4okfgo3eh+OD09rVHsh9954mV8/v6fYnmlmuKqCCG9zJ7CQdxevgvDchEPjAzjto2X4nxhTZQYrNVw26nTuOHcUmcWVB4CPvCXkYK5iBxV1Wnv8VxIK3cc+BmDOCGkLW4p3YdhuQgAuHPDeFMQB4DzhQLu3DDeuQWtLAP/6z8kcqlcBPKX55e7vQRCSM7ZKqcaP79SKhrPsR1PjYUXE7lMLgJ5UaTbSyCE5JQ9hYM4OPDZpmOXVcy/4duOp4Ykc+PIRSCvcooRISQGji6+rXAK7nzw5lfnMVirNZ07WKvh5lfnO7tATebGkQvXSlGEwZwQEpo9hYO4pXQftkpzAHdwNjTv3DCOV0pFXFap4uZX51Pd6HxgZLj1/ZYuJHLtXARyBnFCSFjc7hQ/bji31DGHitclM1su4baNlwKnTuOGBK7ftrQiIpeLyA9E5BkReVpEbk5gXU1QIyeEhMXtTskKVpfMpeOJXD+JjLwC4I9V9XERWQ/gqIg8rKrPJHBtAMzICSHhcbtTsoLVJVPMyGanqs6q6uOrP58B8CyAre1e1w0zckJIECZ3SlawumSqyWx2JupaEZEpALsAPGZ47iYROSIiR+bm5iJdlxk5IcQPmzslK1hdMqfnE7l+YpudIrIOwP8E8K9VddH7vKruA7APqJfoR7k2XSuEkNLoE7hk0wFIeR66Mo4Lc9fjfWfP+bpTsoLVJZMl14qIlFEP4ner6v1JXNMNgzgh/U1p9AkMTt4PKawAAGRgHiOT38K1c7/GtqW1vNFo8UvYmRL3PdJ0ybQdyEVEAPwNgGdV9S/aX1IrzMgJ6W8u2XSgEcQdaoUqvnrpOuxdDeRWix+Atz+tOHlsPSpLRZSGq5jYeQZjU9Fbf/i9R6wgnaHKzt8G8M8B/BMReXL1z/sSuG4DBnFC+hspzxuPu90gNovfwdlxzB4eQ2WpBEBQWSph9vAYFmaGIq8j8WZbWansVNWDAFJVp5iRE9Lf6Mo4ZGC+5bjbDWKz+L33IKDV5uCr1QJOHlsfOStPvNlWQhk5KzsJIZnnwtz1TRo50Nob5bJKFbPl1pC2scV6Uaey1BpEF2aGfCUY23vEbraVUEaei6ZZ9JET0t9UFnfh/OxeTKzUIKqYXKm0DIGwWfwqI+ZgWRpuPr4wMxQowSTebCtDGnnqMCMnhFQWd+GRF1/CsZkX8dBLJ1o2F284t4TbTp3G5EqlKdi/9s2LkGJz8JViDRM7zzQdO3lsvVGCeeqZDdg5dTnevW0LABjfI7YbJSsaeSegRk5If+N0MwzCaPGbqv8nyLVikloAYHwRUJGGQ+W2U6fx0Esn4nyMVqiRE0L6gbDdDP0Ym1oO3NgsDVdXZZVmfj269rPjUEnMD86MnBDSywT1FE+aiZ1nMHt4rEleOV8CvnFt85snOg6OGTkhpFcxZeE2R0mQ0yQszmuca50eFfy3awU/uqo52N5wrIrjj060/X4AmJETQnoXb09xx1HiZMuOo2RproyFmeGW4wBiB3Pn5rDy01F8dn8RH320gm+sBvTrflrBxw4oKtVSIu/HjJwQ0rN4e4rbHCXzL4wAKi3H4xT7APUS/IOz4/jIYaC8mixvWgQ+/YBiQ6WCj/zvKgrV5uDbzvsxIyeE5J5rXzyKjz/zIDYtz2NuaBzHrtqOvVf+uOU8m6MElrBgPd8Hp4/Kl79RawRxh3IV+MQjVVQvmh3bcd4PADNyQkh2MbWcrSzuajrn2heP4uYnv4XBar1ac/PyPN515AjOHCnjF8MTTdrzykgN5XOGoCewBvOFmaFIWbLTR2X9cs34fPViweps8RYXhYaVnYSQLOK0nC0MzEMEKAzMY3DyfpRGn2g67+PPPNgI4msIvFWVD4wM467rijjviZ+1omL8ynMwR3LByWPrI607jBtlYueZUMVFoWFlJyEki5hazkphBZdsOtB0bNPyvO91HO35zg3j+MGbS/jr9wnmRoEagLlR4L9fL5jcbWmkguhyh9Mv5cyg+Xkp1zA2tYzJ3QsoDVcAKErDFUzuXqBrJQzUyAnJD7aWs97jc0Pj2BwQzCtLxUam/KOrivjRVa7rqeJLM/ZCnqhyx82vzuO2jZfib98t+FffUwy4Q47UMHl1/aYRprgoNMzICSFZRFfGA49f++JRDFYu2OTtBqXhqn1w8erxpOQOp1fLC7+h+Or7BadHAV3Nure8rY2s2w9m5ISQLGJqOau1Mi7MXQ+gHsT/7ZP3odw0Qd75fq/thznB+OZXpWkqD9DccdBbyNNOkU6jV8sIgETH41iga4UQkiZhnCcmKou7cB7AO059F//s4Fm8ZhE4NTKAv31DDY9eDnz6me94gjgACKRcRbGsLcH4hnP1M/zmZCYqd3QSZuSEkLQwDTsenLwf54FQwfztT9fwqScvYHA1Tk2cW8LNT34LALB+eQmmoWK6UsCO35s1Xi/NwcVdhRo5ISQtwjpPbJishYPVFXz8mQetm5Cxvdh5hhk5ISQtwjpPbNishZuXX8XI9vNYdPVHAaJtTkZtkpVUU61UoEZOCEkL27BjmyPFi91aKFicGcbY1BLOzg5GDq625lmAuWlV1PNt75la10Vm5ISQtAhyngTx9Te9t6n83s1asytYA+ADI8PGzU1b8yynaZU3uFZXxPf8IFLvusiMnBCSFo7zxOtaAYCR7bcHOlkevfxqvEV+jncdOQLTxqbTsdAdGJ0MfWWkhgPXFTE7UQ9Pzog1ALjSUq1ZWSoag66tEUvYqs/Uuy4yIyeEpEllcVdTkI7qZNl75Y+x/EzBWHXpRqsFzD8/Aifgl88V8Ym/By4Wqo2hDs6Ita8MV6xVnKaga7yJIPzGaupdF+laIYR0kqhOlq1yylh1aaY54A5WgI8+2vy9f6VUtFxPsW7yvE8Qbb6OFGtYN3kex/dP4Nl7JnF8/wQWZoaMr4zqpInsvGH3Q0JIJwnrZNlTOIiDA58FgJYmU5DwSdlrPP2wLqtUVwt/ltAcnAULM8MoDphvGMWBWlOTq7GpJSzMDK9m9s2dFr3YbhzmTF+jd0GkRk4I6SRhnCymWZvuqkuvjr16BZgCo3t6vbsk/+zsYMv5Wi2gVqhCirUWW+Pmtyw26dbH90+E3gA1lf/7ySe5dq2IyNcAvB/ASVX9zSSu6YYaOSHpEbYUP4yTxTtr04spMK6bPN/kAAHqvcYffLtAVFtK8m2BVFcK2HLNfKAl0PZ623Fv+f/x/RPJDZfIWEb+dQBfBvBfE7peEwzihKRDlA1Mm5PFfZ531qYJU1+U4U0rLQH4S6PL+NJM/fmFmSEcP1afXG+bClQarobqudJu29uJnWdafquIPVwiSxm5qv5QRKaSuJYJZuSEpIPfBqYpK/c6WYC6nHJL6T5sCRHEbfgF4BY5Rp3/ae2UGIZ2A3GS3RazlpEHIiI3AbgJAK644opIr2UQJyQd2i3FN2nibpKofrTaCkV9i4ps2OSd2aOjOHFoHEB9g9SrrXuvkUiZf5Yy8jCo6j4A+wBgeno6UmRmRk5IOsQtxX/r2D349abH8WhJ8MHKxpa2skAy5fH119m93G/8sLlbYhDeDdgTj40BunazqF4sYvYn45HXGhn6yAkh7XJh7npordx0TBVA4ULLsGSHt47dg3+47HGcLBegIo3KywdGhpvO8yunj0La3RJPHlvfFMQdtBZ9gHNk6CMnhLRLZXEXzs/uRa0yDCdfEgEKpWUMTt5vDOa/3vR407QeYK3ysunaEd0hNhKfXB9hPU7pf2pkSSMXkW8CuBbARhF5CcAXVPVvkrg2wIyc9CZRJvDEndYThsrirvq1S83SiG3Tc65kTqycIcmNNSc0FDnRzUUDtnXWkXjNsMKSJY1cVT+SxHVsUCMnvUYU21+703rCEGbT03GnfOXYAN57sF55+etR4BvXCn50VbFlSLLNHeKUx0cJymmOcpvYeaZFI3cTqxlWWLKUkacNgzjpNaLY/qJaBOMQtOnpuFNWflnExw6XUajWs/JNi8AffV8xUKvg+s3Nrw9T/BO7/WuCOO87e3QUulKAqcrUkVgSX2OWMvK0YUZOeo0otr92LYJhCKradCo2jx+baARxh8EK8C9/UMXOD7TO1DRVRUbtD96JCT/OOm1Vm6lJLHStEJJfbPY+0/Eo58alsel5cRyqQO3iOM7P7m1k/E7Fpm1jsHyuEGpTMOoGqGNhDNPgKgn8ujXGcdwEwoyckPwSZQJPu9N6wuJXtelg3xgUnDg0jhOHxhsSimmUW9QN0KCJQEFEzead5+qFQWaJJVGYkROSX4Iy4LjnJomji28rnILjAPbvLy5wsub550eMWXRUK2E7Fsa42bxzwzGRlHe9ATNyQvKNKQNO4tx2cbLwrbIWwB2CMtY1zGPQduw5CSC8lTCOhdGdhdvWEZTNJ9oYyw+6VgghYYjiQbf1Tmkahrytiv/00yrK56IFISeLjmIljBpQZw+PNo2N81uHH2l71xswIyck36RZ5ON+jygedFM/8QdGhnHbxksb1Zyz5RLuug74owe1xcHiu5YYskSUgLowMxQYxIH602GshGl619fWwoyckNzSiSIfILoH3dRP/M4N4y0l+T94cwkjtQo++WjFleG6A2j8NrNewgbUuqMkxI1FU67WjAJ7rRCSX6IOMo5LnDmbXryl9w4P7Cxix56TeOOHZ7HlmnkUB6qoB3AFCtp4XBquYHL3QupBM4qjJBUrYRyYkROSX6IW+cSVYfwqNt0DIQRo2dh0uKxSxWy5NVR4S/Jr1bprpf5AUKvWsOWa+aZ2sSaJJKmCH7s10jwTNHErYRz6KSMvMCEnPUaUIh9HhikMzNc7E67KMLY2s26MbWprZVx1aqphLSyIPYgDwM2vzmOw1mwZdA9DBoJb1tqsgLOHRxMr+LFPvDcnglK22Sg7iCQTgnMRyGtMyEmPYQuwpiKfuDKMk8VDVqAqTR70v1j+P75Dkt3ccG4Jt506jcmVCkQVkysV3HbqdNMgiSC/ty3Qz78wkkjPcqCud0/uXkBpuAJH0qlLPpYAohnIEDWZm0kupBVCeo0wg4wd4vRa8W6mAtp0o/jkFQN4pXR5y4R6GzecW/I9J8jv7Tflx0RlqWjtkOgnxXg3RhdmhlC9aOlqWJF0GmF1gVwEcsvQbEIyTZCuHbbIJ844NlsWv27z/SgVLmK2UP/qO9N9AAQGcz+C/N5W/drny+2c7+6QCCD0+LhgT7mk1542NMn8VpCLQM4gTvJGkvbCOL1WbNl6tXgRVY8g7kz3CRvIF2aGXC1f1wYVT+5eaGTKxYEaalqvAD15bH1L+1qgHujHppZajps2J7VawInHxiGlWqjeK2E95d3f8EwmuuVCI6f9kOSF0ugTGNl+Owa33JuYvTBOr5WonRFtFkMvzqBiXXHK36VpUPGOPSex5Zp51KrSOKeyVMLCzDDGppaa9OvJ3QuY3L3YomvbP5Q0bh5evAE5rKc88d4pUaH9kJBs4JZQAH8HSNwe4mFlmCY5R5vXMlirYVAV88XW4OG1EtoIGlQ8NrVs3dg8OzvY6LXixtSz3G/0mglvQA6TaafSOyUqLNEnJH2CdO7WTUV/kuwh7sW0FtV66Juo1PBvTp+GCJrK7YFWK6EfQYOK/c4JK2OsmzwfIIsEV436e8qRXu+UqDAjJyRdwujcpk1FG2n0EHdj3OAU4LKVCh5+6UTT8UYDrJCuFQe/QcVOVtzu0OWzs4Pwk0WKAzVISX0LiEybr4BifPs5TO5eDLWOjsCMnJB0CdOnJIxUoorUmmIBrdKOl1959O8gK6EfEzvP4MShMbRur+nqhuYQtOJYUeL1WvHL3KVYw/rLl1eDfQAFBar1uOFsyHY9A/fCjJyQdAnj37ZZAxvPp/xPN4y0E1b/DsPY1DJ+9fgoqi21RIL5fxjG/POuMn0AgELKNUxeHT6I2q2K2uJyqSyVmiYTOTcLbzZei9ClsaMwIyfEn3bbxIbxbxutga5/qs5mYxj7YZz1Bkk7UfTvsNgKbFDzBnHUH9cEJx6rB1sIMH6lv7xh86SPTS1h/oURQ0Vm/XHDU15Q42br7NHR9PuLR4Wj3gixY+xPsuVeXLL5O6GvEaaM3mgNPPFP6zcBT7zxsx/G7adilXYspfRJYNe6zVmvVmU1+Nb/O//8CGYPj1qvbyq1H3zNxfoGaEBZvVYLVouirhQ6NsQ5NMzICbFj2/grbziE6vJrQ2XmYcvoTdbAwS33Gq9pC7xh9HhTxm77rWGyUsVDng1OG1G7D9o2Ev0qKL2P518Y8c3K3ZbEhZmhEKPlwhBv7FuqUCMnxI5V3xbgks37Q0sYcWdlRi2rD9LjbQ6alfmrUR4/2nQTiCKnOF0Jw5S8O5im9milXhjUiiXAG77SthtK6IERqxQHavWCpBA3mq5XdjIjJ8SO3yakFJchpXowSmsyT9Sy+qDAb8vYS+uew/nZvXjtxDcxV5LIdkK/9rN+maqpOZU5S7fgiammG8qJx8ZWN1b9FOBWd8zmtyw2PlvQjYaVnS5E5D0A7gRQBHCXqt6exHUdGMRJVC7MXV8vkzckcjbtOslAHqW7YWO9PoHfL2OvLO7CIxfu8K0ota6zzeIdB9tszaW5sqG4RzF+5bmm15tuKNCCwR3TdALGt5/D2dlBaydEB9ONhpWdLkSkCOArAN4F4CUAh0Vkv6o+0+61HZiRk6hUFndhZeiXKG841BTgvGXrDnFL54PWEPbmEBT4bRn7YGUIf28Z0RaGdot33JhmazqP624TWF0r0SUOd3FPcIFPlCHOHSVDGflbAfxCVV8AABG5B8CNABIL5Azi/Um79sELv/ogqsuvbboGChchpVbZIc3S+bD4BX5Txl6oFfEnp2exrRC/UjGo/WwS1Btjra1xYWaopde4X8WoieJALXKFZtghzh0lKxk5gK0AXnQ9fgnA2xK4bgNm5P1HUm1gvcHR2I8k5dL5JHBn7IXy/GrvlFN4/1J71sJOZ6q2zVVzO1s7jm7u3iB1eptnJtsOQ4Yy8lCIyE0AbgKAK664ItJrGcT7jzB2vDhE1a79aPc3hqhUFnfhfWfP4fbyXaHHtDlEmaqTJn6dEd39zKVcA6oFaM3e7bBF914NE2GcN5khQxn5ywAudz3etnqsCVXdB2AfAExPT0eKzMzI+484483CEtdS6CbJwRFRuKV0X6wgHtVi6H19Uhm73+aq0QnTGGDR2rfFuEG6SiY84mHIUEZ+GMAOEXkd6gH8wwA+msB1GzCI9x9xxptFpZ2MOq3fGILYKqcivyauxRCw2AI9vU2iBMsom6tOYLfdSOpFQna67hEPQ1YyclWtiMhnABxA3X74NVV9uu2VuWBG3n/EGW8WhXYz6jR/YzCxp3AQt5Tui/XadiyG5qzX09sE4SUMc6/xtc6JbmmlIHUt3HbDCLNBenz/RLb18iz1WlHV76vqb6jqdlX9YhLXdMMg3n/EGW8WBb+MOgy23wzScL/sKRzE7eW7sK1wKpZX3GYlDGMxDAr2TmYfFnOvccGZF+uZv9MLRVeKqwU89r4oEzvPQIo1n3fLUE8VG1nJyDsBM/L+JAkt20bUjNorw1TOvqGlND4t90scXdyNrTdKZakYmLGGyXqjSBi2c+suFPtdyiQFeR03jmslkz1VbGRII08dBnGSNFE0eJMMUx4/ipX5q1Fa91zqrpU4urgbJ4CtbRwCYeUR802gGVNmb9O1o/rF3Tg3Ab/N12fvmfR9beZgRk5IfKJo8H59Ts49/7mW85OyJbajixsx9gv3z1hbsl4AJgeJGz+XjK0ACQWFrvgHW5Pl0HsjSrJStSMwIyckPlH85FFkmKRsiY4u3o6k4sbPqgf4Z6zelrJBVkQ/l8yOPScb57ivAbRO9XHjZzl034g6UamaKMzICTETNiMOq8FHkWHatSU6WfhWibexaSNIWgibsYYpHgpyyfhdw8+1Evba7utkvsqTGTnpVeJIE94BxFFGrAURRYZpx5aYdBYOrBXV+FO3/yVFXHnDL8A7koptQ9R97Uz2VLHBjJz0InGkiaABxO0W6kSRYdopZGrXneLF3CPcRN3+Z2sHG5Uw8oZJogHsmbSfNJRp6SQIZuQkr/hl3HGkiaABxED7hTphZZh2Cpnadad4CdLF3VQvFoCL8Qt9gObgXByooVaoQldaC3qMG5Y/GYeqAmrexLRLQ4rJ3Qv5ycC9MCMneSQo4/aTJmw3gDBBulNtauM05UrcneKsJZLlrj3vtTc4Vy8WIcUatlwzH24z1OCoca/BT67JbRAHmJGTfBKUcVulieqQ9QbgN9YN6Hyb2iiFTGno4g7teLaBaDeCIDdJU7vZGGvInRslLAll5ImU6KdNMcnte9JVgjYDL8xdD62Vm56rPxbrDcD4Gq3/qVWGoLUyBrfci5Htt6M0+kRSH6Ut9hQO4uDAZ3Fn+a9SCeKArYRdXX/8ieK99nOTONm6U34fdZAyUJdXJncvoDRcAaAoDVfyLak4MCMneSRoM9AmTQxuudd4PWdmpek1ALrSajaINLNwN14rXlCPbzdRs10/6SOUVi9qLK+vrggWZoYaTpTcB24v1MhJHgmzGWiSJnTTgcAbgPc1I9tv70qr2SCSdqf44Q5+x/dPoLLiF8Tr37E4rpWJnWfqG5aum4QUFBM7zwS2m3XeW4qAVj3r0wJOPDbe+Cw9BzNykiZpTb9pZM+bvwcp1seUaS34n2EcN0inW82GJWl3Slj8nB9JFM6ork5XbnocUqvXArRq+Z6r5GfiT1SokZO0cJwlhYF5iACFVUkiSX1ZCisQqRfuFErLgdeP09a2k61mw+Do4t3Cr53tjj0n2wqSJ4+tb1gHG2h9szO43WwwUdvl5gZm5CQt0p5+E/f6pkHKI9tvt/7WkPZwiih0Shf3I03nR9AIN8DbbrY1OZNyDaiJVU/PbAfDdqBGTtIibUkiieuHqQBNctByu3RSF7eRZh+SoLJ8b+Mt0w1l8upFAFjV1FsDfWY7GLYDM3KSFmnPy0zi+mGz+jSHU0QhTV08ynDktJwfUbJ9U4auVcHJY+vrPV9EWzJ2Z+O052BGTpLAtKmZtiSRxPWzupHpJa2qTYfZw6NNMzDjltcnQaGoqDoblgVFoag4cWi8oZObpvt4S/Vb53muUqz13kYnkK2ZnWnDIJ4Otk1NAKnOy0xiHmfWNjJNtDtrM4iFmSFj4Ov0xqAjlTgzNgEBahI4c9NvsLOXtclGPQYzctIufvLEuec/l6ok0a7kkaWNTC9p9RT3Ug/W5jfo5MZgmIBs6t0SZY09qY8D1MhJ++RFnjCRpY1MN510p/gFwk4GvrAB2Xue3V/e7EfviZ4qNpiRk3ZJe1MzCfwKk7Kykemmk+4Uv0DYycAXtjmX9+Zi2yAdm1pKrDd65mFGTtolijxhCqhAuhlxUvMvO0knqzbNE+4V49vPxQ58URww7nXYLIMOpqza3w65GGv9uYMZOWmXsPKEOaD+D9Q7ElZdx5INsmkXJiVJ2u4UE1F84WECdNCEer/r2PupaH3IhNb94SceGwe0uZ9Lz2bbYWBGTpIgjDxhDqitJddJB9m8aPjdrNoMEwjDBGggXE9x23Vs8kpxoIZa1VWtufpV7qZNMlMwIyedIkrgTDLI2odMDPuW5neaLFRt+hEUoB2CJtT7Xceodxe0PkLOZin0rCGOrJN7mJGTThE0gcd7blKYNfwipHAeUqp3TsyCbt5JXTxOsAsK0A5BZfaR+qkA0BoQNETCOTfsbw09Rxa6H4rI74vI0yJSE5HpRFZkgN0Pu4t5ak8BWit6jiXr4zYVDmltoEXWcSSdTtPpbobeSTu2Qhsvfl0P3Zi6FDqblAszQ9aY7O6nUr+GYx8M/t46r/XL9nuajGTkTwHYC+CvE1iLFWbk3cVvAk/aPm6vhr/uDZ8zntdp3bwbunhYicRL2D4ots1ToF5Kb+xY6LlOqGlAhteG/a2h58iCRq6qzwKApJwxUyPvPrZN0U7LGd30vjvOlC1yCjUUUJL2emxHJU6wc6QYrUpjnFppuIp1k+dx8th6nDg03uIg8d4Uju+fMAdn0Za5mcGB1zyFKEjW6VkykpGHRkRuAnATAFxxxRWRXssgThy6VZrvzcAL6GwQB6IHu5Z2sVrPgtdNnsfCzHBoPdoanLX5/Ib8Yvm6SrFmHZicZq/0TNOpjFxEHgFwmeGpW1X1u2HfSFX3AdgHANPT05EiMzPycKQ1ni1LdKs0PwvOlKjBzibFzL8w0iKT+Ek0YW4gzk3DJL8ACimv9Rv/+f2bV90saBxPs1d6pulURq6q70zkndqAQTyYPFZBxqUbpfndmrPpJmqw88uko5wf5gbiq42LNoK4d0CzrhRx4rG13wZ6PnB7yYJG3imYkQcTtwqyH7L4duhGxaYfUYKdtQeKRf6wSTRhbiC+2riuuU/cQdz7fN8FcSAbGrmI/C6A/wJgE4AHRORJVU1crGQQDyZOFaQxi99yL7DlXgZ1ZGPOZjusmzzf0q/caUrl1sid4356dNANJKhxVtAmaGWpiOP7J/pDTnGThYxcVb8N4NuJrMQHZuTBxHFzGLP41e98L0szQXSqn3iaLMwMYWFmGM1ebsXY1BImdy9ieNNKonq0uYHXGmtFRbaQI/1TBOQmCxl5p2AQD6Zy9g0obzjUFHhU6xn5yPbbjdl1kPc6qw2q0iRPWbhfladt2MPZ2UEAi4nr0c61fvX4aEtZvjvb92rkXsL44nuKLGTknYIZuT+l0SdQHj/aGsQDsuswpfdZa1CVNllwp5jwBu0gC2E3Cmycm0NQG4G1YA+Yqj97vgjIDTNy4uAnkTQeG7JrkyfbS9hCm17ZNM2CO8WLqQ+J36zOsanlrhbY+GX77ueO75/ozyIgN1notdIp2GvFn7BZs/c8by8T7/0ybKHNJZu/g8Et97YMcS6NPhHyE3SfTvdNiUKUIcVONuvXNyUr5GGNqcOMnDiE7U5oyq7dnuw4WXVp9IkWbR7Il76edV08zpDidgpsOtVOtm+LgNxQIycOxrJ1bZZXwmTXcQptLtl0wOrsyIu+nlVd3CHukOI4G5qdbifbl0VAbhLKyHMhrTCI+2Nq97ry6jVNj8/P7k0lO/YL1lka4uxHFnVxNzYJYnz7OZSGKwAUpeGKtY9JFPq2nWy3YEZO3Jiy6Qu/Sv99rf51ReqNrNola1WbNtIaUmySUPq2nWy3oEZOsoBN1ll59ZpM6+NZ18W9JC1B2CSU4kAN1YutwaWvnCSdhBk5yQLd6kYYl16o2kwCm4RSK1QhxVr/tZPtFszISVboRjfCOOQtC08Tm1SiKwVsuWa+v50knYQZOSHRyLo7pZP4FQz1vZOkk9C1Qkg0su5O6SQsxskIzMgJCUfW3SmdKsBxw2KcjECNnJBgsq6Ld7oAxw0llAzAXiuEBJN1XZwFOH0ONXJCgsm6Ls4CnD6HGTkhdrLczdCNrdCGBTh9AjVyQsxkURe3bWiGmVDfzfWRlKFrhQC9M9AhCbJatRlmQ7OdINpuEE5qw5U3gxgwIyel0Sea+pz0+8DkrGXhDn4bmo5zJG7ASyII29Z34tA4Th5bHyogd9N9k2uokRPjiLfVgQ79RpbdKX4bmsf3T2BhZij2tZNwvdg3Vtcm2wetke6bmNC1Qmy9wPMy0CEJnE3NLLtT7BuX4QOljSRcL0Ebq2ECMt03MemnjLzAhNyIbXBDXgY6tIsjp2wrZEsT92Iqh3fTTuaahOslaH1AcECm+yYmkkwIzkUgrzEhN3Jh7npordx0LOzA5DzjZOF3lv8qs3KKm7GpZUzuXmhM8zERN3NNomdKmPUFBWT2bomJ+t9Aw5KLzU5iJm+9wJMgy5uafjgbmsf3T1i7Dsa9LtB+zxRnfd5NSyBcQGbvlu6Si0AusOUJJC+9wJMiy5uaYUjDN96u68UbfCd3L8QKyOzdEodkNMG2ArmI3AHgAwAuAngewCdUdT6BdTXBIE4csrypGYYsZa42y+Dk7gXs2HOy4+vpT5KJbu1m5A8D+LyqVkTkPwL4PIB/3/6ymmFBEMl6K9ooZCVzDfK3kw6QBfuhqj6kqpXVh4cAbGt/Sa0wiPc3eXGn5A1aBjNABu2HnwTwoO1JEblJRI6IyJG5ublIF2ZBUH+Td108q9AymAE6VaIvIo8AuMzw1K2q+t3Vc24FUAFwt+06qroPwD4AmJ6ejpRiMyPvb/Kui2eVMBuv7J+SMp1qmqWq7/R7XkQ+DuD9AN6hmk7EpUben/SSLp5FgjZe2T+lA2ShaZaIvAfALQB+R1WXElmRAQbx/iOvfvG84bfxys3QDpCRNrZfBnAJgIelrmMfUtVPtb0qD8zI+4estqLtR7gZ2gGykJGr6j9KZBUBMIj3B8zCs0VpuJpoFSoxkJGMvCMURSDrH++rUvR+hO6UbJGV6UU9TRYy8k4h6x/nAIU+gO6UbJGlKtSepZ8y8ksm7AMUGMjzD90p2SUrVag9S19l5KV58/E+GqDQq1AXJ31NBis7U0Mr4+bjfTJAoZehLk76miz0WukUF0725wCFfoC6OOlr+iojP/MWnJ/di9rFcagCtYvjOD+7l/p4jnGm/BDS1/STRl5VBfpsgEIvQ12ckFX6ybXCys7egFWbhHjou4yc5Bpm4fmCXQ87BDNykifoTskP7HrYQfrJtcIgnn/oTskPfl0PScL0k2uFE4LyC90p+YNdDzsINXKSdaiL5xN2Pewg1MhJVqE7Jd+w62EHYUZOsgiz8PzDrocdhBk5ySJ0p/QG7HrYIehaIVmE7hRCIkDXCskSdKcQEgNq5CQrUBcnJCbMyElWoC5OSEyokZOsQF2ckJgwIyfdhro4IW1CjZx0E+rihCQAfeSkG7Bqk5AEYUZOOg2zcEIShho56TR0pxCSMFlwrYjIn4nIMRF5UkQeEpEtiazKAzPybEB3CiEJk5GM/A5V3amqvwXg7wD8aftLaoUZeXehO4WQlMiCRq6qi66HIwBSSZ2ZkXcP6uKEpEhWXCsi8kUAfwBgAcB1ba/IAF0r3YO6OCEp0imNXEQeEZGnDH9uBABVvVVVLwdwN4DP+FznJhE5IiJH5ubmIi2SQbx7UBcnJEU6lZGr6jtDXutuAN8H8AXLdfYB2AcA09PTkSIzM/LO4njFtzCIE5IuGXGt7HA9vBHAc+0txwyDeOdwNPFthVMoCFj0Q0iaZEQjv11EXg+gBuCXAD7V/pJaYUaePqzYJKQLZMS18nuJrCIABvF0oTOFkC6RkYy8IzAjT5d+cKYszAxxmDDJHlnIyDsFg3i69LozZWFmCLOHx6DV+pZQZamE2cNjAMBgTrpLRio7OwIrO9Olmo9/BrE5eWx9I4g7aLWAk8fWd2lFhKySBddKp2BGni4F1Lq9hFSpLJm/LLbjhHSMfsrIt44PdXsJPc0J3djtJaRKadj8ZbEdJ6RjjF2eyGVyEcj/3fWvx1CZ2VNa/HnlQ1jSgW4vIzUmdp6BFJt/65BiDRM7z3RpRYQAKA8B70imz2AuAvkHd23Fl/a+GVvHhyAAxofK2DBcTvTnreND+Ng1V6T6Hln9+Xu1t+PPy5/G0tAkAAGGLq3/gdQzhuk/XM0cPM/l5OexNw5h8rcrKA1XAChKIzVM7l7A2BuH4l+/B/5eUvmZfy/h/l7GLgc+8JfAzg8FRL9wiHZBf56entYjR450/H0JISTPiMhRVZ32Hi90YzGEEEKSg4GcEEJyDgM5IYTkHAZyQgjJOQzkhBCSc7riWhGROdTb3sZhI4BebQ7Sq5+Nnyt/9Opny/vneq2qbvIe7EogbwcROWKy3/QCvfrZ+LnyR69+tl79XJRWCCEk5zCQE0JIzsljIN/X7QWkSK9+Nn6u/NGrn60nP1fuNHJCCCHN5DEjJ4QQ4oKBnBBCck6uA7mI/LGIqIj0xGQEEfkzETkmIk+KyEMisqXba0oKEblDRJ5b/XzfFpHxbq8pCUTk90XkaRGpiUjubW0i8h4R+ZmI/EJEPtft9SSFiHxNRE6KyFPdXksa5DaQi8jlAN4N4P91ey0Jcoeq7lTV3wLwdwCS6TqfDR4G8JuquhPAzwF8vsvrSYqnAOwF8MNuL6RdRKQI4CsA3gvgTQA+IiJv6u6qEuPrAN7T7UWkRW4DOYD/DOAWAD2zW6uqi66HI+itz/aQqlZWHx4CsK2b60kKVX1WVX/W7XUkxFsB/EJVX1DViwDuAXBjl9eUCKr6QwCnu72OtCh1ewFxEJEbAbysqv9XRLq9nEQRkS8C+AMACwCu6/Jy0uKTAO7t9iJIC1sBvOh6/BKAt3VpLSQCmQ3kIvIIgMsMT90K4E9Ql1Vyh9/nUtXvquqtAG4Vkc8D+AyAL3R0gW0Q9NlWz7kVQAXA3Z1cWzuE+VyEdJPMBnJVfafpuIi8GcDrADjZ+DYAj4vIW1X1lQ4uMRa2z2XgbgDfR44CedBnE5GPA3g/gHdojgoYIvx/lndeBuAe675t9RjJOJkN5DZU9acAJpzHIjIDYFpV89zRDAAgIjtU9fjqwxsBPNfN9SSJiLwH9T2N31HVpW6vhxg5DGCHiLwO9QD+YQAf7e6SSBjyvNnZi9wuIk+JyDHUpaObu72gBPkygPUAHl61V3612wtKAhH5XRF5CcA/BvCAiBzo9prisroZ/RkABwA8C+A+VX26u6tKBhH5JoAfA3i9iLwkIn/Y7TUlCUv0CSEk5zAjJ4SQnMNATgghOYeBnBBCcg4DOSGE5BwGckIIyTkM5IQQknMYyAkhJOf8f3J8/xhlVQbvAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"svc = SVC(kernel='linear').fit(X,df['species'])\n",
"svc_predictions = []\n",
"xs, ys = [],[]\n",
"for x in xx:\n",
" for y in yy:\n",
" svc_predictions.append(svc.predict([[x,y]])[0])\n",
" xs.append(x)\n",
" ys.append(y)\n",
"svc_predictions = np.array(svc_predictions)\n",
"\n",
"plt.scatter(np.array(xs)[svc_predictions], np.array(ys)[svc_predictions])\n",
"plt.scatter(np.array(xs)[~svc_predictions], np.array(ys)[~svc_predictions])\n",
"plt.scatter(*X[df['species']].T)\n",
"plt.scatter(*X[~df['species']].T);"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"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.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment