Skip to content

Instantly share code, notes, and snippets.

@shurru
Created February 2, 2021 19:53
Show Gist options
  • Save shurru/d84349f7eaa873e1db641b14f2ec69b2 to your computer and use it in GitHub Desktop.
Save shurru/d84349f7eaa873e1db641b14f2ec69b2 to your computer and use it in GitHub Desktop.
Simple classifier using just 1 feature
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Goal: Create a 2 class classifier using a single feature \n",
"\n",
"- We are provided with two normally distributed classes which have some overlap \n",
"- How do we create a simple classifier which can distinguish (with somewhat decent performance) a given value into either of the two classes"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np \n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Create the two normally distributed classes with some degree of overlap - can play around with the mean and std of both using np.random.normal\n",
"2. Visualize the two using binning\n"
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7ff5e2aaf0d0>]"
]
},
"execution_count": 119,
"metadata": {},
"output_type": "execute_result"
},
{
"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": [
"np.random.seed(1)\n",
"\n",
"A= np.random.normal(100, 20, 100)\n",
"B= np.random.normal (160, 30, 100)\n",
"\n",
"mean_A= np.mean(A)\n",
"std_A= np.std (A)\n",
"\n",
"mean_B= np.mean(B)\n",
"std_B= np.std (B)\n",
"\n",
"count, bins, ignored = plt.hist(A, 10, density=True)\n",
"plt.plot(bins, 1/(std_A * np.sqrt(2 * np.pi)) *\n",
" np.exp( - (bins - mean_A)**2 / (2 * std_A**2) ),\n",
" linewidth=2, color='r')\n",
"\n",
"count, bins, ignored = plt.hist(B, 10, density=True)\n",
"plt.plot(bins, 1/(std_B * np.sqrt(2 * np.pi)) *\n",
" np.exp( - (bins - mean_B)**2 / (2 * std_B**2) ),\n",
" linewidth=2, color='r')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- Our classifier calculates the Z-score of the value provided when compared with both classes' mean and std \n",
"- A z-score is often used as a tool to perform outlier detection \n",
"- In our classifier method defined below, the classifier takes in both classes' distributions as well as the unknown value we're trying to classify \n",
"- It returns it's best estimate of whether the Z-score falls within the purview of class A or class B "
]
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [],
"source": [
"def ourclassifier (A, B, value): \n",
" mean_A= np.mean(A)\n",
" std_A= np.std (A)\n",
" \n",
" mean_B= np.mean(B)\n",
" std_B= np.std (B)\n",
" \n",
" z_A =np.abs(( value- mean_A )/ std_A )\n",
" z_B = np.abs((value- mean_B)/ std_B)\n",
" \n",
"# print (mean_A,std_A, z_A) \n",
"# print (mean_B,std_B, z_B)\n",
" \n",
" if z_A < z_B: \n",
" if z_A <3 :\n",
" return (\"A\")\n",
" else: \n",
" return (\"outlier\")\n",
" \n",
" elif z_B < z_A: \n",
" if z_B <3: \n",
" return (\"B\")\n",
" else: \n",
" return (\"outlier\")\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 134,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"274 outlier\n"
]
}
],
"source": [
"## Generate a Random value and it'll let you know its class and whether it's an outlier. \n",
"value = np.random.randint (40, 300)\n",
"\n",
"\n",
"print (value, ourclassifier (A, B, value)) "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"our"
]
}
],
"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