Lessons in the Research-to-Production Pipeline: From Data Science to Software Engineering
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

588 lines
110 KiB

{
"cells": [
{
"cell_type": "markdown",
"id": "cf3750f4-b08d-4931-b2a0-81bc02a3356f",
"metadata": {},
"source": [
"# Room-Occupancy Classification"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "humanitarian-burke",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "dedicated-employee",
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv('../datatest.csv')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "quality-peoples",
"metadata": {},
"outputs": [],
"source": [
"signal = df['HumidityRatio'].values[:-2000]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "matched-current",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 2665 entries, 140 to 2804\n",
"Data columns (total 7 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 date 2665 non-null object \n",
" 1 Temperature 2665 non-null float64\n",
" 2 Humidity 2665 non-null float64\n",
" 3 Light 2665 non-null float64\n",
" 4 CO2 2665 non-null float64\n",
" 5 HumidityRatio 2665 non-null float64\n",
" 6 Occupancy 2665 non-null int64 \n",
"dtypes: float64(5), int64(1), object(1)\n",
"memory usage: 166.6+ KB\n"
]
}
],
"source": [
"df.info()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "virgin-taylor",
"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": [
"fig, ax = plt.subplots()\n",
"ax.plot(df['Humidity']/100)\n",
"light = df['Light']/np.max(df['Light'])\n",
"ax.plot(light)\n",
"ax.plot(df['Temperature']/80)\n",
"# ax.plot(df['HumidityRatio']*40)\n",
"ax.plot(df['Occupancy'], ls='--')\n",
"plt.show(fig)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "coordinated-celebrity",
"metadata": {},
"outputs": [],
"source": [
"occupancy = df.Occupancy.values\n",
"humidity = df.Humidity.values\n",
"light = df.Light.values"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "chicken-teacher",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([0.45353836, 0.07583515, 0.19437358, 0.28346148, 0.08540657,\n",
" 0.04564834, 0.03092307, 0.03534065, 0.02282417, 0.01914285]),\n",
" array([22.1 , 22.90225, 23.7045 , 24.50675, 25.309 , 26.11125,\n",
" 26.9135 , 27.71575, 28.518 , 29.32025, 30.1225 ]),\n",
" <BarContainer object of 10 artists>)"
]
},
"execution_count": 11,
"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": [
"plt.hist(humidity[occupancy == 1], density=True)\n",
"plt.hist(humidity[occupancy == 0], alpha=0.2, density=True)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "disturbed-bandwidth",
"metadata": {},
"outputs": [],
"source": [
"from scipy.stats import gaussian_kde as kde"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "known-prairie",
"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 = len(df) // 2\n",
"i = np.arange(len(df))\n",
"np.random.shuffle(i)\n",
"i = i[:n]\n",
"h = humidity[i]\n",
"o = occupancy[i]\n",
"k1 = kde(h[o == 1])\n",
"k0 = kde(h[o == 0])\n",
"plt.scatter(humidity, k1.pdf(humidity))\n",
"plt.scatter(humidity, k0.pdf(humidity))\n",
"plt.scatter(humidity, k1.pdf(humidity), label=\"occupied\")\n",
"plt.scatter(humidity, k0.pdf(humidity), label=\"unoccupied\")\n",
"plt.title(\"Distribution of Light by Class\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "annual-physics",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3gbmpzGY2Y5mzlT49WWwaiEQyfOvLytJ8mjIpk2beOGFF7jpppu45pprALb8QX755Ze5//77Of/881m3bh233347b7/9NrNmzWLOnDmce+65bNiwgbPOOoubb76Zl156iSeffLLgxQxzffjhhwwdOpQXX3yRESNGbFlvvY0bN3LppZfy4IMPMnPmTC666CKuuuoqAC688EImTZrEc8891wp7o7BiEsd+wMKc97VpWdY6hVySDm3dKan++sHN7cvMtje/+w5szLsS7sa1SXkrOeOMMwAYNmwYCxYsAJKLFdbf2Omggw5i//335/XXX+fJJ59k7NixdOiQ/JZ6jz32YN68eeyzzz4cdthhAOy2225bljdkp5124qyzzgLgvPPO489//vNWy+fNm8crr7zCCSecwJAhQ7j22mupra1l1apVrFy5khEjRgBsibG1FfPL8ULX+M2/wFUxdfLdBnw3rfdd4IfARcX2JelikmGxir0QmJm10KrabOVFauyy6J07dwaSe29s2rQJKHwZ9vry/MugFyprap35CvV58MEHb3NUsXLlyrJchr2YI45aoHfO+17A4mbU2UpELI2IuojYDPyEfw5HFdVXRNweEdURUd2zZ88iNsPM2p1uvbKVF6mpy6Lny73c+euvv84777zDgQceyIknnsjkyZO3JJj33nuPgw46iMWLFzNjxgwA3n//fTZt2kTfvn2ZPXs2mzdvZuHChVtuKQvJ/Tnq5zLuu+8+jjnmmK3Wf+CBB7J8+fItiWPjxo3MnTuX7t27061bty1HKPUxtrZiEscMoL+kfpI6kUxcT8+rMx34Ynp21RHAqohY0lin9XMgqdOB+rOupgNnS+osqR/JhPsL+e3NbAdw/ATomDc/0LFrUt4CTV0WPd9Xv/pV6urqGDRoEGeddRZ33XUXnTt35stf/jJ9+vTZcp/y++67j06dOjFlyhQuvfRSBg8ezAknnMC6des4+uij6devH4MGDeIb3/gGQ4duOfmUnXfemblz5zJs2DCeeuopJkzYevs6derEgw8+yJVXXsngwYMZMmQIzz77LAA/+9nP+NrXvsaRRx7Z5FxKqRR1WfX0VNmbgCrgzoi4TtJYgIiYrORY6RaSs6DWABdGRE3a9n7gOKAHsBS4OiLukPRzYAjJMNQC4Cv1yUbSVSTDVpuAyyPiscbi82XVzdqPrJdV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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n = len(df) // 2\n",
"i = np.arange(len(df))\n",
"np.random.shuffle(i)\n",
"i = i[:n]\n",
"l = light[i]\n",
"o = occupancy[i]\n",
"k1 = kde(l[o == 1])\n",
"k0 = kde(l[o == 0])\n",
"plt.scatter(light, k1.pdf(light), label=\"occupied\")\n",
"plt.scatter(light, k0.pdf(light), label=\"unoccupied\")\n",
"plt.title(\"Distribution of Light by Class\")\n",
"plt.legend()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "tough-austria",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"31.4725"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"humidity[np.argmin(np.abs(k0.pdf(humidity) - k1.pdf(humidity)))]"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "ruled-musical",
"metadata": {},
"outputs": [],
"source": [
"# test a threshold-based classifier based on light\n",
"light_feature = (light > 0.25)*1\n",
"occupancy = df.Occupancy.values"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "medium-speed",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import confusion_matrix"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "frank-bennett",
"metadata": {},
"outputs": [],
"source": [
"confuse = confusion_matrix(light_feature, occupancy)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "controlling-johns",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x7f76fa83ed00>"
]
},
"execution_count": 21,
"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": [
"plt.imshow(confuse)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "referenced-fashion",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.60600375, 0. ],\n",
" [0.02926829, 0.36472795]])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confuse/len(occupancy)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "specialized-anchor",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"133"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(df)//20"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "light-helen",
"metadata": {},
"outputs": [],
"source": [
"n = len(df)*6//10\n",
"occupancy = df.Occupancy.values[0:n]\n",
"errors = []\n",
"thresholds = np.linspace(0, 1, 100)\n",
"for thresh in thresholds:\n",
" light_feature = (light[0:n] > thresh)*1\n",
" humidity_feature = (humidity[0:n] > 25.37)*1\n",
"# feature = ((light_feature + humidity_feature) == 2)*1\n",
" light_feature = (light[0:n] > 0.2)*1\n",
" feature = (light_feature + 0.7*humidity_feature > 2*thresh)*1\n",
" confuse = confusion_matrix(feature, occupancy)/n\n",
"# det = np.linalg.det(confuse/np.linalg.norm(confuse))\n",
" errors.append(confuse[0,0] + confuse[1,1] - confuse[0,1] - confuse[1,1])\n",
"# errors = confuse[0,0]\n",
"del confuse, thresh"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "danish-paint",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f76fa7c5220>]"
]
},
"execution_count": 26,
"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": [
"plt.plot(thresholds, errors)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "lasting-still",
"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"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.50093809 0. ]\n",
" [0.13433396 0.36472795]]\n"
]
}
],
"source": [
"occupancy = df.Occupancy.values\n",
"thresh = thresholds[np.argmax(errors)]\n",
"# light_feature = (light.values > thresh)*1\n",
"# feature = light_feature\n",
"light_feature = (light > 0.1182)*1\n",
"humidity_feature = (humidity > 25.37)*1\n",
"feature = (light_feature + 0.5*humidity_feature > 2*thresh)*1\n",
"confuse = confusion_matrix(feature, occupancy)/len(occupancy)\n",
"plt.imshow(confuse)\n",
"plt.title(f\"thresh={thresh:.4f}\")\n",
"plt.show()\n",
"print(confuse)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "binding-incident",
"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"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.60600375 0. ]\n",
" [0.02926829 0.36472795]]\n"
]
}
],
"source": [
"occupancy = df.Occupancy.values\n",
"thresh = 0.1182\n",
"light_feature = (light > thresh)*1\n",
"feature = light_feature\n",
"confuse = confusion_matrix(feature, occupancy)/len(occupancy)\n",
"plt.imshow(confuse)\n",
"plt.title(f\"thresh={thresh:.4f}\")\n",
"plt.show()\n",
"print(confuse)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "standing-footage",
"metadata": {},
"outputs": [],
"source": [
"humidity_feature = (humidity > 25.37)*1\n",
"occupancy = df.Occupancy.values\n",
"confuse = confusion_matrix(humidity_feature, occupancy)/len(occupancy)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "direct-nirvana",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.51594747, 0.07879925],\n",
" [0.11932458, 0.28592871]])"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confuse"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "passive-index",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([2, 2, 2, ..., 2, 2, 2])"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"light_feature + humidity_feature"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a0cdc07a-9600-4bc3-8f31-627ac3329da7",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}