From 80866f577895ebe74899cf1a3f47c089d3490cdd Mon Sep 17 00:00:00 2001 From: Ceci Date: Sun, 23 Nov 2025 13:53:12 -0500 Subject: [PATCH] assignment-1 completed --- 02_activities/assignments/assignment_1.ipynb | 4468 +++++++++++++++++- 1 file changed, 4437 insertions(+), 31 deletions(-) diff --git a/02_activities/assignments/assignment_1.ipynb b/02_activities/assignments/assignment_1.ipynb index 28d4df017..9151feaf9 100644 --- a/02_activities/assignments/assignment_1.ipynb +++ b/02_activities/assignments/assignment_1.ipynb @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "4a3485d6-ba58-4660-a983-5680821c5719", "metadata": {}, "outputs": [], @@ -56,10 +56,288 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a431d282-f9ca-4d5d-8912-71ffc9d8ea19", "metadata": {}, - "outputs": [], + "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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
alcoholmalic_acidashalcalinity_of_ashmagnesiumtotal_phenolsflavanoidsnonflavanoid_phenolsproanthocyaninscolor_intensityhueod280/od315_of_diluted_winesprolineclass
014.231.712.4315.6127.02.803.060.282.295.641.043.921065.00
113.201.782.1411.2100.02.652.760.261.284.381.053.401050.00
213.162.362.6718.6101.02.803.240.302.815.681.033.171185.00
314.371.952.5016.8113.03.853.490.242.187.800.863.451480.00
413.242.592.8721.0118.02.802.690.391.824.321.042.93735.00
.............................................
17313.715.652.4520.595.01.680.610.521.067.700.641.74740.02
17413.403.912.4823.0102.01.800.750.431.417.300.701.56750.02
17513.274.282.2620.0120.01.590.690.431.3510.200.591.56835.02
17613.172.592.3720.0120.01.650.680.531.469.300.601.62840.02
17714.134.102.7424.596.02.050.760.561.359.200.611.60560.02
\n", + "

178 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " alcohol malic_acid ash alcalinity_of_ash magnesium total_phenols \\\n", + "0 14.23 1.71 2.43 15.6 127.0 2.80 \n", + "1 13.20 1.78 2.14 11.2 100.0 2.65 \n", + "2 13.16 2.36 2.67 18.6 101.0 2.80 \n", + "3 14.37 1.95 2.50 16.8 113.0 3.85 \n", + "4 13.24 2.59 2.87 21.0 118.0 2.80 \n", + ".. ... ... ... ... ... ... \n", + "173 13.71 5.65 2.45 20.5 95.0 1.68 \n", + "174 13.40 3.91 2.48 23.0 102.0 1.80 \n", + "175 13.27 4.28 2.26 20.0 120.0 1.59 \n", + "176 13.17 2.59 2.37 20.0 120.0 1.65 \n", + "177 14.13 4.10 2.74 24.5 96.0 2.05 \n", + "\n", + " flavanoids nonflavanoid_phenols proanthocyanins color_intensity hue \\\n", + "0 3.06 0.28 2.29 5.64 1.04 \n", + "1 2.76 0.26 1.28 4.38 1.05 \n", + "2 3.24 0.30 2.81 5.68 1.03 \n", + "3 3.49 0.24 2.18 7.80 0.86 \n", + "4 2.69 0.39 1.82 4.32 1.04 \n", + ".. ... ... ... ... ... \n", + "173 0.61 0.52 1.06 7.70 0.64 \n", + "174 0.75 0.43 1.41 7.30 0.70 \n", + "175 0.69 0.43 1.35 10.20 0.59 \n", + "176 0.68 0.53 1.46 9.30 0.60 \n", + "177 0.76 0.56 1.35 9.20 0.61 \n", + "\n", + " od280/od315_of_diluted_wines proline class \n", + "0 3.92 1065.0 0 \n", + "1 3.40 1050.0 0 \n", + "2 3.17 1185.0 0 \n", + "3 3.45 1480.0 0 \n", + "4 2.93 735.0 0 \n", + ".. ... ... ... \n", + "173 1.74 740.0 2 \n", + "174 1.56 750.0 2 \n", + "175 1.56 835.0 2 \n", + "176 1.62 840.0 2 \n", + "177 1.60 560.0 2 \n", + "\n", + "[178 rows x 14 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from sklearn.datasets import load_wine\n", "\n", @@ -91,12 +369,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "56916892", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "178\n" + ] + } + ], "source": [ - "# Your answer here" + "count_row = wine_df.shape[0] # See https://www.w3schools.com/datascience/ds_python_dataframe.asp\n", + "print(count_row)" ] }, { @@ -109,12 +396,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "df0ef103", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "14\n" + ] + } + ], "source": [ - "# Your answer here" + "count_column = wine_df.shape[1]\n", + "print(count_column)" ] }, { @@ -127,12 +423,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "47989426", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "class\n", + "1 71\n", + "0 59\n", + "2 48\n", + "Name: count, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Your answer here" + "wine_df[\"class\"].value_counts()\n" ] }, { @@ -149,9 +460,17 @@ "execution_count": null, "id": "bd7b0910", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13\n" + ] + } + ], "source": [ - "# Your answer here" + "print((count_column) - 1) # Exclude the one class variable " ] }, { @@ -175,10 +494,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "cc899b59", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " alcohol malic_acid ash alcalinity_of_ash magnesium \\\n", + "0 1.518613 -0.562250 0.232053 -1.169593 1.913905 \n", + "1 0.246290 -0.499413 -0.827996 -2.490847 0.018145 \n", + "2 0.196879 0.021231 1.109334 -0.268738 0.088358 \n", + "3 1.691550 -0.346811 0.487926 -0.809251 0.930918 \n", + "4 0.295700 0.227694 1.840403 0.451946 1.281985 \n", + "\n", + " total_phenols flavanoids nonflavanoid_phenols proanthocyanins \\\n", + "0 0.808997 1.034819 -0.659563 1.224884 \n", + "1 0.568648 0.733629 -0.820719 -0.544721 \n", + "2 0.808997 1.215533 -0.498407 2.135968 \n", + "3 2.491446 1.466525 -0.981875 1.032155 \n", + "4 0.808997 0.663351 0.226796 0.401404 \n", + "\n", + " color_intensity hue od280/od315_of_diluted_wines proline \n", + "0 0.251717 0.362177 1.847920 1.013009 \n", + "1 -0.293321 0.406051 1.113449 0.965242 \n", + "2 0.269020 0.318304 0.788587 1.395148 \n", + "3 1.186068 -0.427544 1.184071 2.334574 \n", + "4 -0.319276 0.362177 0.449601 -0.037874 \n" + ] + } + ], "source": [ "# Select predictors (excluding the last column)\n", "predictors = wine_df.iloc[:, :-1]\n", @@ -204,7 +550,7 @@ "id": "403ef0bb", "metadata": {}, "source": [ - "> Your answer here..." + "> The measurement scales for the predictor variables differ. Therefore, it is necessary to standardize (i.e., scale and centre) the predictor variables to ensure that the model's input values influence KNN machine learning modeling classification outcomes in proportion to the predictors' relative (distance) values. KNN modeling uses distance measures between selected neighbouring datapoints, and as such, the absolute scale of the predictor variables would influence the relative Euclidian straight-line distance among datapoints such that unstandardized predictor variables with relatively larger scale measures would dominate and disproportionately contribute to the modeling predictions. " ] }, { @@ -220,7 +566,7 @@ "id": "fdee5a15", "metadata": {}, "source": [ - "> Your answer here..." + "> The variable wine \"Class\" is a single, categorical (i.e., nominal) KNN modeling outcome variable. Standardizing a classifier variable label does not make sense because there is no \"scale\" associated with a nominal value. Moreover, KNN modeling only calculates the distance amoung selected neighbouring datapoints, not between the classifier variable labels. " ] }, { @@ -236,7 +582,7 @@ "id": "f0676c21", "metadata": {}, "source": [ - "> Your answer here..." + "> In Python, the random number generator function relies on a single, arbitrary seed (integer) input value to generate a sequence of random numbers for a machine learning model algorithm such as KNN modeling. The seed value selected determines how the dataset observations are split between the training and testing sets, and between the training subsets. But for any particular seed value, the split is identical each time the model is run, ensuring reproducible results on the training and test trials. The particular seed values selected does not matter because regardless of how the observations are split in the dataset, the originating dataset is the same and therefore the results are consistent across seed input values." ] }, { @@ -261,7 +607,79 @@ "\n", "# split the data into a training and testing set. hint: use train_test_split !\n", "\n", - "# Your code here ..." + "# Note that I relied on the question asked by Hannah Shuster-Hyman in the Slack channel, and on Dmytro Bonislavskyi's response, to approach this question. \n", + "# Also: https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation for content\n", + "# & https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split for syntax \n", + "X_train, X_test, y_train, y_test = train_test_split(\n", + " predictors_standardized,\n", + " wine_df[\"class\"],\n", + " train_size=0.75,\n", + " stratify = wine_df[\"class\"]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7fd14f34", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 133 entries, 78 to 66\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 alcohol 133 non-null float64\n", + " 1 malic_acid 133 non-null float64\n", + " 2 ash 133 non-null float64\n", + " 3 alcalinity_of_ash 133 non-null float64\n", + " 4 magnesium 133 non-null float64\n", + " 5 total_phenols 133 non-null float64\n", + " 6 flavanoids 133 non-null float64\n", + " 7 nonflavanoid_phenols 133 non-null float64\n", + " 8 proanthocyanins 133 non-null float64\n", + " 9 color_intensity 133 non-null float64\n", + " 10 hue 133 non-null float64\n", + " 11 od280/od315_of_diluted_wines 133 non-null float64\n", + " 12 proline 133 non-null float64\n", + "dtypes: float64(13)\n", + "memory usage: 14.5 KB\n" + ] + } + ], + "source": [ + "# Check number and which observations are in the X training set\n", + "X_train.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c6afdf86", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 133 entries, 78 to 66\n", + "Series name: class\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "133 non-null int64\n", + "dtypes: int64(1)\n", + "memory usage: 2.1 KB\n" + ] + } + ], + "source": [ + "# Check number and which observations are in the y training set\n", + "y_train.info()" ] }, { @@ -284,12 +702,2321 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "id": "08818c64", "metadata": {}, "outputs": [], "source": [ - "# Your code here..." + "# Initialize the KNN classifier\n", + "knn = KNeighborsClassifier()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "d80c1a84", + "metadata": {}, + "outputs": [], + "source": [ + "# Grid search to find the optimal value of k that we want to model: create a parameter_grid library\n", + "parameter_grid = {\n", + " \"n_neighbors\": range(1, 51)\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "627699a5", + "metadata": {}, + "outputs": [], + "source": [ + "# Initialize GridSearchCV object with a 10-fold cross-validation\n", + "wine_tune_grid = GridSearchCV(\n", + " estimator = knn,\n", + " param_grid = parameter_grid,\n", + " cv = 10\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5319512e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
GridSearchCV(cv=10, estimator=KNeighborsClassifier(),\n",
+       "             param_grid={'n_neighbors': range(1, 51)})
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "GridSearchCV(cv=10, estimator=KNeighborsClassifier(),\n", + " param_grid={'n_neighbors': range(1, 51)})" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit the grid search cross-validation on the X (standardized predictors) and y (predicted wine class) training data\n", + "wine_tune_grid.fit(X_train, y_train)\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7f33adf6", + "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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \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", + " \n", + " \n", + "
mean_fit_timestd_fit_timemean_score_timestd_score_timeparam_n_neighborsparamssplit0_test_scoresplit1_test_scoresplit2_test_scoresplit3_test_scoresplit4_test_scoresplit5_test_scoresplit6_test_scoresplit7_test_scoresplit8_test_scoresplit9_test_scoremean_test_scorestd_test_scorerank_test_score
00.0021990.0005100.0032470.0005091{'n_neighbors': 1}1.0000000.9285711.00.6923081.0000001.01.0000001.0000001.0000000.9230770.9543960.09213939
10.0017860.0004050.0030060.0004642{'n_neighbors': 2}1.0000000.9285711.00.6923081.0000001.01.0000000.9230770.9230770.9230770.9390110.08962850
20.0019550.0003840.0027860.0004063{'n_neighbors': 3}1.0000000.9285711.00.8461541.0000001.01.0000001.0000000.9230770.9230770.9620880.05121728
30.0024890.0004180.0027390.0005854{'n_neighbors': 4}0.9285710.9285711.00.8461540.9230771.01.0000001.0000000.9230771.0000000.9549450.05040635
40.0021970.0004300.0029160.0003015{'n_neighbors': 5}1.0000000.9285711.00.9230770.9230771.01.0000001.0000000.9230771.0000000.9697800.0370427
50.0021220.0003730.0028330.0003496{'n_neighbors': 6}0.9285711.0000001.00.9230770.9230771.01.0000001.0000000.9230771.0000000.9697800.0370427
60.0021040.0002840.0031840.0004427{'n_neighbors': 7}1.0000000.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9774730.0344411
70.0020550.0003440.0030830.0003928{'n_neighbors': 8}0.9285711.0000001.00.8461540.9230771.01.0000000.9230770.9230771.0000000.9543960.05071939
80.0019830.0001670.0032210.0003219{'n_neighbors': 9}1.0000000.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9697800.0370429
90.0020340.0003970.0032990.00036910{'n_neighbors': 10}1.0000000.9285711.00.8461540.9230771.00.9230770.9230771.0000001.0000000.9543960.05071939
100.0020300.0005170.0032160.00070011{'n_neighbors': 11}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
110.0018350.0004280.0027650.00039812{'n_neighbors': 12}1.0000000.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9697800.0370429
120.0022620.0004140.0030200.00017513{'n_neighbors': 13}1.0000000.9285711.01.0000000.9230771.01.0000000.9230771.0000001.0000000.9774730.0344411
130.0020570.0000800.0030900.00036714{'n_neighbors': 14}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
140.0020850.0002760.0031040.00037015{'n_neighbors': 15}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
150.0020430.0000830.0028390.00047216{'n_neighbors': 16}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
160.0020710.0004610.0029360.00043017{'n_neighbors': 17}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
170.0022010.0004890.0030140.00058018{'n_neighbors': 18}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
180.0020350.0000860.0030530.00031119{'n_neighbors': 19}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
190.0019780.0001420.0028120.00043520{'n_neighbors': 20}0.8571430.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9631870.04877711
200.0020090.0004000.0030750.00041421{'n_neighbors': 21}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9703300.0363803
210.0022610.0003670.0030330.00039922{'n_neighbors': 22}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9703300.0363803
220.0023000.0003260.0029780.00008523{'n_neighbors': 23}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9626370.03741113
230.0021110.0001690.0031440.00044524{'n_neighbors': 24}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9703300.0363803
240.0021400.0005190.0032240.00038225{'n_neighbors': 25}0.9285710.9285711.00.8461540.9230771.01.0000001.0000001.0000000.9230770.9549450.05040633
250.0022150.0003170.0028970.00018726{'n_neighbors': 26}0.9285710.9285711.00.8461540.9230771.01.0000001.0000001.0000001.0000000.9626370.05082313
260.0020960.0003590.0030450.00029727{'n_neighbors': 27}0.9285710.9285711.00.8461540.9230771.01.0000001.0000001.0000000.9230770.9549450.05040633
270.0019700.0002430.0028250.00054528{'n_neighbors': 28}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9626370.03741113
280.0021230.0003720.0029040.00039229{'n_neighbors': 29}0.9285710.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9626370.03741113
290.0021820.0002720.0031670.00017430{'n_neighbors': 30}0.8571430.9285711.00.9230770.9230771.01.0000000.9230771.0000000.9230770.9478020.04683242
300.0021250.0004730.0027780.00046931{'n_neighbors': 31}0.8571430.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9554950.04843029
310.0020960.0004850.0029060.00027532{'n_neighbors': 32}0.8571430.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9554950.04843029
320.0021650.0002180.0028340.00039333{'n_neighbors': 33}0.8571430.9285711.00.9230770.9230771.01.0000001.0000001.0000000.9230770.9554950.04843029
330.0019300.0001540.0029480.00021834{'n_neighbors': 34}0.8571430.9285711.00.9230770.9230771.01.0000001.0000001.0000001.0000000.9631870.04877711
340.0022570.0004240.0030710.00025735{'n_neighbors': 35}0.8571430.9285711.00.9230770.9230771.00.9230771.0000001.0000001.0000000.9554950.04843029
350.0020710.0001670.0028120.00035636{'n_neighbors': 36}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
360.0019620.0005750.0029760.00053137{'n_neighbors': 37}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
370.0020590.0003440.0029830.00038438{'n_neighbors': 38}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
380.0020380.0000850.0030460.00045139{'n_neighbors': 39}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000001.0000000.9626370.03741117
390.0021560.0005440.0030780.00045740{'n_neighbors': 40}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000000.9230770.9549450.03684235
400.0020720.0003090.0031160.00051541{'n_neighbors': 41}0.9285710.9285711.01.0000000.9230771.01.0000000.9230771.0000001.0000000.9703300.0363803
410.0021470.0004540.0030600.00023342{'n_neighbors': 42}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000000.9230770.9549450.03684235
420.0023060.0003920.0031450.00043043{'n_neighbors': 43}0.9285710.9285711.00.9230770.9230771.01.0000000.9230771.0000000.9230770.9549450.03684235
430.0020340.0002240.0030700.00052944{'n_neighbors': 44}0.9285710.9285711.00.8461540.9230771.01.0000000.9230771.0000000.9230770.9472530.04878744
440.0021020.0004010.0031920.00040845{'n_neighbors': 45}0.9285710.9285711.00.8461540.9230771.01.0000000.9230771.0000000.9230770.9472530.04878744
450.0020420.0002990.0028790.00035846{'n_neighbors': 46}0.9285710.9285711.00.8461540.9230771.01.0000000.9230771.0000000.9230770.9472530.04878744
460.0019450.0003830.0029610.00045347{'n_neighbors': 47}0.8571430.9285711.00.9230770.9230771.01.0000000.9230771.0000000.9230770.9478020.04683242
470.0020230.0003810.0029550.00045148{'n_neighbors': 48}0.9285710.9285711.00.9230770.9230771.01.0000000.9230770.9230770.9230770.9472530.03459444
480.0022240.0004560.0029390.00045949{'n_neighbors': 49}0.9285710.9285711.00.9230770.9230771.01.0000000.9230770.9230770.9230770.9472530.03459444
490.0020740.0003640.0031020.00016350{'n_neighbors': 50}0.9285710.9285711.00.9230770.9230771.01.0000000.9230770.9230770.9230770.9472530.03459444
\n", + "
" + ], + "text/plain": [ + " mean_fit_time std_fit_time mean_score_time std_score_time \\\n", + "0 0.002199 0.000510 0.003247 0.000509 \n", + "1 0.001786 0.000405 0.003006 0.000464 \n", + "2 0.001955 0.000384 0.002786 0.000406 \n", + "3 0.002489 0.000418 0.002739 0.000585 \n", + "4 0.002197 0.000430 0.002916 0.000301 \n", + "5 0.002122 0.000373 0.002833 0.000349 \n", + "6 0.002104 0.000284 0.003184 0.000442 \n", + "7 0.002055 0.000344 0.003083 0.000392 \n", + "8 0.001983 0.000167 0.003221 0.000321 \n", + "9 0.002034 0.000397 0.003299 0.000369 \n", + "10 0.002030 0.000517 0.003216 0.000700 \n", + "11 0.001835 0.000428 0.002765 0.000398 \n", + "12 0.002262 0.000414 0.003020 0.000175 \n", + "13 0.002057 0.000080 0.003090 0.000367 \n", + "14 0.002085 0.000276 0.003104 0.000370 \n", + "15 0.002043 0.000083 0.002839 0.000472 \n", + "16 0.002071 0.000461 0.002936 0.000430 \n", + "17 0.002201 0.000489 0.003014 0.000580 \n", + "18 0.002035 0.000086 0.003053 0.000311 \n", + "19 0.001978 0.000142 0.002812 0.000435 \n", + "20 0.002009 0.000400 0.003075 0.000414 \n", + "21 0.002261 0.000367 0.003033 0.000399 \n", + "22 0.002300 0.000326 0.002978 0.000085 \n", + "23 0.002111 0.000169 0.003144 0.000445 \n", + "24 0.002140 0.000519 0.003224 0.000382 \n", + "25 0.002215 0.000317 0.002897 0.000187 \n", + "26 0.002096 0.000359 0.003045 0.000297 \n", + "27 0.001970 0.000243 0.002825 0.000545 \n", + "28 0.002123 0.000372 0.002904 0.000392 \n", + "29 0.002182 0.000272 0.003167 0.000174 \n", + "30 0.002125 0.000473 0.002778 0.000469 \n", + "31 0.002096 0.000485 0.002906 0.000275 \n", + "32 0.002165 0.000218 0.002834 0.000393 \n", + "33 0.001930 0.000154 0.002948 0.000218 \n", + "34 0.002257 0.000424 0.003071 0.000257 \n", + "35 0.002071 0.000167 0.002812 0.000356 \n", + "36 0.001962 0.000575 0.002976 0.000531 \n", + "37 0.002059 0.000344 0.002983 0.000384 \n", + "38 0.002038 0.000085 0.003046 0.000451 \n", + "39 0.002156 0.000544 0.003078 0.000457 \n", + "40 0.002072 0.000309 0.003116 0.000515 \n", + "41 0.002147 0.000454 0.003060 0.000233 \n", + "42 0.002306 0.000392 0.003145 0.000430 \n", + "43 0.002034 0.000224 0.003070 0.000529 \n", + "44 0.002102 0.000401 0.003192 0.000408 \n", + "45 0.002042 0.000299 0.002879 0.000358 \n", + "46 0.001945 0.000383 0.002961 0.000453 \n", + "47 0.002023 0.000381 0.002955 0.000451 \n", + "48 0.002224 0.000456 0.002939 0.000459 \n", + "49 0.002074 0.000364 0.003102 0.000163 \n", + "\n", + " param_n_neighbors params split0_test_score \\\n", + "0 1 {'n_neighbors': 1} 1.000000 \n", + "1 2 {'n_neighbors': 2} 1.000000 \n", + "2 3 {'n_neighbors': 3} 1.000000 \n", + "3 4 {'n_neighbors': 4} 0.928571 \n", + "4 5 {'n_neighbors': 5} 1.000000 \n", + "5 6 {'n_neighbors': 6} 0.928571 \n", + "6 7 {'n_neighbors': 7} 1.000000 \n", + "7 8 {'n_neighbors': 8} 0.928571 \n", + "8 9 {'n_neighbors': 9} 1.000000 \n", + "9 10 {'n_neighbors': 10} 1.000000 \n", + "10 11 {'n_neighbors': 11} 0.928571 \n", + "11 12 {'n_neighbors': 12} 1.000000 \n", + "12 13 {'n_neighbors': 13} 1.000000 \n", + "13 14 {'n_neighbors': 14} 0.928571 \n", + "14 15 {'n_neighbors': 15} 0.928571 \n", + "15 16 {'n_neighbors': 16} 0.928571 \n", + "16 17 {'n_neighbors': 17} 0.928571 \n", + "17 18 {'n_neighbors': 18} 0.928571 \n", + "18 19 {'n_neighbors': 19} 0.928571 \n", + "19 20 {'n_neighbors': 20} 0.857143 \n", + "20 21 {'n_neighbors': 21} 0.928571 \n", + "21 22 {'n_neighbors': 22} 0.928571 \n", + "22 23 {'n_neighbors': 23} 0.928571 \n", + "23 24 {'n_neighbors': 24} 0.928571 \n", + "24 25 {'n_neighbors': 25} 0.928571 \n", + "25 26 {'n_neighbors': 26} 0.928571 \n", + "26 27 {'n_neighbors': 27} 0.928571 \n", + "27 28 {'n_neighbors': 28} 0.928571 \n", + "28 29 {'n_neighbors': 29} 0.928571 \n", + "29 30 {'n_neighbors': 30} 0.857143 \n", + "30 31 {'n_neighbors': 31} 0.857143 \n", + "31 32 {'n_neighbors': 32} 0.857143 \n", + "32 33 {'n_neighbors': 33} 0.857143 \n", + "33 34 {'n_neighbors': 34} 0.857143 \n", + "34 35 {'n_neighbors': 35} 0.857143 \n", + "35 36 {'n_neighbors': 36} 0.928571 \n", + "36 37 {'n_neighbors': 37} 0.928571 \n", + "37 38 {'n_neighbors': 38} 0.928571 \n", + "38 39 {'n_neighbors': 39} 0.928571 \n", + "39 40 {'n_neighbors': 40} 0.928571 \n", + "40 41 {'n_neighbors': 41} 0.928571 \n", + "41 42 {'n_neighbors': 42} 0.928571 \n", + "42 43 {'n_neighbors': 43} 0.928571 \n", + "43 44 {'n_neighbors': 44} 0.928571 \n", + "44 45 {'n_neighbors': 45} 0.928571 \n", + "45 46 {'n_neighbors': 46} 0.928571 \n", + "46 47 {'n_neighbors': 47} 0.857143 \n", + "47 48 {'n_neighbors': 48} 0.928571 \n", + "48 49 {'n_neighbors': 49} 0.928571 \n", + "49 50 {'n_neighbors': 50} 0.928571 \n", + "\n", + " split1_test_score split2_test_score split3_test_score \\\n", + "0 0.928571 1.0 0.692308 \n", + "1 0.928571 1.0 0.692308 \n", + "2 0.928571 1.0 0.846154 \n", + "3 0.928571 1.0 0.846154 \n", + "4 0.928571 1.0 0.923077 \n", + "5 1.000000 1.0 0.923077 \n", + "6 0.928571 1.0 0.923077 \n", + "7 1.000000 1.0 0.846154 \n", + "8 0.928571 1.0 0.923077 \n", + "9 0.928571 1.0 0.846154 \n", + "10 0.928571 1.0 0.923077 \n", + "11 0.928571 1.0 0.923077 \n", + "12 0.928571 1.0 1.000000 \n", + "13 0.928571 1.0 0.923077 \n", + "14 0.928571 1.0 0.923077 \n", + "15 0.928571 1.0 0.923077 \n", + "16 0.928571 1.0 0.923077 \n", + "17 0.928571 1.0 0.923077 \n", + "18 0.928571 1.0 0.923077 \n", + "19 0.928571 1.0 0.923077 \n", + "20 0.928571 1.0 0.923077 \n", + "21 0.928571 1.0 0.923077 \n", + "22 0.928571 1.0 0.923077 \n", + "23 0.928571 1.0 0.923077 \n", + "24 0.928571 1.0 0.846154 \n", + "25 0.928571 1.0 0.846154 \n", + "26 0.928571 1.0 0.846154 \n", + "27 0.928571 1.0 0.923077 \n", + "28 0.928571 1.0 0.923077 \n", + "29 0.928571 1.0 0.923077 \n", + "30 0.928571 1.0 0.923077 \n", + "31 0.928571 1.0 0.923077 \n", + "32 0.928571 1.0 0.923077 \n", + "33 0.928571 1.0 0.923077 \n", + "34 0.928571 1.0 0.923077 \n", + "35 0.928571 1.0 0.923077 \n", + "36 0.928571 1.0 0.923077 \n", + "37 0.928571 1.0 0.923077 \n", + "38 0.928571 1.0 0.923077 \n", + "39 0.928571 1.0 0.923077 \n", + "40 0.928571 1.0 1.000000 \n", + "41 0.928571 1.0 0.923077 \n", + "42 0.928571 1.0 0.923077 \n", + "43 0.928571 1.0 0.846154 \n", + "44 0.928571 1.0 0.846154 \n", + "45 0.928571 1.0 0.846154 \n", + "46 0.928571 1.0 0.923077 \n", + "47 0.928571 1.0 0.923077 \n", + "48 0.928571 1.0 0.923077 \n", + "49 0.928571 1.0 0.923077 \n", + "\n", + " split4_test_score split5_test_score split6_test_score \\\n", + "0 1.000000 1.0 1.000000 \n", + "1 1.000000 1.0 1.000000 \n", + "2 1.000000 1.0 1.000000 \n", + "3 0.923077 1.0 1.000000 \n", + "4 0.923077 1.0 1.000000 \n", + "5 0.923077 1.0 1.000000 \n", + "6 0.923077 1.0 1.000000 \n", + "7 0.923077 1.0 1.000000 \n", + "8 0.923077 1.0 1.000000 \n", + "9 0.923077 1.0 0.923077 \n", + "10 0.923077 1.0 1.000000 \n", + "11 0.923077 1.0 1.000000 \n", + "12 0.923077 1.0 1.000000 \n", + "13 0.923077 1.0 1.000000 \n", + "14 0.923077 1.0 1.000000 \n", + "15 0.923077 1.0 1.000000 \n", + "16 0.923077 1.0 1.000000 \n", + "17 0.923077 1.0 1.000000 \n", + "18 0.923077 1.0 1.000000 \n", + "19 0.923077 1.0 1.000000 \n", + "20 0.923077 1.0 1.000000 \n", + "21 0.923077 1.0 1.000000 \n", + "22 0.923077 1.0 1.000000 \n", + "23 0.923077 1.0 1.000000 \n", + "24 0.923077 1.0 1.000000 \n", + "25 0.923077 1.0 1.000000 \n", + "26 0.923077 1.0 1.000000 \n", + "27 0.923077 1.0 1.000000 \n", + "28 0.923077 1.0 1.000000 \n", + "29 0.923077 1.0 1.000000 \n", + "30 0.923077 1.0 1.000000 \n", + "31 0.923077 1.0 1.000000 \n", + "32 0.923077 1.0 1.000000 \n", + "33 0.923077 1.0 1.000000 \n", + "34 0.923077 1.0 0.923077 \n", + "35 0.923077 1.0 1.000000 \n", + "36 0.923077 1.0 1.000000 \n", + "37 0.923077 1.0 1.000000 \n", + "38 0.923077 1.0 1.000000 \n", + "39 0.923077 1.0 1.000000 \n", + "40 0.923077 1.0 1.000000 \n", + "41 0.923077 1.0 1.000000 \n", + "42 0.923077 1.0 1.000000 \n", + "43 0.923077 1.0 1.000000 \n", + "44 0.923077 1.0 1.000000 \n", + "45 0.923077 1.0 1.000000 \n", + "46 0.923077 1.0 1.000000 \n", + "47 0.923077 1.0 1.000000 \n", + "48 0.923077 1.0 1.000000 \n", + "49 0.923077 1.0 1.000000 \n", + "\n", + " split7_test_score split8_test_score split9_test_score mean_test_score \\\n", + "0 1.000000 1.000000 0.923077 0.954396 \n", + "1 0.923077 0.923077 0.923077 0.939011 \n", + "2 1.000000 0.923077 0.923077 0.962088 \n", + "3 1.000000 0.923077 1.000000 0.954945 \n", + "4 1.000000 0.923077 1.000000 0.969780 \n", + "5 1.000000 0.923077 1.000000 0.969780 \n", + "6 1.000000 1.000000 1.000000 0.977473 \n", + "7 0.923077 0.923077 1.000000 0.954396 \n", + "8 0.923077 1.000000 1.000000 0.969780 \n", + "9 0.923077 1.000000 1.000000 0.954396 \n", + "10 0.923077 1.000000 1.000000 0.962637 \n", + "11 0.923077 1.000000 1.000000 0.969780 \n", + "12 0.923077 1.000000 1.000000 0.977473 \n", + "13 0.923077 1.000000 1.000000 0.962637 \n", + "14 0.923077 1.000000 1.000000 0.962637 \n", + "15 0.923077 1.000000 1.000000 0.962637 \n", + "16 0.923077 1.000000 1.000000 0.962637 \n", + "17 0.923077 1.000000 1.000000 0.962637 \n", + "18 0.923077 1.000000 1.000000 0.962637 \n", + "19 1.000000 1.000000 1.000000 0.963187 \n", + "20 1.000000 1.000000 1.000000 0.970330 \n", + "21 1.000000 1.000000 1.000000 0.970330 \n", + "22 1.000000 1.000000 0.923077 0.962637 \n", + "23 1.000000 1.000000 1.000000 0.970330 \n", + "24 1.000000 1.000000 0.923077 0.954945 \n", + "25 1.000000 1.000000 1.000000 0.962637 \n", + "26 1.000000 1.000000 0.923077 0.954945 \n", + "27 1.000000 1.000000 0.923077 0.962637 \n", + "28 1.000000 1.000000 0.923077 0.962637 \n", + "29 0.923077 1.000000 0.923077 0.947802 \n", + "30 1.000000 1.000000 0.923077 0.955495 \n", + "31 1.000000 1.000000 0.923077 0.955495 \n", + "32 1.000000 1.000000 0.923077 0.955495 \n", + "33 1.000000 1.000000 1.000000 0.963187 \n", + "34 1.000000 1.000000 1.000000 0.955495 \n", + "35 0.923077 1.000000 1.000000 0.962637 \n", + "36 0.923077 1.000000 1.000000 0.962637 \n", + "37 0.923077 1.000000 1.000000 0.962637 \n", + "38 0.923077 1.000000 1.000000 0.962637 \n", + "39 0.923077 1.000000 0.923077 0.954945 \n", + "40 0.923077 1.000000 1.000000 0.970330 \n", + "41 0.923077 1.000000 0.923077 0.954945 \n", + "42 0.923077 1.000000 0.923077 0.954945 \n", + "43 0.923077 1.000000 0.923077 0.947253 \n", + "44 0.923077 1.000000 0.923077 0.947253 \n", + "45 0.923077 1.000000 0.923077 0.947253 \n", + "46 0.923077 1.000000 0.923077 0.947802 \n", + "47 0.923077 0.923077 0.923077 0.947253 \n", + "48 0.923077 0.923077 0.923077 0.947253 \n", + "49 0.923077 0.923077 0.923077 0.947253 \n", + "\n", + " std_test_score rank_test_score \n", + "0 0.092139 39 \n", + "1 0.089628 50 \n", + "2 0.051217 28 \n", + "3 0.050406 35 \n", + "4 0.037042 7 \n", + "5 0.037042 7 \n", + "6 0.034441 1 \n", + "7 0.050719 39 \n", + "8 0.037042 9 \n", + "9 0.050719 39 \n", + "10 0.037411 17 \n", + "11 0.037042 9 \n", + "12 0.034441 1 \n", + "13 0.037411 17 \n", + "14 0.037411 17 \n", + "15 0.037411 17 \n", + "16 0.037411 17 \n", + "17 0.037411 17 \n", + "18 0.037411 17 \n", + "19 0.048777 11 \n", + "20 0.036380 3 \n", + "21 0.036380 3 \n", + "22 0.037411 13 \n", + "23 0.036380 3 \n", + "24 0.050406 33 \n", + "25 0.050823 13 \n", + "26 0.050406 33 \n", + "27 0.037411 13 \n", + "28 0.037411 13 \n", + "29 0.046832 42 \n", + "30 0.048430 29 \n", + "31 0.048430 29 \n", + "32 0.048430 29 \n", + "33 0.048777 11 \n", + "34 0.048430 29 \n", + "35 0.037411 17 \n", + "36 0.037411 17 \n", + "37 0.037411 17 \n", + "38 0.037411 17 \n", + "39 0.036842 35 \n", + "40 0.036380 3 \n", + "41 0.036842 35 \n", + "42 0.036842 35 \n", + "43 0.048787 44 \n", + "44 0.048787 44 \n", + "45 0.048787 44 \n", + "46 0.046832 42 \n", + "47 0.034594 44 \n", + "48 0.034594 44 \n", + "49 0.034594 44 " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Obtain results from grid search\n", + "accuracy_grid = pd.DataFrame(wine_tune_grid.cv_results_)\n", + "accuracy_grid" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "847fd317", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAArGtJREFUeJzt3QmYFOXV9vHDvoOsyiYIgoAoKMYlxn3XREXia9S8uEWjH+4xJi4RYxJRExc0Ro2Jxhi3qEhM3ohB4x5ERY0oi2wCAsqi7LLPd91VPjPdMz0zvVR1V3X9f9fVMN3TU11dXd1dp855ztOgoqKiwgAAAAAAQOAaBr9IAAAAAABA0A0AAAAAQIjIdAMAAAAAEBKCbgAAAAAAQkLQDQAAAABASAi6AQAAAAAICUE3AAAAAAAhIegGAAAAACAkBN0AAAAAAISEoBsAgBi7/vrrrUGDBgX97fLly+u9r+534YUX5vU45erXv/619enTxxo1amRDhw4t9eoAACKKoBsAkOZPf/qTF2C98847abevWrXK9t57b2vevLlNmDChzr/VfRYtWlTj9wcffLANHjw49lt8/fr1XsD68ssvZ3V/3U/bRZcpU6bU+P2ZZ55prVu3DmFNk8Xtf+6i/bB///7eyYLPP/880Mf617/+ZVdeeaXtv//+9uCDD9qNN94Y6PIBAOWDoBsAUK/Vq1fbkUceaR988IE988wzdvTRR9d5/40bN9pNN91UtltWQffPf/7zrIPuVArWg3TttdfaV199Fegy4+6GG26whx9+2H7729/aN7/5Tbvnnntsv/328163oPz73/+2hg0b2h//+EcbOXKkHXvssYEtGwBQXgi6AQB1WrNmjR111FH2/vvv29NPP23HHHNMvVtMpbb333+/LV68OBJbd926dRYF2i7/+Mc/7N133w1smY0bN/YyuuUgqNdJ++j3v/99+8EPfuBlvy+99FKbN2+e/e1vfyt42S5wX7p0qbVo0cKaNm0awBqbVVRUcPIEAMoUQTcAoFZr1671stoKEhVwH3fccVltrauvvtq2bt2adbb7L3/5iw0bNswLYjp06GDf+973bOHChWn3ee211+zkk0+2HXfc0Zo1a2Y9e/a0yy67rEag4kq158yZ42Uf27RpY6effrr3u23bttkdd9xhu+66qxeobr/99vbDH/7Qvvzyy7RlqLReJxo6derkrdNOO+1kZ599tve7Tz75xDp37uz9rGy3K2XOJoN90UUXWfv27bPOdj/33HN2wAEHWKtWrbznoe3/0Ucf1TumW9vk4osv9tZff3f88cd75f61refKlSu97bbddttZu3bt7Kyzzqo1K/zII4/YLrvs4m0/vWavvvpqjfu89957XuDbtm1b77U47LDD7M0338xYCv7KK6/Y//t//8+6dOliPXr0qDzRo0C5d+/e3mut3x1xxBF5n6w49NBDvf8VeOeyz7nhEBoScOCBB1rLli29fVvrrZJynSRwr7+ej2zZssV+8YtfWN++fb1113PQ36j6I5Vu//a3v23PP/+87bXXXt563HfffZVDEf761796+1f37t291/C73/2uN8RDy9G20TbRttVrVX3ZWjc9Z91H6zBo0CAv21+dW4fXX3+9cuiIxqj/+c9/zriP6P3mXhO9Vsrwp/YD0HqMHj3adt5558r3qErwq68fACRN41KvAAAgmhRQKHB6++237amnnvIOzrOlIFUH5Mp2//SnP7Vu3brVet9f/epX9rOf/cz+53/+x8tMLlu2zO666y4vyFHwpkBQnnzySS8QvOCCC6xjx4721ltveff79NNPvd+lUuCjoPlb3/qW/eY3v/GCJVGAreBIgYqCUgVhKkHW47zxxhvWpEkTL4OpUnoF1lp3Pb4C7XHjxnnL0O0KYLQew4cPt5NOOsm7fffdd693uygIVeBy3XXXeQHknnvuWet9VR59xhlneM/j5ptv9p67HlfPSeur4Kc2CqAVtP3v//6v7bvvvl5gW9cJE217vWZjxozx1usPf/iDF7DpcVNpOU888YS37RRU/e53v/NOyui1cGP1dVJAJwr0XBVwaZsqmFQAq7/fZ5990papgFvbVNvEZbrPP/98b5/TWGwFjCtWrPACw+nTp9e5zWqjEzCi/SaXfU702HofKChX9lwnahQk//73v/eet7aVqIxdtLyHHnrIC5J/9KMf2eTJk73tqnXX0IxUM2fOtFNPPdXbL88991zvZIajv1Egrn1w9uzZ3vppW6qkXSeJdPJEJzK0P+u10/ZztJ/oxJJOtqgS4u9//7u3nXXSadSoUWnroGVrXc855xxvf3vggQe8/UcnJLQMd/JNr6meg04+6TVQsP3ss8967z+d3NGy9Xh6nc477zwbOHCgTZ061W6//Xb7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llVl/4zrBgAAQBgIuoGQTJ3qlywrm9qli38bme5oBd3CXN0AAAAIE0E3UKRSZiHTXTrKZC9datawodmuu1bdTjM1AAAAhImgGyhiVpWgu/QnQfr188vKHTLdAAAACBNBN1DEoJvy8mi9HkLQDQAAgDARdAMh0FhuysujO11Yqq5d/f9ppAYAAIAwEHQDIfjkE7M1a8yaNjUbMKDqdjLdpeNOgpDpBgAAQDERdAMhZlUHDTJr0qTqdsZ0l8bGjWbTp9cddC9ZUvz1AgAAQPmLRNB99913W+/eva158+a2zz772FtvvVXrfTdv3mw33HCD9e3b17v/kCFDbMKECWn30bIaNGhQ4zJq1KjK+xx88ME1fn/++eeH+jyRHJlKy4VMd2ko4N6yxT/p0aNH+u8Y0w0AAICyDrqfeOIJu/zyy2306NH27rvvekH0UUcdZUs1t08G1157rd13331211132bRp07xAefjw4fbee+9V3uftt9+2JUuWVF4mTpzo3X7yySenLevcc89Nu98tt9wS8rNF0pt2kekufWl5gwaZg+5ly/zAHAAAACiroPu2227zgt+zzjrLBg0aZPfee6+1bNnSHnjggYz3f/jhh+3qq6+2Y4891vr06WMXXHCB9/Ott95aeZ/OnTvbDjvsUHn5xz/+4WXGDzrooLRl6XFS79e2bdvQny+SHXST6Y7W6yGdO/tzd6v5nQJvAAAAoGyC7k2bNtmUKVPs8MMPr1qhhg2965MmTcr4Nxs3bvTKylO1aNHCXn/99Vof4y9/+YudffbZXgl5qkceecQ6depkgwcPtquuusrWr18fyPNCsq1dazZnTubycjLd0epcLo0amXXp4v9MB3MAAAAErbGV0PLly23r1q22/fbbp92u6zNmzMj4Nyo9V3b8wAMP9LLXL774oo0bN85bTibjx4+3lStX2plnnpl2+2mnnWa9evWybt262QcffGA/+clPbObMmd6yagv2dXFWr16dxzNGEkydWjUVlbKomYLuVav8zGr1UmcET9u5rky3KzFXwK1manvswasAAACAMgm68zF27FivHH3AgAFe5lqBt0rTaytH/+Mf/2jHHHOMF1ynOu+88yp/3m233axr16522GGH2Zw5c7xlVjdmzBj7+c9/HsIzQrmpK8Bz5eXbtvkZ8TZtirtuSaRgevlyv4R8110z34dmagAA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7P6GTDcAAAAAZI+gO8GUrW7WLLdsN5luAAAAAMgeQXeCqft4riXmZLoBAAAAIHsE3QmXb9DNmG4AAAAAqB9Bd8Ll2sGcKcMAAAAAIHsE3QlHphsAAAAAwkPQnXC5Bt1kugEAAAAgewTdCZdreTmN1AAAAAAgZkH33Xffbb1797bmzZvbPvvsY2+99Vat9928ebPdcMMN1rdvX+/+Q4YMsQkTJtR6/5tuuskaNGhgl156adrtBx98sHd76uX888+3pMk3000jNQAAAACIQdD9xBNP2OWXX26jR4+2d9991wuijzrqKFu6dGnG+1977bV233332V133WXTpk3zAuXhw4fbe++9V+O+b7/9tnff3XffPeOyzj33XFuyZEnl5ZZbbrGkYcowAAAAACjjoPu2227zgt+zzjrLBg0aZPfee6+1bNnSHnjggYz3f/jhh+3qq6+2Y4891vr06WMXXHCB9/Ott96adr+1a9fa6aefbvfff7+1b98+47L0ODvssEPlpW3btpY0uZSXb9litm6d/zOZbgAAAACIeNC9adMmmzJlih1++OFVK9SwoXd90qRJGf9m48aNXll5qhYtWtjrr7+edtuoUaPsuOOOS1t2dY888oh16tTJBg8ebFdddZWtX7++1vvqcVevXp12KadM95o1Zl99lV1puRB0AwAAAED9GlsJLV++3LZu3Wrbu8jva7o+Y8aMjH+j0nNlxw888EBvXPeLL75o48aN85bjPP74416pusrLa3PaaadZr169rFu3bvbBBx/YT37yE5s5c6a3rEzGjBljP//5z63cKLnfrJlOKvjjunv3rr+JWsuWZk2aFG0VAQAAACC2Shp052Ps2LFeOfqAAQO85mcKvFWa7srRFy5caJdccolNnDixRkY81XnnnVf582677WZdu3a1ww47zObMmeMtszplwjX23FGmu2fPnhZ3DRr4Jebz5/sl5nUF3UwXBgAAAAAxKi9XaXejRo3s82qts3VdY6wz6dy5s40fP97WrVtn8+fP9zLirVu39sZ3i8rV1YRtzz33tMaNG3uXV155xe68807v59SMeCp1TZfZs2dn/H2zZs28Md+pl6Q1U3OZbkrLAQAAACAGQXfTpk1t2LBhXom4s23bNu/6fvvtV+ffKovdvXt327Jliz399NN2wgkneLcrWz116lR7//33Ky977bWX11RNPyvIz0S/E2W8kybboJtMNwAAAADErLxcJdtnnHGGFxjvvffedscdd3hZbJWMy8iRI73gWmOqZfLkybZo0SIbOnSo9//111/vBepXXnml9/s2bdp4jdFStWrVyjp27Fh5u0rIH330Ua/ruW7XmO7LLrvMGyde2/Ri5SzbDuYu073dduGvEwAAAACUg5IH3aeccootW7bMrrvuOvvss8+8YHrChAmVzdUWLFjgdTR3NmzY4M3VPXfuXK+sXIGzphHbLodIUBn2F154oTLA19jsESNGeMtNolwz3ZSXAwAAAEBMgm658MILvUsmL7/8ctr1gw46yKZNm5bT8qsvQ0G2xnkjvzHdZLoBAAAAIAZjuhGv8nIy3QAAAACQG4JukOkGAAAAgJAQdIMpwwAAAAAgJATdqCwvX7PGbP362jcIU4YBAAAAQG4IumFt2mje8/qbqblGanQvBwAAAIDsEHTDGjTIrsScTDcAAAAA5IagG1l3MGfKMAAAAADIDUE3PPVluisqmDIMAAAAAHJF0I2sgu5168y2bvV/3m47NhoAAAAAZIOgG1mVl7vS8kaNzFq2ZKMBAAAAQDYIupFVpju1iZoarwEAAAAA6kfQjayCbqYLAwAAAIDcEXQjq/JypgsDAAAAgNwRdMNDphsAAAAAgkfQjbSge+1av1N5dWS6AQAAACB3BN3wtGlj1qJF7eO63ZhupgsDAAAAgOwRdMOjjuR1lZi7THe7dmwwAAAAAMgWQTcq1RV0k+kGAAAAgNwRdCOrDuZMGQYAAAAAuSPoRqVsyssZ0w0AAAAA2SPoRk7l5YzpBgAAAIDsEXQjq/JyMt0AAAAAkDuCblQi0w0AAAAAwSLoRlZBN5luAAAAAMgdQTfqLS/fvNls/Xr/ZxqpAQAAAED2CLpRI9O9bp1/qZ7llrZt2WAAAAAAkC2CblRq3dqsRYuaJeauc7l+37gxGwwAAAAAskXQjUoNGmQuMWe6MAAAAADID0E36m2mRhM1AAAAAMgPQTfqDbrJdAMAAABAfgi6kSZTeTmZbgAAAADID0E30pDpBgAAAIDgEHQjDWO6AQAAACA4BN1IQ/dyAAAAAAgOQTfSkOkGAAAAgOAQdCPrMd3bbcfGAgAAAIBcEHQjY3n5unVma9f6PzNlGAAAAADkh6AbaVq3NmvZMj3bzZRhAAAAAJAfgm7UW2JOphsAAAAA8kPQjXo7mJPpBgAAAID8EHSjzkx3RUVV0N2uHRsLAAAAAHJB0I06g241U9u2zb9O93IAAAAAyA1BN+osL3fjuRs3NmvRgo0FAAAAALkg6Eadme7U8dwNGrCxAAAAACAXBN2oM+h2mW5KywEAAAAgdwTdyKq8nCZqAAAAAJA7gm5kXV4OAAAAAMgNQTdqDbrXrzf79FP/ZzLdAAAAAJA7gm7U0Lq1WatW/s8zZ/r/k+kGAAAAgJgG3Xfffbf17t3bmjdvbvvss4+99dZbtd538+bNdsMNN1jfvn29+w8ZMsQmTJhQ6/1vuukma9CggV166aVpt2/YsMFGjRplHTt2tNatW9uIESPsc9VTIy3b/fHH/v9kugEAAAAghkH3E088YZdffrmNHj3a3n33XS+IPuqoo2zp0qUZ73/ttdfafffdZ3fddZdNmzbNzj//fBs+fLi99957Ne779ttve/fdfffda/zusssus7///e/25JNP2iuvvGKLFy+2k046KZTnGOegm0w3AAAAAMQ46L7tttvs3HPPtbPOOssGDRpk9957r7Vs2dIeeOCBjPd/+OGH7eqrr7Zjjz3W+vTpYxdccIH386233pp2v7Vr19rpp59u999/v7Vv3z7td6tWrbI//vGP3mMfeuihNmzYMHvwwQftP//5j7355puhPt+4dTBfvtz/n0w3AAAAAMQs6N60aZNNmTLFDj/88KoVatjQuz5p0qSMf7Nx40avrDxVixYt7PXXX0+7TaXjxx13XNqyHT2mytRTfzdgwADbcccd63zc1atXp12SkOl2GNMNAAAAADELupcvX25bt2617atFeLr+mSaJzkCl58pQz5o1y7Zt22YTJ060cePG2ZIlSyrv8/jjj3ul6mPGjMm4DC27adOmtl21SLKux9Wy2rVrV3np2bOnlTOCbgAAAAAog/LyXI0dO9b69evnZaYVOF944YVeaboy5LJw4UK75JJL7JFHHqmRES/EVVdd5ZWlu4seJwnl5Q7l5QAAAAAQs6C7U6dO1qhRoxpdw3V9h+pR39c6d+5s48ePt3Xr1tn8+fNtxowZXvdxje92peNqwrbnnnta48aNvYsapd15553ez8qsa9kqbV+5cmXWj9usWTNr27Zt2qWckekGAAAAgJgH3cpUq4nZiy++WHmbSsZ1fb/99qvzb5XF7t69u23ZssWefvppO+GEE7zbDzvsMJs6daq9//77lZe99trLa6qmnxXk6zGbNGmS9rgzZ860BQsW1Pu4SVE96CbTDQAAAAC5a2wlpunCzjjjDC8w3nvvve2OO+7wstgqGZeRI0d6wbUbnz158mRbtGiRDR061Pv/+uuv9wL1K6+80vt9mzZtbPDgwWmP0apVK28+bne7xmSfc8453mN36NDBy1pfdNFFXsC97777Fn0bRFH1hD+N1AAAAAAghkH3KaecYsuWLbPrrrvOa2KmYHrChAmVzdWUfXbjtWXDhg3eXN1z5871yso1XZimEaveFK0+t99+u7fcESNGeJ3J1aDtd7/7XeDPr1wy3WVeTQ8AAAAAoWhQUVFREc6iy5umDFPGXE3VynV8d+vWZuvWqXpAz7fUawMAAAAA8YsJY9e9HMXPdjdpYvbyy2Zbt7L1AQAAACAXBN3IaNw4s08/9X/+4guzQw4x693bvx0AAAAAkB2CbtSgwPq73zXbtCn99kWL/NsJvAEAAAAgOwTdSKMS8ksuMcs00t/ddumllJoDAAAAQDYIupHmtdeqysozUeC9cKF/PwAAAABA3Qi6kWbJkmDvBwAAAABJRtCNNF27Bns/AAAAAEgygm6kOeAAsx49zBo0yLxhdHvPnv79AAAAAAB1I+hGmkaNzMaO9X+uHni763fc4d8PAAAAAFA3gm7UcNJJZk89Zda9e/rtyoDrdv0eAAAAAFC/xlncBwmkwPqEE/wu5WqapjHcKiknww0AAAAA2SPoRq0UYB98MBsIAAAAAPJFeTkAAAAAACEh6AYAAAAAICQE3QAAAAAAhISgGwAAAACAkBB0AwAAAAAQEoJuAAAAAABCQtANAAAAAEBICLoBAAAAAAgJQTcAAAAAAATdAAAAAADEC5luAAAAAABCQtANAAAAAEBICLoBAAAAAAgJQTcAAAAAACEh6AYAAAAAICSNw1pwuauoqPD+X716dalXBQAAAABQZC4WdLFhbQi687RmzRrv/549e+a7CAAAAABAGcSG7dq1q/X3DSrqC8uR0bZt22zx4sXWpk0ba9CgQShnTRTQL1y40Nq2bcurgMhg30SUsX8iqtg3EVXsm4iq1TGIhxRKK+Du1q2bNWxY+8htMt150kbt0aOHhU07WFR3MiQb+yaijP0TUcW+iahi30RUtY14PFRXhtuhkRoAAAAAACEh6AYAAAAAICQE3RHVrFkzGz16tPc/ECXsm4gy9k9EFfsmoop9E1HVrIziIRqpAQAAAAAQEjLdAAAAAACEhKAbAAAAAICQEHQDAAAAABASgu6Iuvvuu613797WvHlz22effeytt94q9SohYV599VX7zne+Y926dbMGDRrY+PHj035fUVFh1113nXXt2tVatGhhhx9+uM2aNatk64vkGDNmjH3jG9+wNm3aWJcuXezEE0+0mTNnpt1nw4YNNmrUKOvYsaO1bt3aRowYYZ9//nnJ1hnJcM8999juu+9eOafsfvvtZ88991zl79kvERU33XST991+6aWXVt7G/olSuP766719MfUyYMCAstsvCboj6IknnrDLL7/c69b37rvv2pAhQ+yoo46ypUuXlnrVkCDr1q3z9j2dAMrklltusTvvvNPuvfdemzx5srVq1crbT/XhCITplVde8b6A33zzTZs4caJt3rzZjjzySG+fdS677DL7+9//bk8++aR3/8WLF9tJJ53EC4NQ9ejRwwtmpkyZYu+8844deuihdsIJJ9hHH33EfonIePvtt+2+++7zThCl4nMTpbLrrrvakiVLKi+vv/56+e2XFYicvffeu2LUqFGV17du3VrRrVu3ijFjxpR0vZBc+qh45plnKq9v27atYocddqj49a9/XXnbypUrK5o1a1bx2GOPlWgtkVRLly719tFXXnmlcl9s0qRJxZNPPll5n+nTp3v3mTRpUgnXFEnUvn37ij/84Q/sl4iENWvWVPTr169i4sSJFQcddFDFJZdc4t3O5yZKZfTo0RVDhgzJ+Lty2i/JdEfMpk2bvDPkKtV1GjZs6F2fNGlSSdcNcObNm2efffZZ2n7arl07bygE+ymKbdWqVd7/HTp08P7XZ6iy36n7p0rVdtxxR/ZPFM3WrVvt8ccf9yowVGbOfokoUJXQcccdl/b5KOyfKKVZs2Z5wxn79Oljp59+ui1YsKDs9svGpV4BpFu+fLn3Rb399tun3a7rM2bMYHMhEhRwS6b91P0OKIZt27Z5YxL3339/Gzx4cOX+2bRpU9tuu+3YP1F0U6dO9YJsDbXR+MNnnnnGBg0aZO+//z77JUpKJ4E0bFHl5dXxuYlS2WeffexPf/qT7bLLLl5p+c9//nM74IAD7MMPPyyr/ZKgGwAQ66yNvphTx38BpaQDRwXYqsB46qmn7IwzzvDGIQKltHDhQrvkkku8Phhq0gtExTHHHFP5s/oMKAjv1auX/fWvf/Ua9ZYLyssjplOnTtaoUaMaXfl0fYcddijZegGp3L7IfopSuvDCC+0f//iHvfTSS14Dq9T9U0N1Vq5cmXZ/PkdRDMrK7LzzzjZs2DCv074aUo4dO5b9EiWlMl015N1zzz2tcePG3kUng9QQVT8rc8jnJqJgu+22s/79+9vs2bPL6nOToDuCX9b6on7xxRfTyid1XeVqQBTstNNO3odd6n66evVqr4s5+ynCpt5+CrhVtvvvf//b2x9T6TO0SZMmafunphTTGDH2TxSbvsM3btzIfomSOuyww7yhD6rCcJe99trLGz/rfuZzE1Gwdu1amzNnjjclbTl9n1NeHkGaLkzlaPoA3Hvvve2OO+7wGrGcddZZpV41JOxDT2cZU5un6YtZzarUwELjaH/5y19av379vKDnZz/7mdcEQ3MmA2GXlD/66KP2t7/9zZur243rUjM/laLp/3POOcf7LNX+qvmSL7roIu8Let999+XFQWiuuuoqr1RSn5Fr1qzx9tOXX37Znn/+efZLlJQ+K13fC0dTfWruY3c7n5sohSuuuMK+853veCXlmg5MUyar6vfUU08tq89Ngu4IOuWUU2zZsmV23XXXeQeTQ4cOtQkTJtRoWgWESXPMHnLIIZXX9YEnOiGkhhdXXnmldzLovPPO88p+vvWtb3n7KWPFELZ77rnH+//ggw9Ou/3BBx+0M8880/v59ttv92Z+GDFihJdl1Bzyv/vd73hxECqV744cOdJrBqSDRY1PVMB9xBFHsF8i8vjcRCl8+umnXoC9YsUK69y5s3c8+eabb3o/l9N+2UDzhpV6JQAAAAAAKEeM6QYAAAAAICQE3QAAAAAAhISgGwAAAACAkBB0AwAAAAAQEoJuAAAAAABCQtANAAAAAEBICLoBAAAAAAgJQTcAAAAAACEh6AYAIII++eQTa9Cggb3//vsWFTNmzLB9993XmjdvbkOHDg398Xr37m133HFHoNvsT3/6k2233XYBrSEAAPUj6AYAIIMzzzzTC+BuuummtNvHjx/v3Z5Eo0ePtlatWtnMmTPtxRdfDH27vf3223beeecVtM4AAJQaQTcAALVQRvfmm2+2L7/8smy20aZNm/L+2zlz5ti3vvUt69Wrl3Xs2DH07da5c2dr2bKlxcHmzZtLvQoAgIgi6AYAoBaHH3647bDDDjZmzJhat9H1119fo9RaJdEqjU7N/p544ol244032vbbb++VN99www22ZcsW+/GPf2wdOnSwHj162IMPPpixpPub3/ymF8gOHjzYXnnllbTff/jhh3bMMcdY69atvWX/7//+ry1fvrzy9wcffLBdeOGFdumll1qnTp3sqKOOyvg8tm3b5q2T1qNZs2bec5owYULl75WlnjJlincf/aznXch2k9dff90OOOAAa9GihfXs2dMuvvhiW7duXa3l5doWCvq1LQYNGmQvvPCCty7KoqeaO3euHXLIIV7APmTIEJs0aVKNx9bf9OvXz1uWtsnChQvTfn/PPfdY3759rWnTprbLLrvYww8/nPZ7Pa7uc/zxx3vZ/1/96lfeSYbTTz/dO1mg56TlZ3pNAQDJQtANAEAtGjVq5AXKd911l3366acFbad///vftnjxYnv11Vfttttu80q1v/3tb1v79u1t8uTJdv7559sPf/jDGo+joPxHP/qRvffee7bffvvZd77zHVuxYoX3u5UrV9qhhx5qe+yxh73zzjtekPz555/b//zP/6Qt46GHHvKCxzfeeMPuvffejOs3duxYu/XWW+03v/mNffDBB14gqoBy1qxZ3u+XLFliu+66q7cu+vmKK64oaLspa3700UfbiBEjvMd74oknvCBcJwgy2bp1q3fiQoG0ttfvf/97u+aaazLeV7dr/TS2u3///nbqqad6Jzic9evXe0Hyn//8Z2+baDt+73vfq/z9M888Y5dccon3XHVSQ6/LWWedZS+99FLa4+jEw/Dhw23q1Kl29tln289+9jObNm2aPffcczZ9+nQvKNeJDgBAwlUAAIAazjjjjIoTTjjB+3nfffetOPvss72fn3nmmYrUr8/Ro0dXDBkyJO1vb7/99opevXqlLUvXt27dWnnbLrvsUnHAAQdUXt+yZUtFq1atKh577DHv+rx587zHuemmmyrvs3nz5ooePXpU3Hzzzd71X/ziFxVHHnlk2mMvXLjQ+7uZM2d61w866KCKPfbYo95XuFu3bhW/+tWv0m77xje+UfH//t//q7yu56nnG8R2O+eccyrOO++8tL997bXXKho2bFjx1Vdfede1zbQt5bnnnqto3LhxxZIlSyrvP3HiRG+ZWnbqNvvDH/5QeZ+PPvrIu2369One9QcffNC7/uabb1beR7/TbZMnT/auf/Ob36w499xz09bt5JNPrjj22GMrr+v+l156adp9vvOd71ScddZZdW4fAEDykOkGAKAeGp+sbLGyl/lSlrhhw6qvXZWC77bbbmnZYY2TXrp0adrfKbvtNG7c2Pbaa6/K9fjvf//rZV9VWu4uAwYMqMwkO8OGDatz3VavXu1l4ffff/+023W9kOdc13bTuquTeOq6K7uuMvd58+bVuL+at6kEXWXrzt57753xcXfffffKn7t27er9n7pdtR2/8Y1vVF7XNlPJv1tP/Z/NttBrkeqCCy6wxx9/3CvNv/LKK+0///lPHVsHAJAUBN0AANTjwAMP9ALCq666quYXacOGSt/W21SrSZMmNcYEZ7pNQWe21q5d65Wbq4w69aKScK2zozHHUdtuWneVbaeutwJxrbvGUhcidbu6jum5bNdsVd+uGls/f/58u+yyy7yTGIcddlidZfgAgGQg6AYAIAuaAuvvf/97jaZcapr12WefpQXeQc6t/eabb1b+rHHJamY2cOBA7/qee+5pH330kddwbOedd0675BJot23b1rp16+aNb06l62pYFsZ207pr/HP19dZF48+rUzMzNTvTmPXUKcXyoe2oMfCpWXSN63bbVf/nuy20P5xxxhn2l7/8xWsCp7HnAIBkI+gGACALKgVXZ+o777wz7XZ1B1+2bJndcsstXkn33Xff7TXSCoqWp8Ze6tw9atQor0O2mnaJrn/xxRdeozAFoHr8559/3mv6pcZjuVDDNpWDq6GZgtCf/vSn3skDNRQLY7v95Cc/8cqv1TjNZef/9re/1dpI7YgjjvAy4Apo1XhNQfC1117r/S7X+b+VCb/ooou8hmw6iaHu8vvuu29lubq2hUrf1QhN66XGd+PGjas3a33dddd5z2H27NneyZB//OMflYE8ACC5CLoBAMiSpsuqXqasoOp3v/udFxxreqq33nor0JJiZYp10bLV3fvZZ5+t7IjtstMKsI888kgvwNXUYBqfnDp+PBuaruvyyy/3OnZrOeqErsfStFdhbDeNu9b0Zx9//LE3bZg6sCto1XPKRGPeNc2XytI1HvsHP/hBZfdyTfuVC3VAV9B/2mmneWO1NZ5cJxscdUlXN3d1ctdY/Pvuu8+b+ksnWOqiDL1K6fXcVFqvddYYbwBAsjVQN7VSrwQAAECudMJB83Yrs1zoOHAAAMJC0A0AAGJBZfbKSiv7rkBbpe+a51wVAAAARFXjUq8AAABANtasWeOVhS9YsMArsT/88MPt1ltvZeMBACKNTDcAAAAAACGhkRoAAAAAACEh6AYAAAAAICQE3QAAAAAAhISgGwAAAACAkBB0AwAAAAAQEoJuAAAAAABCQtANAAAAAEBICLoBAAAAAAgJQTcAAAAAABaO/w+0B/J5Nt6ooAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create the plot\n", + "plt.figure(figsize=(10, 6))\n", + "\n", + "# Plot mean test scores with error bars\n", + "plt.plot(accuracy_grid['param_n_neighbors'], accuracy_grid['mean_test_score'], '-o', color='blue')\n", + "\n", + "# Add labels and legend\n", + "plt.xlabel('Number of Neighbors')\n", + "plt.ylabel('Accuracy estimate')\n", + "plt.title('K-Nearest Neighbors Performance')\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "17201f44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'n_neighbors': 7}" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Number of neighbors with the highest accuracy programmatically\n", + "wine_tune_grid.best_params_" ] }, { @@ -305,12 +3032,1696 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "ffefa9f2", "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsClassifier(n_neighbors=7)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "KNeighborsClassifier(n_neighbors=7)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Initialize the KNN classifier using K=7\n", + "knn = KNeighborsClassifier(n_neighbors=7)\n", + "knn" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "09d4f70c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
KNeighborsClassifier(n_neighbors=7)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ], + "text/plain": [ + "KNeighborsClassifier(n_neighbors=7)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fit the model on the wine training data using the define values of the X and y training data\n", + "knn.fit(X=X_train, y=y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "8026d4ad", + "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", + " \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", + " \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", + " \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", + " \n", + " \n", + " \n", + "
alcoholmalic_acidashalcalinity_of_ashmagnesiumtotal_phenolsflavanoidsnonflavanoid_phenolsproanthocyaninscolor_intensityhueod280/od315_of_diluted_winesproline
78-0.828391-1.208567-1.522511-1.4098212.545825-0.633101-0.179981-0.0955172.048364-0.7172400.449924-0.4261130.009893
01.518613-0.5622500.232053-1.1695931.9139050.8089971.034819-0.6595631.2248840.2517170.3621771.8479201.013009
150.777454-0.4724831.218995-0.6891370.8607050.8891140.884224-0.498407-0.2293460.9697831.4151390.3789791.793210
132.160950-0.5442970.085839-2.430790-0.6137751.2896971.6673180.5491082.1359680.1479001.2835180.1671131.283691
141.703902-0.4186240.049285-2.2506190.1585721.6101631.617120-0.5789852.3987801.0562971.0641510.5484722.547935
..........................................
112-1.5324920.3084832.0231700.1516610.228785-0.8734510.0007331.918935-0.947700-0.5442121.195772-0.157749-0.445489
101-0.494869-0.894385-1.705278-0.298767-0.824415-1.354150-0.671924-0.578985-0.422075-1.1281810.3621770.223610-0.588791
120.925685-0.5442970.158946-1.049479-0.7542020.4885310.733629-0.5789850.3838840.2344140.8447850.4072281.825055
61-0.445459-0.876432-1.266637-0.8092510.018145-0.440821-0.6217261.354888-1.7010970.2993000.098937-1.443072-0.945455
660.135116-1.190614-2.436346-1.349764-1.5265481.0974171.155295-0.8207191.2073630.1046430.7131640.802712-0.779861
\n", + "

133 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " alcohol malic_acid ash alcalinity_of_ash magnesium \\\n", + "78 -0.828391 -1.208567 -1.522511 -1.409821 2.545825 \n", + "0 1.518613 -0.562250 0.232053 -1.169593 1.913905 \n", + "15 0.777454 -0.472483 1.218995 -0.689137 0.860705 \n", + "13 2.160950 -0.544297 0.085839 -2.430790 -0.613775 \n", + "14 1.703902 -0.418624 0.049285 -2.250619 0.158572 \n", + ".. ... ... ... ... ... \n", + "112 -1.532492 0.308483 2.023170 0.151661 0.228785 \n", + "101 -0.494869 -0.894385 -1.705278 -0.298767 -0.824415 \n", + "12 0.925685 -0.544297 0.158946 -1.049479 -0.754202 \n", + "61 -0.445459 -0.876432 -1.266637 -0.809251 0.018145 \n", + "66 0.135116 -1.190614 -2.436346 -1.349764 -1.526548 \n", + "\n", + " total_phenols flavanoids nonflavanoid_phenols proanthocyanins \\\n", + "78 -0.633101 -0.179981 -0.095517 2.048364 \n", + "0 0.808997 1.034819 -0.659563 1.224884 \n", + "15 0.889114 0.884224 -0.498407 -0.229346 \n", + "13 1.289697 1.667318 0.549108 2.135968 \n", + "14 1.610163 1.617120 -0.578985 2.398780 \n", + ".. ... ... ... ... \n", + "112 -0.873451 0.000733 1.918935 -0.947700 \n", + "101 -1.354150 -0.671924 -0.578985 -0.422075 \n", + "12 0.488531 0.733629 -0.578985 0.383884 \n", + "61 -0.440821 -0.621726 1.354888 -1.701097 \n", + "66 1.097417 1.155295 -0.820719 1.207363 \n", + "\n", + " color_intensity hue od280/od315_of_diluted_wines proline \n", + "78 -0.717240 0.449924 -0.426113 0.009893 \n", + "0 0.251717 0.362177 1.847920 1.013009 \n", + "15 0.969783 1.415139 0.378979 1.793210 \n", + "13 0.147900 1.283518 0.167113 1.283691 \n", + "14 1.056297 1.064151 0.548472 2.547935 \n", + ".. ... ... ... ... \n", + "112 -0.544212 1.195772 -0.157749 -0.445489 \n", + "101 -1.128181 0.362177 0.223610 -0.588791 \n", + "12 0.234414 0.844785 0.407228 1.825055 \n", + "61 0.299300 0.098937 -1.443072 -0.945455 \n", + "66 0.104643 0.713164 0.802712 -0.779861 \n", + "\n", + "[133 rows x 13 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "X_train\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "038fd73f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "78 1\n", + "0 0\n", + "15 0\n", + "13 0\n", + "14 0\n", + " ..\n", + "112 1\n", + "101 1\n", + "12 0\n", + "61 1\n", + "66 1\n", + "Name: class, Length: 133, dtype: int64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "03f2e003", + "metadata": {}, "outputs": [], "source": [ - "# Your code here..." + "# Predict class on the test set using a new variable array called y_pred\n", + "# Refer to: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.accuracy_score.html \n", + "# Note: \"from sklearn.metrics import accuracy_score\" was imported as part of the standard libraries\n", + "y_pred = knn.predict(X_test)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "652dc934", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 1 2 0 1 0 1 1 0 2 0 0 1 1 1 1 2 0 1 0 1 0 0 2 2 2 2 2 0 2 1 0 0 1 0 1 2\n", + " 0 1 0 0 2 0 2 2]\n" + ] + } + ], + "source": [ + "print(y_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "1e168a0c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "102 1\n", + "84 1\n", + "96 1\n", + "65 1\n", + "79 1\n", + "17 0\n", + "109 1\n", + "113 1\n", + "28 0\n", + "159 2\n", + "38 0\n", + "34 0\n", + "125 1\n", + "115 1\n", + "71 1\n", + "76 1\n", + "131 2\n", + "33 0\n", + "60 1\n", + "19 0\n", + "114 1\n", + "47 0\n", + "48 0\n", + "158 2\n", + "133 2\n", + "137 2\n", + "154 2\n", + "136 2\n", + "2 0\n", + "168 2\n", + "117 1\n", + "32 0\n", + "22 0\n", + "108 1\n", + "73 1\n", + "77 1\n", + "142 2\n", + "9 0\n", + "85 1\n", + "58 0\n", + "45 0\n", + "175 2\n", + "42 0\n", + "143 2\n", + "177 2\n", + "Name: class, dtype: int64\n" + ] + } + ], + "source": [ + "print(y_test)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd49c54f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9333333333333333\n" + ] + } + ], + "source": [ + "# Use accuracy_score function to calculate test KNN classifier model accuracy \n", + "# Relies on code in step immediately above\n", + "accuracy = accuracy_score(y_pred, y_test)\n", + "print(accuracy)\n", + " " ] }, { @@ -365,7 +4776,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3.10.4", + "display_name": "lcr-env", "language": "python", "name": "python3" }, @@ -379,12 +4790,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.19" - }, - "vscode": { - "interpreter": { - "hash": "497a84dc8fec8cf8d24e7e87b6d954c9a18a327edc66feb9b9ea7e9e72cc5c7e" - } + "version": "3.11.13" } }, "nbformat": 4,