{ "cells": [ { "cell_type": "markdown", "id": "0bb1b424-2357-4964-906c-b60789e73afa", "metadata": {}, "source": [ "#### Riding Mowers Dataset" ] }, { "cell_type": "code", "execution_count": 5, "id": "2b77d6af-b6de-415f-aab3-0b200cf8ed1e", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from sklearn import preprocessing\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import accuracy_score\n", "from sklearn.neighbors import NearestNeighbors, KNeighborsClassifier\n", "import matplotlib.pylab as plt" ] }, { "cell_type": "code", "execution_count": 7, "id": "15b01946-757c-46aa-b442-15386bc20a53", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(r'/Users/patriciaxufre/Documents/SBE - Disciplinas/2957 | ABA/2024-25/Datasets Examples/RidingMowers.csv')" ] }, { "cell_type": "code", "execution_count": 9, "id": "87b18232-4eaa-4da6-ac81-17e987073c97", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IncomeLot_SizeOwnershipNumber
060.018.4Owner1
185.516.8Owner2
264.821.6Owner3
361.520.8Owner4
487.023.6Owner5
\n", "
" ], "text/plain": [ " Income Lot_Size Ownership Number\n", "0 60.0 18.4 Owner 1\n", "1 85.5 16.8 Owner 2\n", "2 64.8 21.6 Owner 3\n", "3 61.5 20.8 Owner 4\n", "4 87.0 23.6 Owner 5" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['Number'] = df.index + 1\n", "train_df, test_df = train_test_split(df, test_size = 0.4, random_state = 123)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 11, "id": "321cb85e-1f74-4db4-a317-39776fd83f39", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 21, "id": "fb511c60-138a-47c8-8469-88848fc952a8", "metadata": {}, "outputs": [ { "data": { "image/png": "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aRezrrvusbOXyMzOIciv6NOVERERGIaR7zFv3jwAxowZQ0pKCleuXOHw4cNMnjyZSpWuP5O5iIjYltOeZjp+/Dh16tThoYceYtGiRZb1+vXrh7e3d6F//WZmZlru/wG53VT16tXTaaYK4Pi5SwyeswWzYfD5P++gnn/VfOvE7DzGuKWJDGxbl+kDW+P2v0k8RUTEuZSL00w1a9bEw8OD5s2bW7Xfeuut172aqXLlyvj6+lo9pGIIru7F4sfuwM1k4qH/bCHlzEWr5QoyIiLlk9OGmUqVKhEeHs7evXut2vft20dISIiDqhJnV1igUZARESm/HDo309VXigAcPHiQxMREy5Ui48eP58EHH6Rz58507dqVVatW8fXXXxMXF+e4osXp5QWawXO2MHjOFiLvbED0t3sUZEREyimHjpmJi4uja9eu+dpHjBhhGWD5ySefEB0dzdGjR7nlllt4/fXXS3QPD12aXXHljaE5cuYiD7RTkBERcSUl+f52mgHA9qIwU7Glpl1mw75T/L1dXQUZEREXUpLvb4eeZhKxt0C/KgwK1+X5IiLlmdMOABYREREpDoUZERERcWkKMyIiIuLSFGZERETEpWkAsIiIWMnJySEr6/pznImUlqenJ+7u7jbZlsKMiIgAYBgGqampnDt3ztGlSAVRvXp1AgMDMZlKd+sMhRkREQGwBJmAgACqVq1a6i8YkcIYhsHFixc5efIkAEFBQaXansKMiIiQk5NjCTI1atRwdDlSAXh5eQFw8uRJAgICSnXKSQOARUTEMkamatWqDq5EKpK8n7fSjtFSmBEREQudWpKyZKufN4UZERERcWkKMyIiIuLSFGZERMTlpaSk8OijjxIcHEylSpUICQnh6aef5vTp044uTcqAwoyIiNiWOQcOboSkL3P/NefYdXe///477du3Z9++fXz++eccOHCADz/8kO+++44OHTpw5swZu+6/uAzDIDs729FllEsKMyIiYjvJsTCzJcy/F5Y9mvvvzJa57XYSFRVFpUqVWLNmDV26dKF+/fr07t2bdevWcezYMSZOnMj7779Pq1atLK+JiYnBZDLx73//29LWs2dPXnzxRQAmTZpEmzZt+PTTT2nQoAF+fn4MHjyY8+fPW9Y3DIO33nqLRo0a4eXlRWhoKF9++aVleVxcHCaTidWrV9O+fXsqV67Mxo0b7XYcKjKF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NtO7d282b97MwoULSU5OZtq0abi7uwOwfft2Bg0axODBg0lKSmLSpEm88sorzJs3z2of7777Lh07dmTnzp306dOHYcOGMXz4cB5++GF27NhBkyZNGD58OHnz7CYlJdGzZ08GDBjArl27WLJkCZs2bWLUqFFlemxE5MZo1mwRsavIyEjOnTtHTEwMERER5OTksHHjRsvy2267jW7dujFt2jTWrFlD79692bNnD02bNs23raFDh3Lq1CnWrFljaXv++ef55ptv2L17N5DbM3PXXXfx6aefApCamkpQUBCvvPIKb7zxBgBbtmyhQ4cOnDhxgsDAQIYPH46XlxcfffSRZbubNm2iS5cuZGRkUKVKFbscGxGxDfXMiEiZat26tdXzoKAgTp48CUBiYiJ169YtMMgA7Nmzh44dO1q1dezYkf3795OTk1PgPmrXrg1Aq1at8rXl7Xf79u3MmzePatWqWR49e/bEbDZz8ODBG32rIlJGPBxdgIhULJ6enlbPTSYTZrMZAC8vr+u+1jAMTCZTvrbr7SNv/YLa8vZrNpt5/PHHGTNmTL5t1a9f/7o1iYjjKcyIiNNo3bo1R48eZd++fQX2zjRv3pxNmzZZtW3evJmmTZtaxtXciLZt27J7926aNGlyw9sQEcfRaSYRcRpdunShc+fODBw4kLVr13Lw4EG+/fZbVq1aBcCzzz7Ld999x+TJk9m3bx/z589n1qxZPPfcc6Xa74QJE/jxxx+JiooiMTGR/fv3Exsby+jRo23xtkTEzhRmRMSpLFu2jPDwcB566CGaN2/O888/bxkP07ZtW5YuXcrixYtp2bIlr776Km+88QaRkZGl2mfr1q2Jj49n//793HXXXYSFhfHKK68QFBRkg3ckIvamq5lERETEpalnRkRERFyawoyIiIi4NIUZERERcWkKMyIiIuLSFGZERETEpSnMiIiIiEtTmBERERGXpjAjIiIiLk1hRkRERFyawoyIiIi4NIUZERERcWn/HwqNPUeWbBYzAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plotdataset(ax, data, showLabel = True, **kwargs):\n", " subset = data.loc[data['Ownership'] == 'Owner']\n", " ax.scatter(subset.Income, subset.Lot_Size, marker = 'o',\n", " label = 'Owner' if showLabel else None, color = 'C1', **kwargs)\n", " subset = data.loc[data['Ownership'] == 'Nonowner']\n", " ax.scatter(subset.Income, subset.Lot_Size, marker = 'D',\n", " label = 'Nonowner' if showLabel else None, color = 'C0', **kwargs)\n", " for _,row in data.iterrows():\n", " ax.annotate(row.Number, (row.Income + 2, row.Lot_Size))\n", "\n", "fig, ax = plt.subplots()\n", "plotdataset(ax, train_df)\n", "plotdataset(ax,test_df, showLabel = False, facecolors = 'none')\n", "ax.scatter(new.Income,new.Lot_Size, marker = '*', label = 'New Household', color = 'black', s = 150)\n", "\n", "plt.xlabel('Income')\n", "plt.ylabel('Lot Size')\n", "ax.set_xlim(40,115)\n", "handles, labels = ax.get_legend_handles_labels()\n", "ax.legend(handles, labels, loc = 4)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 29, "id": "86ae9acf-d3d1-403c-bbdd-00bedaf7d954", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zIncomezLot_SizeOwnershipNumber
0-0.5350910.012395Owner1
10.956146-0.681719Owner2
2-0.2543871.400623Owner3
3-0.4473711.053566Owner4
41.0438652.268266Owner5
\n", "
" ], "text/plain": [ " zIncome zLot_Size Ownership Number\n", "0 -0.535091 0.012395 Owner 1\n", "1 0.956146 -0.681719 Owner 2\n", "2 -0.254387 1.400623 Owner 3\n", "3 -0.447371 1.053566 Owner 4\n", "4 1.043865 2.268266 Owner 5" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": 33, "id": "1a79df5a-eff4-4955-b412-c89ff2f254d7", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 43, "id": "f0b91d88-330b-4c3d-b419-5103ea6fa797", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
zIncomezLot_SizeOwnershipNumber
13-0.9561461.053566Nonowner14
0-0.5350910.012395Owner1
2-0.2543871.400623Owner3
\n", "
" ], "text/plain": [ " zIncome zLot_Size Ownership Number\n", "13 -0.956146 1.053566 Nonowner 14\n", "0 -0.535091 0.012395 Owner 1\n", "2 -0.254387 1.400623 Owner 3" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": 53, "id": "aa8a3b35-f532-4eb6-a081-1396322cea0b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " k accuracy\n", "0 1 0.8\n", "1 2 0.7\n", "2 3 0.8\n", "3 4 0.7\n", "4 5 0.7\n", "5 6 0.4\n", "6 7 0.5\n", "7 8 0.4\n", "8 9 0.7\n", "9 10 0.5\n", "10 11 0.7\n", "11 12 0.4\n", "12 13 0.4\n", "13 14 0.4\n" ] } ], "source": [ "train_X = trainNorm[['zIncome', 'zLot_Size']]\n", "train_y = trainNorm['Ownership']\n", "test_X = testNorm[['zIncome', 'zLot_Size']]\n", "test_y = testNorm['Ownership']\n", "results = []\n" ] }, { "cell_type": "code", "execution_count": 63, "id": "f5ac0059-029c-458d-a9c1-74003e4e21ac", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Owner']\n", "Distances [[0.35797119 0.52631868 0.54565179]]\n", "Indices [[ 3 8 13]]\n", " zIncome zLot_Size Ownership Number\n", "3 -0.447371 1.053566 Owner 4\n", "8 -0.008772 0.706509 Owner 9\n", "13 -0.956146 1.053566 Nonowner 14\n" ] } ], "source": [ "X = df_norm[['zIncome','zLot_Size']]\n", "y = df_norm['Ownership']\n", "knn = KNeighborsClassifier(n_neighbors=3).fit(X,y)\n", "distances, indices = knn.kneighbors(newNorm)\n", "print(knn.predict(newNorm))\n", "print('Distances',distances)\n", "print('Indices', indices)\n", "print(df_norm.iloc[indices[0],:])" ] }, { "cell_type": "code", "execution_count": null, "id": "954ed46f-b6ad-4018-84e4-a6a4f469002b", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:base] *", "language": "python", "name": "conda-base-py" }, "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.12.7" } }, "nbformat": 4, "nbformat_minor": 5 }