Skip to content

Instantly share code, notes, and snippets.

@pree62
Last active August 3, 2023 10:19
Show Gist options
  • Save pree62/10819f93bc908a415b0e6737b430010d to your computer and use it in GitHub Desktop.
Save pree62/10819f93bc908a415b0e6737b430010d to your computer and use it in GitHub Desktop.
!excelR/assignments/Gists/KNN.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"id": "a5f40906",
"cell_type": "markdown",
"source": "# KNN (ZOO)"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.387080Z",
"start_time": "2023-07-19T03:36:06.695602Z"
},
"trusted": false
},
"id": "9b78acca",
"cell_type": "code",
"source": "# KNN Classification\nimport pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import KFold\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.neighbors import KNeighborsClassifier\nimport warnings\nwarnings.filterwarnings('ignore')",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.433902Z",
"start_time": "2023-07-19T03:36:08.391390Z"
},
"trusted": false
},
"id": "37654c0c",
"cell_type": "code",
"source": "zoo = pd.read_csv('Zoo.csv')\nzoo",
"execution_count": 2,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>animal name</th>\n <th>hair</th>\n <th>feathers</th>\n <th>eggs</th>\n <th>milk</th>\n <th>airborne</th>\n <th>aquatic</th>\n <th>predator</th>\n <th>toothed</th>\n <th>backbone</th>\n <th>breathes</th>\n <th>venomous</th>\n <th>fins</th>\n <th>legs</th>\n <th>tail</th>\n <th>domestic</th>\n <th>catsize</th>\n <th>type</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>aardvark</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>1</th>\n <td>antelope</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2</th>\n <td>bass</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n </tr>\n <tr>\n <th>3</th>\n <td>bear</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>4</th>\n <td>boar</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>96</th>\n <td>wallaby</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>97</th>\n <td>wasp</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>6</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>6</td>\n </tr>\n <tr>\n <th>98</th>\n <td>wolf</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n </tr>\n <tr>\n <th>99</th>\n <td>worm</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>7</td>\n </tr>\n <tr>\n <th>100</th>\n <td>wren</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n </tr>\n </tbody>\n</table>\n<p>101 rows × 18 columns</p>\n</div>",
"text/plain": " animal name hair feathers eggs milk airborne aquatic predator \\\n0 aardvark 1 0 0 1 0 0 1 \n1 antelope 1 0 0 1 0 0 0 \n2 bass 0 0 1 0 0 1 1 \n3 bear 1 0 0 1 0 0 1 \n4 boar 1 0 0 1 0 0 1 \n.. ... ... ... ... ... ... ... ... \n96 wallaby 1 0 0 1 0 0 0 \n97 wasp 1 0 1 0 1 0 0 \n98 wolf 1 0 0 1 0 0 1 \n99 worm 0 0 1 0 0 0 0 \n100 wren 0 1 1 0 1 0 0 \n\n toothed backbone breathes venomous fins legs tail domestic \\\n0 1 1 1 0 0 4 0 0 \n1 1 1 1 0 0 4 1 0 \n2 1 1 0 0 1 0 1 0 \n3 1 1 1 0 0 4 0 0 \n4 1 1 1 0 0 4 1 0 \n.. ... ... ... ... ... ... ... ... \n96 1 1 1 0 0 2 1 0 \n97 0 0 1 1 0 6 0 0 \n98 1 1 1 0 0 4 1 0 \n99 0 0 1 0 0 0 0 0 \n100 0 1 1 0 0 2 1 0 \n\n catsize type \n0 1 1 \n1 1 1 \n2 0 4 \n3 1 1 \n4 1 1 \n.. ... ... \n96 1 1 \n97 0 6 \n98 1 1 \n99 0 7 \n100 0 2 \n\n[101 rows x 18 columns]"
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.464955Z",
"start_time": "2023-07-19T03:36:08.436902Z"
},
"trusted": false
},
"id": "00fe8644",
"cell_type": "code",
"source": "x = zoo.iloc[:,1:17]\nx",
"execution_count": 3,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>hair</th>\n <th>feathers</th>\n <th>eggs</th>\n <th>milk</th>\n <th>airborne</th>\n <th>aquatic</th>\n <th>predator</th>\n <th>toothed</th>\n <th>backbone</th>\n <th>breathes</th>\n <th>venomous</th>\n <th>fins</th>\n <th>legs</th>\n <th>tail</th>\n <th>domestic</th>\n <th>catsize</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2</th>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>96</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>97</th>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>6</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>98</th>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>4</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>99</th>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n </tr>\n <tr>\n <th>100</th>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>0</td>\n <td>1</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n <td>2</td>\n <td>1</td>\n <td>0</td>\n <td>0</td>\n </tr>\n </tbody>\n</table>\n<p>101 rows × 16 columns</p>\n</div>",
"text/plain": " hair feathers eggs milk airborne aquatic predator toothed \\\n0 1 0 0 1 0 0 1 1 \n1 1 0 0 1 0 0 0 1 \n2 0 0 1 0 0 1 1 1 \n3 1 0 0 1 0 0 1 1 \n4 1 0 0 1 0 0 1 1 \n.. ... ... ... ... ... ... ... ... \n96 1 0 0 1 0 0 0 1 \n97 1 0 1 0 1 0 0 0 \n98 1 0 0 1 0 0 1 1 \n99 0 0 1 0 0 0 0 0 \n100 0 1 1 0 1 0 0 0 \n\n backbone breathes venomous fins legs tail domestic catsize \n0 1 1 0 0 4 0 0 1 \n1 1 1 0 0 4 1 0 1 \n2 1 0 0 1 0 1 0 0 \n3 1 1 0 0 4 0 0 1 \n4 1 1 0 0 4 1 0 1 \n.. ... ... ... ... ... ... ... ... \n96 1 1 0 0 2 1 0 1 \n97 0 1 1 0 6 0 0 0 \n98 1 1 0 0 4 1 0 1 \n99 0 1 0 0 0 0 0 0 \n100 1 1 0 0 2 1 0 0 \n\n[101 rows x 16 columns]"
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.480035Z",
"start_time": "2023-07-19T03:36:08.467788Z"
},
"trusted": false
},
"id": "4483f737",
"cell_type": "code",
"source": "y = zoo.iloc[:,17]\ny",
"execution_count": 4,
"outputs": [
{
"data": {
"text/plain": "0 1\n1 1\n2 4\n3 1\n4 1\n ..\n96 1\n97 6\n98 1\n99 7\n100 2\nName: type, Length: 101, dtype: int64"
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.495758Z",
"start_time": "2023-07-19T03:36:08.482099Z"
},
"trusted": false
},
"id": "76351ec8",
"cell_type": "code",
"source": "num_folds = 10\nkfold = KFold(n_splits=10)",
"execution_count": 5,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.559632Z",
"start_time": "2023-07-19T03:36:08.498960Z"
},
"trusted": false
},
"id": "60cc6355",
"cell_type": "code",
"source": "model = KNeighborsClassifier(n_neighbors=17)\nresults = cross_val_score(model, x, y, cv=kfold)",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.574678Z",
"start_time": "2023-07-19T03:36:08.562645Z"
},
"trusted": false
},
"id": "c30949ef",
"cell_type": "code",
"source": "print(results.mean())",
"execution_count": 7,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "0.78\n"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.590006Z",
"start_time": "2023-07-19T03:36:08.576635Z"
},
"trusted": false
},
"id": "b5652ee9",
"cell_type": "code",
"source": "# Grid Search CV",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.605133Z",
"start_time": "2023-07-19T03:36:08.592971Z"
},
"trusted": false
},
"id": "46380551",
"cell_type": "code",
"source": "import numpy as np\nimport pandas as pd\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.model_selection import GridSearchCV",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.620357Z",
"start_time": "2023-07-19T03:36:08.609376Z"
},
"trusted": false
},
"id": "2c140b17",
"cell_type": "code",
"source": "x = zoo.iloc[:,1:17]\ny = zoo.iloc[:,17]",
"execution_count": 10,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:08.635498Z",
"start_time": "2023-07-19T03:36:08.622373Z"
},
"trusted": false
},
"id": "42c7b3ea",
"cell_type": "code",
"source": "n_neighbors = np.array(range(1,35))\nparam_grid = dict(n_neighbors=n_neighbors)",
"execution_count": 11,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:09.174954Z",
"start_time": "2023-07-19T03:36:08.637500Z"
},
"trusted": false
},
"id": "096f395a",
"cell_type": "code",
"source": "model = KNeighborsClassifier()\ngrid = GridSearchCV(estimator=model, param_grid=param_grid)\ngrid.fit(x,y)",
"execution_count": 12,
"outputs": [
{
"data": {
"text/plain": "GridSearchCV(estimator=KNeighborsClassifier(),\n param_grid={'n_neighbors': array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34])})"
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:09.190581Z",
"start_time": "2023-07-19T03:36:09.176894Z"
},
"trusted": false
},
"id": "9346b09b",
"cell_type": "code",
"source": "print(grid.best_score_)\nprint(grid.best_params_)",
"execution_count": 13,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "0.97\n{'n_neighbors': 1}\n"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:36:10.650342Z",
"start_time": "2023-07-19T03:36:09.193608Z"
},
"trusted": false
},
"id": "e803da0a",
"cell_type": "code",
"source": "import matplotlib.pyplot as plt \n%matplotlib inline\n# choose k between 1 to 41\nk_range = range(1, 41)\nk_scores = []\n# use iteration to caclulator different k in models, then return the average accuracy based on the cross validation\nfor k in k_range:\n knn = KNeighborsClassifier(n_neighbors=k)\n scores = cross_val_score(knn, x, y, cv=5)\n k_scores.append(scores.mean())\n# plot to see clearly\nplt.plot(k_range, k_scores)\nplt.xlabel('Value of K for KNN')\nplt.ylabel('Cross-Validated Accuracy')\nplt.show()",
"execution_count": 14,
"outputs": [
{
"data": {
"image/png": "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iy++iLKyMjz//PNVtnNzc8Mbb7yB2bNno127djX2GRUVhR49esDT07POuYgMEW+BERk5GxsbhIWFYfbs2bh165bGSEH79u0RGxuLxMREXLhwAa+88goyMzNr7G/QoEH44osv8Oeff+LkyZOYNm2axiTjF198EQ4ODggNDUV8fDzS0tJw5MgRzJgxo9rbWa+99hoyMjLw5ptv4uLFi9i1axc++OADzJw5EyYmdfvfmCAIiI6OxqRJk/DUU0/h4MGDtT62Q4cOCA0Nxcsvv4yEhAScOnUKL730Elq1aoXQ0NA65akwa9YsREVFYdy4cVWOklWIjIzErVu38Ouvv9bYX8Wo0ooVKx4rF5GhYQFERAgPD8e9e/cwZMgQtG7dWr1/7ty58PX1xdChQzFgwAA4Oztj9OjRNfb12Wefwc3NDf369cMLL7yAd955R+MR8yZNmiAuLg6tW7fGmDFj4OPjg8mTJ+PBgwfVjgi1atUKe/bswR9//IFu3bph2rRpCA8Px/vvv/9Y5y0IAr744gtMmTIFI0aMeGQx8Xfr16+Hn58fRowYgYCAAIiiiD179tT4RFltvfvuu1i0aBEmTJiAb775pso29vb2eO+991BUVPTI/j766KNqb9sRGStB5H8VREREZGQ4AkRERERGhwUQERERGR0WQERERGR0WAARERGR0WEBREREREaHBRAREREZHRZAREREZHRYABEREZHRYQFERERERocFEBERERkdFkBERERkdP4fXNAxeBlm9MQAAAAASUVORK5CYII=\n",
"text/plain": "<Figure size 640x480 with 1 Axes>"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"id": "ad33b75f",
"cell_type": "markdown",
"source": "# KNN (GLASS)"
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:39:52.356371Z",
"start_time": "2023-07-19T03:39:52.349073Z"
},
"trusted": false
},
"id": "162e4771",
"cell_type": "code",
"source": "import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import KFold\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.neighbors import KNeighborsClassifier",
"execution_count": 15,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:01.677586Z",
"start_time": "2023-07-19T03:40:01.620930Z"
},
"trusted": false
},
"id": "cebf8608",
"cell_type": "code",
"source": "glass = pd.read_csv(\"glass.csv\")\nglass",
"execution_count": 16,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>RI</th>\n <th>Na</th>\n <th>Mg</th>\n <th>Al</th>\n <th>Si</th>\n <th>K</th>\n <th>Ca</th>\n <th>Ba</th>\n <th>Fe</th>\n <th>Type</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1.52101</td>\n <td>13.64</td>\n <td>4.49</td>\n <td>1.10</td>\n <td>71.78</td>\n <td>0.06</td>\n <td>8.75</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.51761</td>\n <td>13.89</td>\n <td>3.60</td>\n <td>1.36</td>\n <td>72.73</td>\n <td>0.48</td>\n <td>7.83</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1.51618</td>\n <td>13.53</td>\n <td>3.55</td>\n <td>1.54</td>\n <td>72.99</td>\n <td>0.39</td>\n <td>7.78</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1.51766</td>\n <td>13.21</td>\n <td>3.69</td>\n <td>1.29</td>\n <td>72.61</td>\n <td>0.57</td>\n <td>8.22</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1.51742</td>\n <td>13.27</td>\n <td>3.62</td>\n <td>1.24</td>\n <td>73.08</td>\n <td>0.55</td>\n <td>8.07</td>\n <td>0.00</td>\n <td>0.0</td>\n <td>1</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>209</th>\n <td>1.51623</td>\n <td>14.14</td>\n <td>0.00</td>\n <td>2.88</td>\n <td>72.61</td>\n <td>0.08</td>\n <td>9.18</td>\n <td>1.06</td>\n <td>0.0</td>\n <td>7</td>\n </tr>\n <tr>\n <th>210</th>\n <td>1.51685</td>\n <td>14.92</td>\n <td>0.00</td>\n <td>1.99</td>\n <td>73.06</td>\n <td>0.00</td>\n <td>8.40</td>\n <td>1.59</td>\n <td>0.0</td>\n <td>7</td>\n </tr>\n <tr>\n <th>211</th>\n <td>1.52065</td>\n <td>14.36</td>\n <td>0.00</td>\n <td>2.02</td>\n <td>73.42</td>\n <td>0.00</td>\n <td>8.44</td>\n <td>1.64</td>\n <td>0.0</td>\n <td>7</td>\n </tr>\n <tr>\n <th>212</th>\n <td>1.51651</td>\n <td>14.38</td>\n <td>0.00</td>\n <td>1.94</td>\n <td>73.61</td>\n <td>0.00</td>\n <td>8.48</td>\n <td>1.57</td>\n <td>0.0</td>\n <td>7</td>\n </tr>\n <tr>\n <th>213</th>\n <td>1.51711</td>\n <td>14.23</td>\n <td>0.00</td>\n <td>2.08</td>\n <td>73.36</td>\n <td>0.00</td>\n <td>8.62</td>\n <td>1.67</td>\n <td>0.0</td>\n <td>7</td>\n </tr>\n </tbody>\n</table>\n<p>214 rows × 10 columns</p>\n</div>",
"text/plain": " RI Na Mg Al Si K Ca Ba Fe Type\n0 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.00 0.0 1\n1 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0.00 0.0 1\n2 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0.00 0.0 1\n3 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.00 0.0 1\n4 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0.00 0.0 1\n.. ... ... ... ... ... ... ... ... ... ...\n209 1.51623 14.14 0.00 2.88 72.61 0.08 9.18 1.06 0.0 7\n210 1.51685 14.92 0.00 1.99 73.06 0.00 8.40 1.59 0.0 7\n211 1.52065 14.36 0.00 2.02 73.42 0.00 8.44 1.64 0.0 7\n212 1.51651 14.38 0.00 1.94 73.61 0.00 8.48 1.57 0.0 7\n213 1.51711 14.23 0.00 2.08 73.36 0.00 8.62 1.67 0.0 7\n\n[214 rows x 10 columns]"
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:12.349303Z",
"start_time": "2023-07-19T03:40:12.304971Z"
},
"trusted": false
},
"id": "76993d40",
"cell_type": "code",
"source": "X = glass.iloc[:,0:9]\nX",
"execution_count": 17,
"outputs": [
{
"data": {
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>RI</th>\n <th>Na</th>\n <th>Mg</th>\n <th>Al</th>\n <th>Si</th>\n <th>K</th>\n <th>Ca</th>\n <th>Ba</th>\n <th>Fe</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1.52101</td>\n <td>13.64</td>\n <td>4.49</td>\n <td>1.10</td>\n <td>71.78</td>\n <td>0.06</td>\n <td>8.75</td>\n <td>0.00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>1</th>\n <td>1.51761</td>\n <td>13.89</td>\n <td>3.60</td>\n <td>1.36</td>\n <td>72.73</td>\n <td>0.48</td>\n <td>7.83</td>\n <td>0.00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>2</th>\n <td>1.51618</td>\n <td>13.53</td>\n <td>3.55</td>\n <td>1.54</td>\n <td>72.99</td>\n <td>0.39</td>\n <td>7.78</td>\n <td>0.00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>3</th>\n <td>1.51766</td>\n <td>13.21</td>\n <td>3.69</td>\n <td>1.29</td>\n <td>72.61</td>\n <td>0.57</td>\n <td>8.22</td>\n <td>0.00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>4</th>\n <td>1.51742</td>\n <td>13.27</td>\n <td>3.62</td>\n <td>1.24</td>\n <td>73.08</td>\n <td>0.55</td>\n <td>8.07</td>\n <td>0.00</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>209</th>\n <td>1.51623</td>\n <td>14.14</td>\n <td>0.00</td>\n <td>2.88</td>\n <td>72.61</td>\n <td>0.08</td>\n <td>9.18</td>\n <td>1.06</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>210</th>\n <td>1.51685</td>\n <td>14.92</td>\n <td>0.00</td>\n <td>1.99</td>\n <td>73.06</td>\n <td>0.00</td>\n <td>8.40</td>\n <td>1.59</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>211</th>\n <td>1.52065</td>\n <td>14.36</td>\n <td>0.00</td>\n <td>2.02</td>\n <td>73.42</td>\n <td>0.00</td>\n <td>8.44</td>\n <td>1.64</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>212</th>\n <td>1.51651</td>\n <td>14.38</td>\n <td>0.00</td>\n <td>1.94</td>\n <td>73.61</td>\n <td>0.00</td>\n <td>8.48</td>\n <td>1.57</td>\n <td>0.0</td>\n </tr>\n <tr>\n <th>213</th>\n <td>1.51711</td>\n <td>14.23</td>\n <td>0.00</td>\n <td>2.08</td>\n <td>73.36</td>\n <td>0.00</td>\n <td>8.62</td>\n <td>1.67</td>\n <td>0.0</td>\n </tr>\n </tbody>\n</table>\n<p>214 rows × 9 columns</p>\n</div>",
"text/plain": " RI Na Mg Al Si K Ca Ba Fe\n0 1.52101 13.64 4.49 1.10 71.78 0.06 8.75 0.00 0.0\n1 1.51761 13.89 3.60 1.36 72.73 0.48 7.83 0.00 0.0\n2 1.51618 13.53 3.55 1.54 72.99 0.39 7.78 0.00 0.0\n3 1.51766 13.21 3.69 1.29 72.61 0.57 8.22 0.00 0.0\n4 1.51742 13.27 3.62 1.24 73.08 0.55 8.07 0.00 0.0\n.. ... ... ... ... ... ... ... ... ...\n209 1.51623 14.14 0.00 2.88 72.61 0.08 9.18 1.06 0.0\n210 1.51685 14.92 0.00 1.99 73.06 0.00 8.40 1.59 0.0\n211 1.52065 14.36 0.00 2.02 73.42 0.00 8.44 1.64 0.0\n212 1.51651 14.38 0.00 1.94 73.61 0.00 8.48 1.57 0.0\n213 1.51711 14.23 0.00 2.08 73.36 0.00 8.62 1.67 0.0\n\n[214 rows x 9 columns]"
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:21.593563Z",
"start_time": "2023-07-19T03:40:21.567941Z"
},
"trusted": false
},
"id": "edfcda99",
"cell_type": "code",
"source": "Y= glass.iloc[:,9]\nY",
"execution_count": 18,
"outputs": [
{
"data": {
"text/plain": "0 1\n1 1\n2 1\n3 1\n4 1\n ..\n209 7\n210 7\n211 7\n212 7\n213 7\nName: Type, Length: 214, dtype: int64"
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:30.010010Z",
"start_time": "2023-07-19T03:40:29.999974Z"
},
"trusted": false
},
"id": "4ddaca69",
"cell_type": "code",
"source": "from sklearn.model_selection import train_test_split\nX_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=42)",
"execution_count": 19,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:37.462282Z",
"start_time": "2023-07-19T03:40:37.441303Z"
},
"trusted": false
},
"id": "98011ee7",
"cell_type": "code",
"source": "num_folds = 10\nkfold = KFold(n_splits=10)",
"execution_count": 20,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:45.712329Z",
"start_time": "2023-07-19T03:40:45.627942Z"
},
"trusted": false
},
"id": "db0021e7",
"cell_type": "code",
"source": "model = KNeighborsClassifier(n_neighbors=15)\nresults = cross_val_score(model, X_train, Y_train, cv=kfold)",
"execution_count": 21,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:40:53.027954Z",
"start_time": "2023-07-19T03:40:53.007861Z"
},
"trusted": false
},
"id": "a63da6d8",
"cell_type": "code",
"source": "print(results.mean())",
"execution_count": 22,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "0.6271241830065358\n"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:41:01.875541Z",
"start_time": "2023-07-19T03:41:01.863652Z"
},
"trusted": false
},
"id": "a18461b6",
"cell_type": "code",
"source": "# Grid Search for Algorithm Tuning\nimport numpy\nfrom pandas import read_csv\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.model_selection import GridSearchCV",
"execution_count": 23,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:41:09.744499Z",
"start_time": "2023-07-19T03:41:09.726098Z"
},
"trusted": false
},
"id": "df8d518c",
"cell_type": "code",
"source": "n_neighbors = numpy.array(range(1,40))\nparam_grid = dict(n_neighbors=n_neighbors)",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:41:17.601349Z",
"start_time": "2023-07-19T03:41:16.650765Z"
},
"trusted": false
},
"id": "39825b15",
"cell_type": "code",
"source": "model = KNeighborsClassifier()\ngrid = GridSearchCV(estimator=model, param_grid=param_grid)\ngrid.fit(X_train, Y_train)",
"execution_count": 25,
"outputs": [
{
"data": {
"text/plain": "GridSearchCV(estimator=KNeighborsClassifier(),\n param_grid={'n_neighbors': array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,\n 35, 36, 37, 38, 39])})"
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:41:49.483263Z",
"start_time": "2023-07-19T03:41:49.465488Z"
},
"trusted": false
},
"id": "e54e583d",
"cell_type": "code",
"source": "print(grid.best_score_)\nprint(grid.best_params_)",
"execution_count": 26,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": "0.655798319327731\n{'n_neighbors': 8}\n"
}
]
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2023-07-19T03:42:08.928833Z",
"start_time": "2023-07-19T03:42:07.771150Z"
},
"trusted": false
},
"id": "05db3634",
"cell_type": "code",
"source": "import matplotlib.pyplot as plt \n%matplotlib inline\n# choose k between 1 to 41\nk_range = range(1, 41)\nk_scores = []\n# use iteration to caclulator different k in models, then return the average accuracy based on the cross validation\nfor k in k_range:\n knn = KNeighborsClassifier(n_neighbors=k)\n scores = cross_val_score(knn, X_train, Y_train, cv=5)\n k_scores.append(scores.mean())\n# plot to see clearly\nplt.plot(k_range, k_scores)\nplt.xlabel('Value of K for KNN')\nplt.ylabel('Cross-Validated Accuracy')\nplt.show()",
"execution_count": 27,
"outputs": [
{
"data": {
"image/png": "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9vb2esf3yiuvoHfv3njssccgiiImT57c5Ln//Oc/0blz5wa9VrcaOnQo7r77brzyyiv1ZooRERMgIqs3adIkzJ8/H//73//w5Zdf4qmnntL90N63bx8mTJiAxx9/HIAmeYmLi0O3bt2avJ+3tzcyMzN138fFxaGsrEz3fb9+/bBx40b4+PjAxcVFrxi7d++OTZs21UswDh48CGdnZwQEBBj8zIIg4NNPP4VcLse4cePw+++/65qb9Y2npqYGR44cQUxMDAAgLy8PV69ebfb3piWvvfYaFAoFHnvsMajVakyZMqXR84KCgjBv3jy88sorCA8Pb/aeS5YsQd++fdG5c2ej4yJqjzgERmTlnJycMHnyZLzyyivIyMioVymIiIhAbGwsDh48iEuXLuHpp59GVlZWs/cbOXIkVqxYgZMnT+L48eOYM2dOvSbjxx57DF5eXpgwYQL27duHpKQk7NmzB/Pnz29yOOuZZ55BamoqnnvuOVy+fBm//PIL3nzzTSxcuBAymXF/jQmCgFWrVmHGjBm49957sXPnTr2v7dSpEyZMmICnnnoK+/fvx5kzZ/D4448jICAAEyZMMCoerUWLFmHJkiWYOnVqo1UyrcWLFyMjIwN//fVXs/fTVpU+/vjjVsVF1N4wASIizJo1Czdu3MDo0aMRHBysO/7666+jX79+uPvuuzF8+HD4+flh4sSJzd7r/fffR1BQEIYOHYpHH30UL730Ur0p5g4ODti7dy+Cg4Px4IMPolu3bpg5cybKy8ubrAgFBARg69atOHr0KO644w7MmTMHs2bNwmuvvdaq5xYEAStWrMCTTz6J++67r8Vkoq4vvvgCkZGRuO+++xAdHQ1RFLF169ZmZ5Tp6+WXX8bSpUsxffp0fP31142e4+Hhgf/7v/9DRUVFi/d7++23mxy2I7JWgsj/K4iIiMjKsAJEREREVocJEBEREVkdJkBERERkdZgAERERkdVhAkRERERWhwkQERERWR0mQERERGR1mAARERGR1WECRERERFaHCRARERFZHSZAREREZHX+H1TZM49uIH+qAAAAAElFTkSuQmCC\n",
"text/plain": "<Figure size 640x480 with 1 Axes>"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {
"trusted": false
},
"id": "17a62cd5",
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3 (ipykernel)",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.9.13",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "",
"data": {
"description": "!excelR/assignments/Gists/KNN.ipynb",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment