Skip to content

Instantly share code, notes, and snippets.

@ljbelenky
Created July 27, 2020 18:32
Show Gist options
  • Save ljbelenky/c6485c3d67a1d9601cb096f523d590a1 to your computer and use it in GitHub Desktop.
Save ljbelenky/c6485c3d67a1d9601cb096f523d590a1 to your computer and use it in GitHub Desktop.
Example of Predicting with KNN
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"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.preprocessing import StandardScaler as SS"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"n = 200\n",
"weights = np.random.normal(size = (n))\n",
"species = np.random.normal(size = (n))>.5\n",
"df = pd.DataFrame({'weight':weights, 'species':species })"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def height(row):\n",
" return row.species*(10 + 3*row.weight) + (1-row.species)*(4 + 4*row.weight) + 5* np.random.random()\n",
"df['height'] = df.apply(height, axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot unnormalized data"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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(df['height'][df['species']], df['weight'][df['species']])\n",
"plt.scatter(df['height'][~df['species']], df['weight'][~df['species']]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normalize axes and Plot"
]
},
{
"cell_type": "code",
"execution_count": 5,
"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": [
"\n",
"X = SS().fit_transform(df[['height','weight']])\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"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"model = KNeighborsClassifier().fit(X,df['species'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Predict over a grid of data"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"xx = np.linspace(X[:,0].min(),X[:,0].max(), 101)\n",
"yy = np.linspace(X[:,1].min(),X[:,1].max(), 101)\n",
"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": 8,
"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": "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