Skip to content

Instantly share code, notes, and snippets.

@chendaniely
Created June 15, 2022 02:52
Show Gist options
  • Save chendaniely/b5a4c9834289457837005f94cb3f1ff7 to your computer and use it in GitHub Desktop.
Save chendaniely/b5a4c9834289457837005f94cb3f1ff7 to your computer and use it in GitHub Desktop.
DSCI 100 Quiz 2 Code Study Guide
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table>\n",
"<caption>A data.frame: 32 × 11</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>mpg</th><th scope=col>cyl</th><th scope=col>disp</th><th scope=col>hp</th><th scope=col>drat</th><th scope=col>wt</th><th scope=col>qsec</th><th scope=col>vs</th><th scope=col>am</th><th scope=col>gear</th><th scope=col>carb</th></tr>\n",
"\t<tr><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.90</td><td>2.620</td><td>16.46</td><td>0</td><td>1</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.90</td><td>2.875</td><td>17.02</td><td>0</td><td>1</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>22.8</td><td>4</td><td>108.0</td><td> 93</td><td>3.85</td><td>2.320</td><td>18.61</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>21.4</td><td>6</td><td>258.0</td><td>110</td><td>3.08</td><td>3.215</td><td>19.44</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>18.7</td><td>8</td><td>360.0</td><td>175</td><td>3.15</td><td>3.440</td><td>17.02</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>18.1</td><td>6</td><td>225.0</td><td>105</td><td>2.76</td><td>3.460</td><td>20.22</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>14.3</td><td>8</td><td>360.0</td><td>245</td><td>3.21</td><td>3.570</td><td>15.84</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>24.4</td><td>4</td><td>146.7</td><td> 62</td><td>3.69</td><td>3.190</td><td>20.00</td><td>1</td><td>0</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>22.8</td><td>4</td><td>140.8</td><td> 95</td><td>3.92</td><td>3.150</td><td>22.90</td><td>1</td><td>0</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>19.2</td><td>6</td><td>167.6</td><td>123</td><td>3.92</td><td>3.440</td><td>18.30</td><td>1</td><td>0</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>17.8</td><td>6</td><td>167.6</td><td>123</td><td>3.92</td><td>3.440</td><td>18.90</td><td>1</td><td>0</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>16.4</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>4.070</td><td>17.40</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>17.3</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.730</td><td>17.60</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>15.2</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.780</td><td>18.00</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>10.4</td><td>8</td><td>472.0</td><td>205</td><td>2.93</td><td>5.250</td><td>17.98</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>10.4</td><td>8</td><td>460.0</td><td>215</td><td>3.00</td><td>5.424</td><td>17.82</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>14.7</td><td>8</td><td>440.0</td><td>230</td><td>3.23</td><td>5.345</td><td>17.42</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>32.4</td><td>4</td><td> 78.7</td><td> 66</td><td>4.08</td><td>2.200</td><td>19.47</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>30.4</td><td>4</td><td> 75.7</td><td> 52</td><td>4.93</td><td>1.615</td><td>18.52</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>33.9</td><td>4</td><td> 71.1</td><td> 65</td><td>4.22</td><td>1.835</td><td>19.90</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>21.5</td><td>4</td><td>120.1</td><td> 97</td><td>3.70</td><td>2.465</td><td>20.01</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>15.5</td><td>8</td><td>318.0</td><td>150</td><td>2.76</td><td>3.520</td><td>16.87</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>15.2</td><td>8</td><td>304.0</td><td>150</td><td>3.15</td><td>3.435</td><td>17.30</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>13.3</td><td>8</td><td>350.0</td><td>245</td><td>3.73</td><td>3.840</td><td>15.41</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>19.2</td><td>8</td><td>400.0</td><td>175</td><td>3.08</td><td>3.845</td><td>17.05</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>27.3</td><td>4</td><td> 79.0</td><td> 66</td><td>4.08</td><td>1.935</td><td>18.90</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>26.0</td><td>4</td><td>120.3</td><td> 91</td><td>4.43</td><td>2.140</td><td>16.70</td><td>0</td><td>1</td><td>5</td><td>2</td></tr>\n",
"\t<tr><td>30.4</td><td>4</td><td> 95.1</td><td>113</td><td>3.77</td><td>1.513</td><td>16.90</td><td>1</td><td>1</td><td>5</td><td>2</td></tr>\n",
"\t<tr><td>15.8</td><td>8</td><td>351.0</td><td>264</td><td>4.22</td><td>3.170</td><td>14.50</td><td>0</td><td>1</td><td>5</td><td>4</td></tr>\n",
"\t<tr><td>19.7</td><td>6</td><td>145.0</td><td>175</td><td>3.62</td><td>2.770</td><td>15.50</td><td>0</td><td>1</td><td>5</td><td>6</td></tr>\n",
"\t<tr><td>15.0</td><td>8</td><td>301.0</td><td>335</td><td>3.54</td><td>3.570</td><td>14.60</td><td>0</td><td>1</td><td>5</td><td>8</td></tr>\n",
"\t<tr><td>21.4</td><td>4</td><td>121.0</td><td>109</td><td>4.11</td><td>2.780</td><td>18.60</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A data.frame: 32 × 11\n",
"\\begin{tabular}{lllllllllll}\n",
" mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb\\\\\n",
" <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <fct> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 21.0 & 6 & 160.0 & 110 & 3.90 & 2.620 & 16.46 & 0 & 1 & 4 & 4\\\\\n",
"\t 21.0 & 6 & 160.0 & 110 & 3.90 & 2.875 & 17.02 & 0 & 1 & 4 & 4\\\\\n",
"\t 22.8 & 4 & 108.0 & 93 & 3.85 & 2.320 & 18.61 & 1 & 1 & 4 & 1\\\\\n",
"\t 21.4 & 6 & 258.0 & 110 & 3.08 & 3.215 & 19.44 & 1 & 0 & 3 & 1\\\\\n",
"\t 18.7 & 8 & 360.0 & 175 & 3.15 & 3.440 & 17.02 & 0 & 0 & 3 & 2\\\\\n",
"\t 18.1 & 6 & 225.0 & 105 & 2.76 & 3.460 & 20.22 & 1 & 0 & 3 & 1\\\\\n",
"\t 14.3 & 8 & 360.0 & 245 & 3.21 & 3.570 & 15.84 & 0 & 0 & 3 & 4\\\\\n",
"\t 24.4 & 4 & 146.7 & 62 & 3.69 & 3.190 & 20.00 & 1 & 0 & 4 & 2\\\\\n",
"\t 22.8 & 4 & 140.8 & 95 & 3.92 & 3.150 & 22.90 & 1 & 0 & 4 & 2\\\\\n",
"\t 19.2 & 6 & 167.6 & 123 & 3.92 & 3.440 & 18.30 & 1 & 0 & 4 & 4\\\\\n",
"\t 17.8 & 6 & 167.6 & 123 & 3.92 & 3.440 & 18.90 & 1 & 0 & 4 & 4\\\\\n",
"\t 16.4 & 8 & 275.8 & 180 & 3.07 & 4.070 & 17.40 & 0 & 0 & 3 & 3\\\\\n",
"\t 17.3 & 8 & 275.8 & 180 & 3.07 & 3.730 & 17.60 & 0 & 0 & 3 & 3\\\\\n",
"\t 15.2 & 8 & 275.8 & 180 & 3.07 & 3.780 & 18.00 & 0 & 0 & 3 & 3\\\\\n",
"\t 10.4 & 8 & 472.0 & 205 & 2.93 & 5.250 & 17.98 & 0 & 0 & 3 & 4\\\\\n",
"\t 10.4 & 8 & 460.0 & 215 & 3.00 & 5.424 & 17.82 & 0 & 0 & 3 & 4\\\\\n",
"\t 14.7 & 8 & 440.0 & 230 & 3.23 & 5.345 & 17.42 & 0 & 0 & 3 & 4\\\\\n",
"\t 32.4 & 4 & 78.7 & 66 & 4.08 & 2.200 & 19.47 & 1 & 1 & 4 & 1\\\\\n",
"\t 30.4 & 4 & 75.7 & 52 & 4.93 & 1.615 & 18.52 & 1 & 1 & 4 & 2\\\\\n",
"\t 33.9 & 4 & 71.1 & 65 & 4.22 & 1.835 & 19.90 & 1 & 1 & 4 & 1\\\\\n",
"\t 21.5 & 4 & 120.1 & 97 & 3.70 & 2.465 & 20.01 & 1 & 0 & 3 & 1\\\\\n",
"\t 15.5 & 8 & 318.0 & 150 & 2.76 & 3.520 & 16.87 & 0 & 0 & 3 & 2\\\\\n",
"\t 15.2 & 8 & 304.0 & 150 & 3.15 & 3.435 & 17.30 & 0 & 0 & 3 & 2\\\\\n",
"\t 13.3 & 8 & 350.0 & 245 & 3.73 & 3.840 & 15.41 & 0 & 0 & 3 & 4\\\\\n",
"\t 19.2 & 8 & 400.0 & 175 & 3.08 & 3.845 & 17.05 & 0 & 0 & 3 & 2\\\\\n",
"\t 27.3 & 4 & 79.0 & 66 & 4.08 & 1.935 & 18.90 & 1 & 1 & 4 & 1\\\\\n",
"\t 26.0 & 4 & 120.3 & 91 & 4.43 & 2.140 & 16.70 & 0 & 1 & 5 & 2\\\\\n",
"\t 30.4 & 4 & 95.1 & 113 & 3.77 & 1.513 & 16.90 & 1 & 1 & 5 & 2\\\\\n",
"\t 15.8 & 8 & 351.0 & 264 & 4.22 & 3.170 & 14.50 & 0 & 1 & 5 & 4\\\\\n",
"\t 19.7 & 6 & 145.0 & 175 & 3.62 & 2.770 & 15.50 & 0 & 1 & 5 & 6\\\\\n",
"\t 15.0 & 8 & 301.0 & 335 & 3.54 & 3.570 & 14.60 & 0 & 1 & 5 & 8\\\\\n",
"\t 21.4 & 4 & 121.0 & 109 & 4.11 & 2.780 & 18.60 & 1 & 1 & 4 & 2\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 32 × 11\n",
"\n",
"| mpg &lt;dbl&gt; | cyl &lt;dbl&gt; | disp &lt;dbl&gt; | hp &lt;dbl&gt; | drat &lt;dbl&gt; | wt &lt;dbl&gt; | qsec &lt;dbl&gt; | vs &lt;dbl&gt; | am &lt;fct&gt; | gear &lt;dbl&gt; | carb &lt;dbl&gt; |\n",
"|---|---|---|---|---|---|---|---|---|---|---|\n",
"| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |\n",
"| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |\n",
"| 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |\n",
"| 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |\n",
"| 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |\n",
"| 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |\n",
"| 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |\n",
"| 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 | 0 | 4 | 2 |\n",
"| 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 | 0 | 4 | 2 |\n",
"| 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |\n",
"| 17.8 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.90 | 1 | 0 | 4 | 4 |\n",
"| 16.4 | 8 | 275.8 | 180 | 3.07 | 4.070 | 17.40 | 0 | 0 | 3 | 3 |\n",
"| 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |\n",
"| 15.2 | 8 | 275.8 | 180 | 3.07 | 3.780 | 18.00 | 0 | 0 | 3 | 3 |\n",
"| 10.4 | 8 | 472.0 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |\n",
"| 10.4 | 8 | 460.0 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |\n",
"| 14.7 | 8 | 440.0 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |\n",
"| 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |\n",
"| 30.4 | 4 | 75.7 | 52 | 4.93 | 1.615 | 18.52 | 1 | 1 | 4 | 2 |\n",
"| 33.9 | 4 | 71.1 | 65 | 4.22 | 1.835 | 19.90 | 1 | 1 | 4 | 1 |\n",
"| 21.5 | 4 | 120.1 | 97 | 3.70 | 2.465 | 20.01 | 1 | 0 | 3 | 1 |\n",
"| 15.5 | 8 | 318.0 | 150 | 2.76 | 3.520 | 16.87 | 0 | 0 | 3 | 2 |\n",
"| 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |\n",
"| 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |\n",
"| 19.2 | 8 | 400.0 | 175 | 3.08 | 3.845 | 17.05 | 0 | 0 | 3 | 2 |\n",
"| 27.3 | 4 | 79.0 | 66 | 4.08 | 1.935 | 18.90 | 1 | 1 | 4 | 1 |\n",
"| 26.0 | 4 | 120.3 | 91 | 4.43 | 2.140 | 16.70 | 0 | 1 | 5 | 2 |\n",
"| 30.4 | 4 | 95.1 | 113 | 3.77 | 1.513 | 16.90 | 1 | 1 | 5 | 2 |\n",
"| 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |\n",
"| 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |\n",
"| 15.0 | 8 | 301.0 | 335 | 3.54 | 3.570 | 14.60 | 0 | 1 | 5 | 8 |\n",
"| 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |\n",
"\n"
],
"text/plain": [
" mpg cyl disp hp drat wt qsec vs am gear carb\n",
"1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 \n",
"2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 \n",
"3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 \n",
"4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 \n",
"5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 \n",
"6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 \n",
"7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 \n",
"8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 \n",
"9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 \n",
"10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 \n",
"11 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 \n",
"12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 \n",
"13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 \n",
"14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 \n",
"15 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 \n",
"16 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 \n",
"17 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 \n",
"18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 \n",
"19 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 \n",
"20 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 \n",
"21 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 \n",
"22 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 \n",
"23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 \n",
"24 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 \n",
"25 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 \n",
"26 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 \n",
"27 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 \n",
"28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 \n",
"29 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 \n",
"30 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 \n",
"31 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 \n",
"32 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"library(tidyverse)\n",
"library(tidymodels)\n",
"\n",
"# pros + cons of each model we use\n",
"# git is the version control software\n",
"# github is the cloud repository hosting service\n",
"\n",
"\n",
"# Initial Data Processing -----\n",
"\n",
"# given the mtcars data set, I want to classify based on transmition, am\n",
"# given the mpg, hp, and wt of a car\n",
"mtcars"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"mtcars <- mtcars %>%\n",
" mutate(am = factor(am)) # why do you need this?\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table>\n",
"<caption>A data.frame: 32 × 11</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>mpg</th><th scope=col>cyl</th><th scope=col>disp</th><th scope=col>hp</th><th scope=col>drat</th><th scope=col>wt</th><th scope=col>qsec</th><th scope=col>vs</th><th scope=col>am</th><th scope=col>gear</th><th scope=col>carb</th></tr>\n",
"\t<tr><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.90</td><td>2.620</td><td>16.46</td><td>0</td><td>1</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>21.0</td><td>6</td><td>160.0</td><td>110</td><td>3.90</td><td>2.875</td><td>17.02</td><td>0</td><td>1</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>22.8</td><td>4</td><td>108.0</td><td> 93</td><td>3.85</td><td>2.320</td><td>18.61</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>21.4</td><td>6</td><td>258.0</td><td>110</td><td>3.08</td><td>3.215</td><td>19.44</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>18.7</td><td>8</td><td>360.0</td><td>175</td><td>3.15</td><td>3.440</td><td>17.02</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>18.1</td><td>6</td><td>225.0</td><td>105</td><td>2.76</td><td>3.460</td><td>20.22</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>14.3</td><td>8</td><td>360.0</td><td>245</td><td>3.21</td><td>3.570</td><td>15.84</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>24.4</td><td>4</td><td>146.7</td><td> 62</td><td>3.69</td><td>3.190</td><td>20.00</td><td>1</td><td>0</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>22.8</td><td>4</td><td>140.8</td><td> 95</td><td>3.92</td><td>3.150</td><td>22.90</td><td>1</td><td>0</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>19.2</td><td>6</td><td>167.6</td><td>123</td><td>3.92</td><td>3.440</td><td>18.30</td><td>1</td><td>0</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>17.8</td><td>6</td><td>167.6</td><td>123</td><td>3.92</td><td>3.440</td><td>18.90</td><td>1</td><td>0</td><td>4</td><td>4</td></tr>\n",
"\t<tr><td>16.4</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>4.070</td><td>17.40</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>17.3</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.730</td><td>17.60</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>15.2</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.780</td><td>18.00</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>10.4</td><td>8</td><td>472.0</td><td>205</td><td>2.93</td><td>5.250</td><td>17.98</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>10.4</td><td>8</td><td>460.0</td><td>215</td><td>3.00</td><td>5.424</td><td>17.82</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>14.7</td><td>8</td><td>440.0</td><td>230</td><td>3.23</td><td>5.345</td><td>17.42</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>32.4</td><td>4</td><td> 78.7</td><td> 66</td><td>4.08</td><td>2.200</td><td>19.47</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>30.4</td><td>4</td><td> 75.7</td><td> 52</td><td>4.93</td><td>1.615</td><td>18.52</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"\t<tr><td>33.9</td><td>4</td><td> 71.1</td><td> 65</td><td>4.22</td><td>1.835</td><td>19.90</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>21.5</td><td>4</td><td>120.1</td><td> 97</td><td>3.70</td><td>2.465</td><td>20.01</td><td>1</td><td>0</td><td>3</td><td>1</td></tr>\n",
"\t<tr><td>15.5</td><td>8</td><td>318.0</td><td>150</td><td>2.76</td><td>3.520</td><td>16.87</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>15.2</td><td>8</td><td>304.0</td><td>150</td><td>3.15</td><td>3.435</td><td>17.30</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>13.3</td><td>8</td><td>350.0</td><td>245</td><td>3.73</td><td>3.840</td><td>15.41</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>19.2</td><td>8</td><td>400.0</td><td>175</td><td>3.08</td><td>3.845</td><td>17.05</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>27.3</td><td>4</td><td> 79.0</td><td> 66</td><td>4.08</td><td>1.935</td><td>18.90</td><td>1</td><td>1</td><td>4</td><td>1</td></tr>\n",
"\t<tr><td>26.0</td><td>4</td><td>120.3</td><td> 91</td><td>4.43</td><td>2.140</td><td>16.70</td><td>0</td><td>1</td><td>5</td><td>2</td></tr>\n",
"\t<tr><td>30.4</td><td>4</td><td> 95.1</td><td>113</td><td>3.77</td><td>1.513</td><td>16.90</td><td>1</td><td>1</td><td>5</td><td>2</td></tr>\n",
"\t<tr><td>15.8</td><td>8</td><td>351.0</td><td>264</td><td>4.22</td><td>3.170</td><td>14.50</td><td>0</td><td>1</td><td>5</td><td>4</td></tr>\n",
"\t<tr><td>19.7</td><td>6</td><td>145.0</td><td>175</td><td>3.62</td><td>2.770</td><td>15.50</td><td>0</td><td>1</td><td>5</td><td>6</td></tr>\n",
"\t<tr><td>15.0</td><td>8</td><td>301.0</td><td>335</td><td>3.54</td><td>3.570</td><td>14.60</td><td>0</td><td>1</td><td>5</td><td>8</td></tr>\n",
"\t<tr><td>21.4</td><td>4</td><td>121.0</td><td>109</td><td>4.11</td><td>2.780</td><td>18.60</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A data.frame: 32 × 11\n",
"\\begin{tabular}{lllllllllll}\n",
" mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb\\\\\n",
" <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <fct> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 21.0 & 6 & 160.0 & 110 & 3.90 & 2.620 & 16.46 & 0 & 1 & 4 & 4\\\\\n",
"\t 21.0 & 6 & 160.0 & 110 & 3.90 & 2.875 & 17.02 & 0 & 1 & 4 & 4\\\\\n",
"\t 22.8 & 4 & 108.0 & 93 & 3.85 & 2.320 & 18.61 & 1 & 1 & 4 & 1\\\\\n",
"\t 21.4 & 6 & 258.0 & 110 & 3.08 & 3.215 & 19.44 & 1 & 0 & 3 & 1\\\\\n",
"\t 18.7 & 8 & 360.0 & 175 & 3.15 & 3.440 & 17.02 & 0 & 0 & 3 & 2\\\\\n",
"\t 18.1 & 6 & 225.0 & 105 & 2.76 & 3.460 & 20.22 & 1 & 0 & 3 & 1\\\\\n",
"\t 14.3 & 8 & 360.0 & 245 & 3.21 & 3.570 & 15.84 & 0 & 0 & 3 & 4\\\\\n",
"\t 24.4 & 4 & 146.7 & 62 & 3.69 & 3.190 & 20.00 & 1 & 0 & 4 & 2\\\\\n",
"\t 22.8 & 4 & 140.8 & 95 & 3.92 & 3.150 & 22.90 & 1 & 0 & 4 & 2\\\\\n",
"\t 19.2 & 6 & 167.6 & 123 & 3.92 & 3.440 & 18.30 & 1 & 0 & 4 & 4\\\\\n",
"\t 17.8 & 6 & 167.6 & 123 & 3.92 & 3.440 & 18.90 & 1 & 0 & 4 & 4\\\\\n",
"\t 16.4 & 8 & 275.8 & 180 & 3.07 & 4.070 & 17.40 & 0 & 0 & 3 & 3\\\\\n",
"\t 17.3 & 8 & 275.8 & 180 & 3.07 & 3.730 & 17.60 & 0 & 0 & 3 & 3\\\\\n",
"\t 15.2 & 8 & 275.8 & 180 & 3.07 & 3.780 & 18.00 & 0 & 0 & 3 & 3\\\\\n",
"\t 10.4 & 8 & 472.0 & 205 & 2.93 & 5.250 & 17.98 & 0 & 0 & 3 & 4\\\\\n",
"\t 10.4 & 8 & 460.0 & 215 & 3.00 & 5.424 & 17.82 & 0 & 0 & 3 & 4\\\\\n",
"\t 14.7 & 8 & 440.0 & 230 & 3.23 & 5.345 & 17.42 & 0 & 0 & 3 & 4\\\\\n",
"\t 32.4 & 4 & 78.7 & 66 & 4.08 & 2.200 & 19.47 & 1 & 1 & 4 & 1\\\\\n",
"\t 30.4 & 4 & 75.7 & 52 & 4.93 & 1.615 & 18.52 & 1 & 1 & 4 & 2\\\\\n",
"\t 33.9 & 4 & 71.1 & 65 & 4.22 & 1.835 & 19.90 & 1 & 1 & 4 & 1\\\\\n",
"\t 21.5 & 4 & 120.1 & 97 & 3.70 & 2.465 & 20.01 & 1 & 0 & 3 & 1\\\\\n",
"\t 15.5 & 8 & 318.0 & 150 & 2.76 & 3.520 & 16.87 & 0 & 0 & 3 & 2\\\\\n",
"\t 15.2 & 8 & 304.0 & 150 & 3.15 & 3.435 & 17.30 & 0 & 0 & 3 & 2\\\\\n",
"\t 13.3 & 8 & 350.0 & 245 & 3.73 & 3.840 & 15.41 & 0 & 0 & 3 & 4\\\\\n",
"\t 19.2 & 8 & 400.0 & 175 & 3.08 & 3.845 & 17.05 & 0 & 0 & 3 & 2\\\\\n",
"\t 27.3 & 4 & 79.0 & 66 & 4.08 & 1.935 & 18.90 & 1 & 1 & 4 & 1\\\\\n",
"\t 26.0 & 4 & 120.3 & 91 & 4.43 & 2.140 & 16.70 & 0 & 1 & 5 & 2\\\\\n",
"\t 30.4 & 4 & 95.1 & 113 & 3.77 & 1.513 & 16.90 & 1 & 1 & 5 & 2\\\\\n",
"\t 15.8 & 8 & 351.0 & 264 & 4.22 & 3.170 & 14.50 & 0 & 1 & 5 & 4\\\\\n",
"\t 19.7 & 6 & 145.0 & 175 & 3.62 & 2.770 & 15.50 & 0 & 1 & 5 & 6\\\\\n",
"\t 15.0 & 8 & 301.0 & 335 & 3.54 & 3.570 & 14.60 & 0 & 1 & 5 & 8\\\\\n",
"\t 21.4 & 4 & 121.0 & 109 & 4.11 & 2.780 & 18.60 & 1 & 1 & 4 & 2\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 32 × 11\n",
"\n",
"| mpg &lt;dbl&gt; | cyl &lt;dbl&gt; | disp &lt;dbl&gt; | hp &lt;dbl&gt; | drat &lt;dbl&gt; | wt &lt;dbl&gt; | qsec &lt;dbl&gt; | vs &lt;dbl&gt; | am &lt;fct&gt; | gear &lt;dbl&gt; | carb &lt;dbl&gt; |\n",
"|---|---|---|---|---|---|---|---|---|---|---|\n",
"| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |\n",
"| 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |\n",
"| 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |\n",
"| 21.4 | 6 | 258.0 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |\n",
"| 18.7 | 8 | 360.0 | 175 | 3.15 | 3.440 | 17.02 | 0 | 0 | 3 | 2 |\n",
"| 18.1 | 6 | 225.0 | 105 | 2.76 | 3.460 | 20.22 | 1 | 0 | 3 | 1 |\n",
"| 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |\n",
"| 24.4 | 4 | 146.7 | 62 | 3.69 | 3.190 | 20.00 | 1 | 0 | 4 | 2 |\n",
"| 22.8 | 4 | 140.8 | 95 | 3.92 | 3.150 | 22.90 | 1 | 0 | 4 | 2 |\n",
"| 19.2 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.30 | 1 | 0 | 4 | 4 |\n",
"| 17.8 | 6 | 167.6 | 123 | 3.92 | 3.440 | 18.90 | 1 | 0 | 4 | 4 |\n",
"| 16.4 | 8 | 275.8 | 180 | 3.07 | 4.070 | 17.40 | 0 | 0 | 3 | 3 |\n",
"| 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |\n",
"| 15.2 | 8 | 275.8 | 180 | 3.07 | 3.780 | 18.00 | 0 | 0 | 3 | 3 |\n",
"| 10.4 | 8 | 472.0 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |\n",
"| 10.4 | 8 | 460.0 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |\n",
"| 14.7 | 8 | 440.0 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |\n",
"| 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |\n",
"| 30.4 | 4 | 75.7 | 52 | 4.93 | 1.615 | 18.52 | 1 | 1 | 4 | 2 |\n",
"| 33.9 | 4 | 71.1 | 65 | 4.22 | 1.835 | 19.90 | 1 | 1 | 4 | 1 |\n",
"| 21.5 | 4 | 120.1 | 97 | 3.70 | 2.465 | 20.01 | 1 | 0 | 3 | 1 |\n",
"| 15.5 | 8 | 318.0 | 150 | 2.76 | 3.520 | 16.87 | 0 | 0 | 3 | 2 |\n",
"| 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |\n",
"| 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |\n",
"| 19.2 | 8 | 400.0 | 175 | 3.08 | 3.845 | 17.05 | 0 | 0 | 3 | 2 |\n",
"| 27.3 | 4 | 79.0 | 66 | 4.08 | 1.935 | 18.90 | 1 | 1 | 4 | 1 |\n",
"| 26.0 | 4 | 120.3 | 91 | 4.43 | 2.140 | 16.70 | 0 | 1 | 5 | 2 |\n",
"| 30.4 | 4 | 95.1 | 113 | 3.77 | 1.513 | 16.90 | 1 | 1 | 5 | 2 |\n",
"| 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |\n",
"| 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |\n",
"| 15.0 | 8 | 301.0 | 335 | 3.54 | 3.570 | 14.60 | 0 | 1 | 5 | 8 |\n",
"| 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |\n",
"\n"
],
"text/plain": [
" mpg cyl disp hp drat wt qsec vs am gear carb\n",
"1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 \n",
"2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 \n",
"3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 \n",
"4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 \n",
"5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 \n",
"6 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 \n",
"7 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 \n",
"8 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2 \n",
"9 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2 \n",
"10 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 \n",
"11 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 \n",
"12 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 \n",
"13 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 \n",
"14 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 \n",
"15 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 \n",
"16 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 \n",
"17 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 \n",
"18 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 \n",
"19 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 \n",
"20 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 \n",
"21 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 \n",
"22 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 \n",
"23 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 \n",
"24 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 \n",
"25 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 \n",
"26 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1 \n",
"27 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2 \n",
"28 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2 \n",
"29 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 \n",
"30 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 \n",
"31 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 \n",
"32 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mtcars"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"K-Nearest Neighbor Model Specification (classification)\n",
"\n",
"Main Arguments:\n",
" neighbors = 5\n",
" weight_func = rectangular\n",
"\n",
"Computational engine: kknn \n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Fit raw model on everything -----\n",
"\n",
"# use knn to fit the model on everything\n",
"knn_spec <- nearest_neighbor(weight_func = \"rectangular\", neighbors = 5) %>%\n",
" set_engine(\"kknn\") %>%\n",
" set_mode(\"classification\")\n",
"knn_spec"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Data Recipe\n",
"\n",
"Inputs:\n",
"\n",
" role #variables\n",
" outcome 1\n",
" predictor 3"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"══ Workflow [trained] ══════════════════════════════════════════════════════════\n",
"\u001b[3mPreprocessor:\u001b[23m Recipe\n",
"\u001b[3mModel:\u001b[23m nearest_neighbor()\n",
"\n",
"── Preprocessor ────────────────────────────────────────────────────────────────\n",
"0 Recipe Steps\n",
"\n",
"── Model ───────────────────────────────────────────────────────────────────────\n",
"\n",
"Call:\n",
"kknn::train.kknn(formula = ..y ~ ., data = data, ks = ~5, kernel = ~\"rectangular\")\n",
"\n",
"Type of response variable: nominal\n",
"Minimal misclassification: 0.1875\n",
"Best kernel: rectangular\n",
"Best k: 5"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A data.frame: 4 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>am</th><th scope=col>.pred_class</th><th scope=col>n</th></tr>\n",
"\t<tr><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;int&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>0</td><td>0</td><td>18</td></tr>\n",
"\t<tr><td>0</td><td>1</td><td> 1</td></tr>\n",
"\t<tr><td>1</td><td>0</td><td> 2</td></tr>\n",
"\t<tr><td>1</td><td>1</td><td>11</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A data.frame: 4 × 3\n",
"\\begin{tabular}{lll}\n",
" am & .pred\\_class & n\\\\\n",
" <fct> & <fct> & <int>\\\\\n",
"\\hline\n",
"\t 0 & 0 & 18\\\\\n",
"\t 0 & 1 & 1\\\\\n",
"\t 1 & 0 & 2\\\\\n",
"\t 1 & 1 & 11\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 4 × 3\n",
"\n",
"| am &lt;fct&gt; | .pred_class &lt;fct&gt; | n &lt;int&gt; |\n",
"|---|---|---|\n",
"| 0 | 0 | 18 |\n",
"| 0 | 1 | 1 |\n",
"| 1 | 0 | 2 |\n",
"| 1 | 1 | 11 |\n",
"\n"
],
"text/plain": [
" am .pred_class n \n",
"1 0 0 18\n",
"2 0 1 1\n",
"3 1 0 2\n",
"4 1 1 11"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# process data for model\n",
"car_recipe_raw <- recipe(am ~ mpg + hp + wt, data = mtcars)\n",
"car_recipe_raw\n",
"\n",
"knn_fit_1 <- workflow() %>%\n",
" add_recipe(car_recipe_raw) %>%\n",
" add_model(knn_spec) %>%\n",
" fit(data = mtcars)\n",
"knn_fit_1\n",
"\n",
"mtcars %>%\n",
" bind_cols(predict(knn_fit_1, mtcars)) %>%\n",
" count(am, .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Data Recipe\n",
"\n",
"Inputs:\n",
"\n",
" role #variables\n",
" outcome 1\n",
" predictor 3\n",
"\n",
"Operations:\n",
"\n",
"Scaling for all_predictors()\n",
"Centering for all_predictors()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"══ Workflow [trained] ══════════════════════════════════════════════════════════\n",
"\u001b[3mPreprocessor:\u001b[23m Recipe\n",
"\u001b[3mModel:\u001b[23m nearest_neighbor()\n",
"\n",
"── Preprocessor ────────────────────────────────────────────────────────────────\n",
"2 Recipe Steps\n",
"\n",
"● step_scale()\n",
"● step_center()\n",
"\n",
"── Model ───────────────────────────────────────────────────────────────────────\n",
"\n",
"Call:\n",
"kknn::train.kknn(formula = ..y ~ ., data = data, ks = ~5, kernel = ~\"rectangular\")\n",
"\n",
"Type of response variable: nominal\n",
"Minimal misclassification: 0.1875\n",
"Best kernel: rectangular\n",
"Best k: 5"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A data.frame: 4 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>am</th><th scope=col>.pred_class</th><th scope=col>n</th></tr>\n",
"\t<tr><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;int&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>0</td><td>0</td><td>18</td></tr>\n",
"\t<tr><td>0</td><td>1</td><td> 1</td></tr>\n",
"\t<tr><td>1</td><td>0</td><td> 2</td></tr>\n",
"\t<tr><td>1</td><td>1</td><td>11</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A data.frame: 4 × 3\n",
"\\begin{tabular}{lll}\n",
" am & .pred\\_class & n\\\\\n",
" <fct> & <fct> & <int>\\\\\n",
"\\hline\n",
"\t 0 & 0 & 18\\\\\n",
"\t 0 & 1 & 1\\\\\n",
"\t 1 & 0 & 2\\\\\n",
"\t 1 & 1 & 11\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 4 × 3\n",
"\n",
"| am &lt;fct&gt; | .pred_class &lt;fct&gt; | n &lt;int&gt; |\n",
"|---|---|---|\n",
"| 0 | 0 | 18 |\n",
"| 0 | 1 | 1 |\n",
"| 1 | 0 | 2 |\n",
"| 1 | 1 | 11 |\n",
"\n"
],
"text/plain": [
" am .pred_class n \n",
"1 0 0 18\n",
"2 0 1 1\n",
"3 1 0 2\n",
"4 1 1 11"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Fit scaled model on everything -----\n",
"\n",
"car_recipe_processed <- recipe(am ~ mpg + hp + wt, data = mtcars) %>%\n",
" step_scale(all_predictors()) %>% # why do you need these steps?\n",
" step_center(all_predictors())\n",
"car_recipe_processed\n",
"\n",
"\n",
"knn_fit_2 <- workflow() %>%\n",
" add_recipe(car_recipe_processed) %>%\n",
" add_model(knn_spec) %>%\n",
" fit(data = mtcars)\n",
"knn_fit_2\n",
"\n",
"\n",
"mtcars %>%\n",
" bind_cols(predict(knn_fit_2, mtcars)) %>%\n",
" count(am, .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAADAFBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWm\npqanp6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4\nuLi5ubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnK\nysrLy8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc\n3Nzd3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u\n7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7////i\nsF19AAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3dB3gU5drG8WeTEAhFlI4I9oJd\nsQsesRdCExUVLDQBG8qxoqKoYONYsKBIOygoVVEQC0VEEVEsgIh0JIRkzmenQ+bbktlk2zPt\nfXdn573/13U2szPD47Lkd3az2Z0hHSHkOsr0DUDIDwESQgICJIQEBEgICQiQEBIQICEkIEBC\nSECAhJCAhEH6zUm7Hf0py23d+5fU+X/ukDr+t1175M7f9rfU8X/u3S51vuxvn23m3z5/iIek\nOWnP/xz9Matt1f+UOv/3nVLHa3vK5M7f9pfU8b/r26XO1/bKHb9V/8Nsl98ASUSAxAZIgGQt\nQGIDJECyFiCxARIgWQuQ2AAJkKwFSGyABEjWAiQ2QAIkawESGyABkrUAiQ2QAMlagMQGSIBk\nLUBiAyRAshYgsQESIFkLkNgACZCsBUhsgARI1gIkNkACJGsBEhsgAZK1AIkNkADJWoDEBkiA\nZC1AYgMkQLIWILEBEiBZC5DYAAmQrAVIbIAESNYCJDZAAiRrARIbIAGStQCJDZAAyVqAxAZI\ngGQtQGIDJECyFiCxARIgWQuQ2AAJkKwFSGyAJAPSmtcGjt0cv9IppC+eGfKxhd0AiQ+Q2DwJ\naXp9Ijr827i1DiHdnR8c1rnEdD9A4gMkNi9CWtOIQp0at9oZpPHhWfS46Y6AxAdIbF6ENCry\nvU9db4/pntuddFhk1tEW7glA4gIkNi9CeobE18jCPQFIXIDE5kVIUyPf+4FRk2P6aMpkB10U\nGdbKwj0BSFyAxOZFSCWtwt/7veJWO/sZaXGt8LDppjsCEh8gsXkRkvZzxxzKv7Uobq3DV+0+\naE5UZ7T5foDEB0hsnoSkaRu/Svg1kvNfyA6lRy3sBUh8gMTmUUjJcgxpZsKzxGQBEh8gsakA\n6QdqY2EvQOIDJDYVIG2pcpKFvQCJD5DYVICkHVDfwk6AxAdIbEpAOj2wyXwnQOIDJDYlIHWk\nxeY7ARIfILEpAek2etd8J0DiAyQ2JSANoZfMdwIkPkBiUwLSOHrAfCdA4gMkNiUgzaEbzHcC\nJD5AYlMC0kq6wHwnQOIDJDYlIGkFzc33ASQ+QGJTA9Jhtcz3ASQ+QGJTA9K/aK3pPoDEB0hs\nakC6hj433QeQ+ACJTQ1Id9PbpvsAEh8gsakB6XkaaroPIPEBEpsakCbSXab7ABIfILGpAekL\n6my6DyDxARKbGpA2UEvTfQCJD5DY1ICk7Xew6S6AxAdIbIpAOia/1GwXQOIDJDZFIF1EK8x2\nASQ+QGJTBFI3+sRsF0DiAyQ2RSA9SGPMdgEkPkBiUwTSqzTYbBdA4gMkNkUgTadbzHYBJD5A\nYlME0hJqZ7YLIPEBEpsikDbnxp9IMyFA4gMkNkUgaY32N9sDkPgAiU0VSC1yE88TExsg8QES\nmyqQ2tISkz0AiQ+Q2FSB1Ic+MNkDkPgAiU0VSI/TayZ7ABIfILGpAmk0PWSyByDxARKbKpA+\npu4mewASHyCxqQJpOV1isgcg8QESmyqQSvOPM9kDkPgAiU0VSNqBdUx2ACQ+QGJTBtLZtIHf\nAZD4AIlNGUhX0UJ+B0DiAyQ2ZSD1o8n8DoDEB0hsykB6hl7gdwAkPkBiUwbSBLqH3wGQ+ACJ\nTRlI8+k6fgdA4gMkNmUgrabW/A6AxAdIbMpA0modzm8HJD5AYlMH0pEF/HZA4gMkNnUgnUe/\nsNsBiQ+Q2NSB1JXmsdsBiQ+Q2NSBdB+9yW4HJD5AYlMH0jB6it0OSHyAxJYZSH84aa+jPxVt\nOt3Jbt+u/+PuP2DS37ukjv9jT5nc+Tu2Sh3/t75T6ny33z5m7TD/9vlLPKTtTipz9KeiLaXO\n7Pbd+k53/wGTdu6ROn57mbN71XK7d0kdv0OXff/IHW/l20c8JEcPni6f2m0KnMFux1M7Pjy1\nY1PnZyStblN2MyDxARKbQpBOqLKF2wxIfIDEphCky2gptxmQ+ACJTSFIPelDbjMg8QESm0KQ\nHqGR3GZA4gMkNoUgjaBB3GZA4gMkNoUgzaSbuc2AxAdIbApB+oHacJsBiQ+Q2BSCtCXvJG4z\nIPEBEptCkLQDGnBbAYkPkNhUgnRaoIjZCkh8gMSmEqSO9A2zFZD4AIlNJUi30bvMVkDiAyQ2\nlSANoZeZrYDEB0hsKkH6Lz3AbAUkPkBiUwnSHLqB2QpIfIDEphKklXQBsxWQ+ACJTSVIWkFz\nZiMg8QESm1KQDt2H2QhIfIDEphSkc2ht6o2AxAdIbEpBuoY+T70RkPgAiU0pSP+md1JvBCQ+\nQGJTCtJzNDT1RkDiAyQ2pSBNpLtSbwQkPkBiUwrSF9Q59UZA4gMkNqUgradWqTcCEh8gsSkF\nSdv34NTbAIkPkNjUgnR0fmnKbYDEB0hsakG6iFak3AZIfIDEphakm+jTlNsAiQ+Q2NSCNIDG\nptwGSHyAxKYWpFdpcMptgMQHSGxqQZpOt6TcBkh8gMSmFqRvqX3KbYDEB0hsakHanHNqym2A\nxAdIbGpB0hrun3ITIPEBEptikFrkbk61CZD4AIlNMUiF9F2qTYDEB0hsikHqTTNSbQIkPkBi\nUwzSY/Raqk2AxAdIbIpBGk0Pp9oESHyAxKYYpI+oR6pNgMQHSGyKQVpOl6TaBEh8gMSmGKTS\n/ONSbQIkPkBiUwySdmCdVFsAiQ+Q2FSDdBZtTLEFkPgAiU01SFfSVym2ABIfILGpBqkfTU6x\nBZD4AIlNNUjP0IsptgASHyCxqQZpPN2TYgsg8QESm2qQ5tN1KbYAEh8gsakGaTW1TrEFkPgA\niU01SFqtI1JsACQ+QGJTDtKR1VNsACQ+QGJTDlJrWpV8AyDxARKbcpC60rzkGwCJD5DYlIN0\nH72VfAMg8QESm3KQhtHTyTcAEh8gsSkHaQr1S74BkPgAiU05SIuoU/INgMQHSGzKQdoUODP5\nBkDiAyQ25SBpdZsmXw9IfIDEph6k46tsSboekPgAiU09SJfR0qTrAYkPkNjUg9SDZiVdD0h8\ngMSmHqSBNCrpekDiAyQ29SC9ToOSrgckPkBiUw/STLo56XpA4gMkNvUgfU9tkq4HJD5AYlMP\n0pa8k5KuByQ+QGJTD5LWpEHS1YDEB0hsCkI6LVCUbDUg8QESm4KQOtA3yVYDEh8gsSkI6VZ6\nL9lqQOIDJDYFIQ2hl5OtBiQ+QGJTENJ/aUCy1YDEB0hsCkKaTTcmWw1IfIDEpiCklXRhstWA\nxAdIbApC0gqaJ1sLSHyAxKYipENrJ1sLSHyAxKYipHNobZK1gMQHSGwqQupMC5KsBSQ+QGJT\nEdK/6Z0kawGJD5DYVIT0HP0nyVpA4gMkNhUhTaT+SdYCEh8gsakIaQF1TrIWkPgAiU1FSOup\nVZK1gMQHSGwqQtL2PSTJSkDiAyQ2JSEdXbU0cSUg8QESm5KQLqSfE1cCEh8gsSkJ6Sb6NHEl\nIPEBEpuSkAbQ2MSVgMQHSGxKQnqFhiSuBCQ+QGJTEtJ7dGviSkDiAyQ2JSF9S+0TVwISHyCx\nKQmpKOfUxJWAxAdIbEpC0ho2SVwHSHyAxKYmpJNzixPWARIfILGpCamQvktYB0h8gMSmJqTe\nNCNhHSDxARKbmpAeo9cT1gESHyCxqQlpFD2csA6Q+ACJTU1IH1GPhHWAxAdIbGpCWkaXJqwD\nJD5AYlMTUkn+8QnrAIkPkNjUhKQ1q5OwCpD4AIlNUUhn0cb4VYDEB0hsikK6kr6KXwVIfIDE\npiikfjQlfhUg8QESm6KQnqYX41cBEh8gsSkKaTzdG78KkPgAiU1RSJ9Rl/hVgMQHSGyKQlpF\nreNXARIfILEpCkmreUT8GkDiAyQ2VSEdWSN+DSDxARKbqpBa06q4NYDEB0hsqkLqQp/FrQEk\nPkBiUxXSvfRW3BpA4gMkNlUhDaOn49YAEh8gsakKaQr1i1sDSHyAxKYqpK/oyrg1gMQHSGyq\nQtoUODNuDSDxARKbqpC0us3iVgASHyCxKQvp+PyS2BWAxAdIbMpCupSWxa4AJD5AYlMWUg+a\nFbsCkPgAiU1ZSANpVOwKQOIDJDbhkKb37NB7TvnyznG9OvWdskfXBxWGetlLkF6nx2JXABIf\nILGJhjSr/ZRl49suilx56frFW+Z3mqDr9z/2Y7BNXoI0g3rHrgAkPkBiEwyprPuI4OVT/SNX\nrpwYvHyht673Gxm7m6ObKhbS99QmdgUg8QESm2BImwp/DF7OLdwahtRpSvDylSCkXm95DtKW\nvJNjVwASHyCxCYb0daEWvFxRuCp8bUTPDfqqLu/qetcpnoOkNWkYex2Q+ACJTTCkeeHHovXh\nxyVd3/tsYfvC0LO6Tk/2v7LX2J2hdS936dKlz24nlTn6Uyk7M/BPzPW9+h6x/4G49gi+/fGV\n6XLn75V89+h7pc7fLfvuMf/22eUY0pjr56/99LrJelnn/gtWTOk0NLRuQIsWLS4wnZOGOtOa\nTN8EpFR7o0vmkBYXlgYvlxeGv0dL284LXn7QcXtk2+TCv4zdHD14Cn5qdyu9F3MdT+348NSO\nTfBTu+LC74OXH7fbEbryQ9jTt4UbI9u+LVzrJUhD6JWY64DEB0hson+PdPPw4MWgAeHlosL5\nwcv3CrdtGrwhuPBWu+1egjSWBsRcByQ+QGITDWl2+0lLR7UN/og04x5dH9h9cfHCLs/pu3r1\nXrBi0hUVv0xydFMFQ5pNN8ZcByQ+QGIT/hahGT3a9/0i+HVMO13f+nrX9jeOCD4OlTxzffue\n0yt+2HJ0UwVD+pkujLkOSHyAxKbsm1a10mpHx1wHJD5AYlMXknZI7ZirgMQHSGwKQzqH1lW+\nCkh8gMSmMKTOtKDyVUDiAyQ2hSH1p4mVrwISHyCxKQzpP/SfylcBiQ+Q2BSGNJH6V74KSHyA\nxKYwpAXUufJVQOIDJDaFIa2ncypfBSQ+QGJTGJJW+5DK1wCJD5DYVIbUvGpppWuAxAdIbCpD\nupB+rnQNkPgAiU1lSDfS7ErXAIkPkNhUhjSAxla6Bkh8gMSmMqRXaEila4DEB0hsKkN6j26t\ndA2Q+ACJTWVI31CHStcAiQ+Q2FSGVJRzaqVrgMQHSGwqQ9IaNKl0BZD4AIlNaUgn5xZXXAEk\nPkBiUxpSG/q+4gog8QESm9KQetOMiiuAxAdIbEpDeoxer7gCSHyAxKY0pFE0sOIKIPEBEpvS\nkGZRj4orgMQHSGxKQ1pGl1ZcASQ+QGJTGlJJ/vEVVwCJD5DYlIakNatbsQxIfIDEpjakM2lj\ndBmQ+ACJTW1InWhRdBmQ+ACJTW1I/WhKdBmQ+ACJTW1IT9Ow6DIg8QESm9qQ3qJ7o8uAxAdI\nbGpD+oy6RJcBiQ+Q2NSGtIpaR5cBiQ+Q2NSGpNU8MroISHyAxKY4pCNqRBcBiQ+Q2BSH1JpW\nG4uAxAdIbIpD6kKfGYuAxAdIbIpDupfGG4uAxAdIbIpDepGeNhYBiQ+Q2BSHNIX6GYuAxAdI\nbIpD+oquNBYBiQ+Q2BSH9GvgLGMRkPgAiU1xSFqdZsYSIPEBEpvqkI7LLylfAiQ+QGJTHdKl\ntKx8CZD4AIlNdUg96KPyJUDiAyQ21SE9TKPLlwCJD5DYVIf0Oj1WvgRIfIDEpjqkGdS7fAmQ\n+ACJTXVI31Fh+RIg8QESm+qQtuSdXL4ESHyAxKY6JG3/huULgMQHSGzKQzo1pyiyAEh8gMSm\nPKT29G1kAZD4AIlNeUi30PTIAiDxARKb8pAG0yuRBUDiAyQ25SGNpQGRBUDiAyQ25SF9SjdF\nFgCJD5DYlIf0M10YWQAkPkBiUx5SabWjIwuAxAdIbMpD0g7ZN/IVkPgAiQ2QWtG68FdA4gMk\nNkDqTF+EvwISHyCxAVJ/mhj+Ckh8gMQGSP+h58JfAYkPkNgA6R36d/grIPEBEhsgLaBrwl8B\niQ+Q2ABpHZ0T/gpIfIDE5grSX8t+z35IWu1Dw18AiQ+Q2FxAmteC6ENdL/w0yyE1r1oa+gJI\nfIDE5hzSovxaFwchlTbK/ya7IV1AK0NfAIkPkNicQ7q82a/FoUekkmbtshvSjTQ79AWQ+ACJ\nzTmkukP0MCR98H7ZDWkA/Tf0BZD4AInNOaS8N8shja6S3ZBepiGhL4DEB0hsziEdMKAc0k0H\nZjekd+m20BdA4gMkNueQeu33bQjSbw9Q3+yG9A11CH0BJD5AYnMOqbhp3sl04olVqdmW7IZU\nlHNa6Asg8QESm4vfI5X0qUtE9fqU2HbkLUhagyahS0DiAyQ2V+9sKNuyyv6jkfcgnZRbrAGS\nWYDE5hzS5/9XvrBocpZDakPfa4BkFiCxOYdE08oXns3y3yNpN9NMDZDMAiQ2h5BWffghPfxh\nuKmnVc9ySINohAZIZgESm0NIQ6hSnbIc0kgaqAGSWYDE5vSp3eb3qOuQcE9P3pXlkGZRDw2Q\nzAIkNhdvWl1YvvBPcZZDWkqXaYBkFiCxCfiE7FuNsxxSSf7xGiCZBUhsLiBpw/rfEezmJrWy\nHJLWtK4GSGYBEptzSOvql7/WkPdotkM6M/ArIJkFSGzOIV1X66XZ9Mas+5rMsu3Ia5A60SJA\nMguQ2JxDanafvp0W6vp3dRZkO6Q7aCogmQVIbM4hVXld30mfBRceOj/bIT1FwwDJLEBicw6p\nzmO6XnN0cGFC7WyH9BbdB0hmARKbc0jtmszVzzzlb13v2SDbIc2jroBkFiCxuTgcV7UW+ihq\n2uFEui7bIf1C5wGSWYDE5uL3SN+8opfdX0CBtlq2Q9JqHAlIZgESm9t3Nmxft802I+9BOqIG\nIJkFSGw4iH6o1rQakEwCJDYXkPZ8MXlCpKyHdB3NBySTAInNOaRvDop+ICnrId1D4wHJJEBi\ncw7pjH3veGVEpKyH9CI9A0gmARKbc0g1piX4yFpIk6kfIJkESGzOITX81j+QFtJVgGQSILE5\nh3Tb/f6BtJHOAiSTAInNOaSthVe+OefzcFkPSatzICCZBEhsLt4i1NQ/r9ppx+WXABIfILE5\nh3RatasGDIyU/ZAuoeWAxAdIbM4hVRtn2493IfWgjwCJD5DYXJz68jsfQXqYRgMSHyCxOYfU\n4zEfQXqNHgckPkBicw7p9wv6fvLTqnDZD+kD6gNIfIDE5uJsFOSjV+2+o0JA4gMkNueQrrmh\nu1H2QyrOawFIfIDEhs8jRdq/ESDxARKbM0jFwXXFFfkA0qk5vwMSGyCxOYNEF/vsZyStPS0H\nJDZAYnMG6eohwf9V5ANIt9BHgMQGSGz4GSnSYBoFSGyAxIazmkcaQ48CEhsgseGs5pE+pZ6A\nxAZIbDireaQVdCkgsQESG85qHqm02nGAxAZIbDireXkH7wtIbIDEJuCs5g5ydFPlQmpFfwES\nFyCxuXn5e0/wfzu+WlLmC0id6SdA4gIkNueQ9vQN/my07hCiln/7AdJd9BEgcQESm3NIQ+gu\nXb8s0KdvzhA/QBpKIwCJC5DYnEM6tqOubwp01/VuJ9qG9LeT9jr6U1abSg9vl/of2LZb6vi/\n95bJnb9L7t2zVd8ldf7fku+enfo2s13+SQ6p5nBdH0mf6vrL+9qG9I+T9jr6U1ZbTDdtl/of\n2LZb6vh/9pbJnb9rh9Tx23TJ94/su0c3/fbZmhxSrSCka2rs1PWXatiG5OjBU+5Tu3V0AZ7a\nceGpHZuLp3bX6ltqdggu9DzSD5C0fY4AJC5AYnMOaTCduT/N0/Wx+Xf7AtIxBab3hKsAiU1d\nSNtvLKj9YvBr4+N+i3eSlZAuprVS5wMSm7qQjBbutu3Ik5C60+dS5wMSm6KQtIqX8vSP7R8p\n0tFNlQxpII2XOh+Q2BSFRHeELgd+FLq8ww/HbNC0N+gZqfMBiU1pSNTfR5BmUT+p8wGJDZD8\nAmkpdZI6H5DYAMkvkH4LnCF1PiCxAZJfIG1teIDU+YDEBki+gXRqXrHM+YDEBki+gdSRfpA5\nH5DYAMk3kPrRTJnzAYlNVUinh07CTGeGLk/3CaShNELmfEBiUxVSTP6ANJEekTkfkNgUhTQu\nJn9AWkg9Zc4HJDZFIbnM0U2VDamILpM5H5DYAMk3kPbmnyBzPiCxAZJvIOnN6smcD0hsgOQf\nSGcFfpU4H5DYAMk/kK6iRRLnAxIbIPkH0p00VeJ8QGIDJP9AGkrDJM4HJDZ1IZ0x/A+fQXqb\n7pM4H5DY1IWURwXXfLzXT5C+oK4S5wMSm7qQ/vfa+bnUdMAq/0BaT+dJnA9IbOpCClb6ausc\navnGXz6B9GeNoyTOByQ2pSEF2/zcCVS990p/QDq8psT5gMSmOKRtk64ooGZVqjxi77R9jm6q\nfEjn0hp58wGJTWlIC3rsQwXXzdU3XkED/QDpOpovbz4gsakLaePjhxOd9NLvoeWyCxr4AdI9\nNEHefEBiUxdSDtXu/Y1x5aWAHyC9IPNgq4DEpi6kVmO2VVxZNdUPkCbLPNgqILGpC0nXl2mh\niyW2CHka0kK6St58QGJTF9KubjQ3+GUY3bjHL5A20tny5gMSm7qQhtLla4Nffr6anvcLJK3O\ngfLmAxKbupCOa1O+cNlhvoF0bH6JtPmAxKYupIKh5QtPV/ENpEtoubT5gMSmLqSGt5Uv9G3o\nG0jd6WNp8wGJTV1I3arPCH3Z9XpeV99AeohGS5sPSGzqQtrcmJpd2KZlHWq8wTeQXqPHpc0H\nJDZ1Ielbetclovo9N9l25FlIH1AfafMBiU1hSLpeVrT6H13/p9g3kJZQW2nzAYlNaUiR3mrs\nG0jFuS2kzQckNoUhacP63xHs5ia1fANJa9xI2nxAYlMX0rr65Sd1yXvUP5BOzSmSNR+Q2NSF\ndF2tl2bTG7PuazLLtiPvQmpHS2TNByQ2dSE1u0/fTgt1/bs6C/wD6RZ6X9Z8QGJTF1KV1/Wd\n9Flw4aHz/QNpML0qaz4gsakLqc5jul5zdHBhQm3/QBpDD8qaD0hs6kJq12SufuYpf+t6T3vH\na/A0pE+om6z5gMSmLqRF1Vroo6hphxPpOv9AWkEXyZoPSGzqQtK/eUUvu7+AAm01/0AqrXqM\nrPmAxKYwpHDb121LXJm9kLSD95M1H5DY1IX03jIHgjwPqSWtlzQfkNjUhVTtST9Cupq+lDQf\nkNjUhXTBpQ5PjuRpSHfRREnzAYlNXUhbrrlk/DerwvkI0lB6XtJ8QGJTFxJV5CNIb9PdkuYD\nEpu6kK7u2q17eT6C9DldI2k+ILGpC8lNjm5qWiCto39Jmg9IbIDkL0jaPodJmg9IbOpCOj9a\nKz9Bal4gaT4gsakLKfpSQ639/QTpfFopZz4gsakLaXe4rcv+fc6ffoJ0A82RMx+Q2NSFFO2+\n3n6C9ACNkzMfkNgASV/oq6d2L9GTcuYDEhsg6R9X9xOkd+l2OfMBiU1dSL9HKp174jF+grSY\nOsqZD0hs6kKqeIfQOD9BKgqcLmc+ILGpC+nySO37fGrbkZchafUPkDMfkNjUheQmRzc1TZBO\nzNsiZT4gsakMaVnoYA3LlvgMUhv6Qcp8QGJTF9KubjQ3+GUY3bjHV5B60Uwp8wGJTV1IQ+ny\ntcEvP19Nz/sK0qP0hpT5gMSmLqTj2pQvXHaYryC9QY9ImQ9IbOpCKhhavvB0FV9B+pB6SpkP\nSGzqQmp4W/lC34a+gvQjXS5lPiCxqQupW/UZoS+7Xs/r6itIJVVOkDIfkNjUhbS5MTW7sE3L\nOtR4g68gaU3rSZkPSGzqQtK39K5LRPV7brLtyNuQzgj8KmM+ILEpDEnXy4pW/2NfkdchXUFf\ny5gPSGwqQ/LnOxu022majPmAxKYuJL++s0F7kobJmA9IbOpC8us7G7Q36X4Z8wGJTV1Ifn1n\ngzaXrpcxH5DY1IXk13c2aL/QeTLmAxKbupD8+s4GTatxlIz5gMSmLiS/vrNB0w6vKWM+ILGp\nC8m372zQzqU1EuYDEpu6kHz7zgbtWpovYT4gsSkMKfrOhl99BulumiBhPiCxKQ0p1O53L8/1\nGaQX6FkJ8wGJTXFIax5oTHSczyBNojslzAckNpUh7Xz7ggDlXjHPtiOPQ1pIV0uYD0hs6kL6\n6a56RA0dHGbV85A20tkS5gMSm6KQto1tSVS965xfaJL/IGl1DpIwH5DYFIVUmwKtRvyl66t8\nCenY/FLx8wGJTVFIlHPrqtBXf0K6mH4SPx+Q2BSF9O/gz0dnjfjTp5C608fi5wMSm6KQ9J3j\nzw3+kNTlDV9CeohGi58PSGyqQgq2sn/wYYl6lPoP0nB6Qvx8QGJTGJKu73jrX0RVb/reb5De\np77i5wMSm9KQgv18V12yf9okRzc1fZCWUFvx8wGJTXVIoYelc/wGaXPuKeLnAxIbIDnJ0U1N\nHyStcSPx8wGJDZD8COmUnCLh8wGJDZD8CKkdLRE+H5DYAMmPkPrS+8LnAxIbIPkR0hM0XPh8\nQGIDJD9CGk0PCp8PSGyA5EdIn1A34fMBiQ2Q/AjpJ7pY+HxAYgMkP0IqrXqs8PmAxAZIfoSk\nHbSf8PmAxAZIvoTUktaLng9IbIDkS0hX05ei5wMSGyD5EtKdNEn0fEBiAyRfQnqWnhc9H5DY\nAMmXkN6mu0XPByQ2QPIlpPl0rej5gMQGSL6EtJbOFT0fkNgAyZeQtFqHiZ4PSGyA5E9IzQtE\nzwckNkDyJ6TzaaXg+YDEBkj+hHQ9zRU8H5DYAMmfkO6ncYLnAxIbIMU1vWeH3nPKl3eO69Wp\n75Q9cWuzAtJL9KTg+YDEBkixzWo/Zdn4tosiV166fvGW+Z0mxK3NCkjT6HbB8wGJDZBiKus+\nInj5VP/IlSsnBi9f6B27NjsgfU1XCJ4PSGyAFNOmwh+Dl3MLt4YhdZoSvHyld+za7IBUFDhd\n8HxAYgOkmL4u1IKXKwrDZyHTR/TcoK/q8m7c2qyApNVvKng+ILEBUkzzwo8668OPQLq+99nC\n9oUjY9c+3rp16w5lTtId/Smn80/J2y11vvB02feP5GTf/szf/XscQxpz/fy1n143OWbt0LZt\n23bd4yTd0Z+y3F59b+Wr7fkdWv4AACAASURBVGmD4PllYufFVyb5/inba76Pi/bqku8f2XeP\nbnr/7LYBaXFh6LxjywvXhK6Utp0XvPyg4/aYtaEcPXim96ldL5opdj6e2rHhqV1MxYWhs459\n3G5H6MoPYTnfFm6MWZslkB6lN8TOByQ2QIrt5uHBi0EDwstFhfODl+8VbotZmyWQ3qBHxc4H\nJDZAim12+0lLR7UN/jA04x5dH9h9cfHCLs9VWps9kGZSL7HzAYkNkOKa0aN93y+CX8e00/Wt\nr3dtf+OI7ZXWZg+kH+lysfMBiQ2QnOTopqYX0pYqJ4qdD0hsgORTSFrT+mLnAxIbIPkV0umB\nTULnAxIbIPkV0hX0tdD5gMQGSH6FdDtNEzofkNgAya+QnqSXhM4HJDZA8iukcXS/0PmAxAZI\nfoU0l64XOh+Q2ADJr5BW0vlC5wMSGyD5FZJWvbnQ+YDEBki+hXRYTaHzAYkNkHwL6VxaI3I+\nILEBkm8hXUvzRc4HJDZA8i2ku+ltkfMBiQ2QfAvpeXpW5HxAYgMk30KaRHeKnC8b0sa14mYV\nL1qVsA6Q2ADJKAHSl3S1yPlyIb17GFGTMWJmlQ6oTnTu4ri1gMQGSEYJkDZSS5HzpUJaWINC\nfSBk2KDwrCM2xK4FJDZAMkqApO13kMj5UiFdF/7ep+MnC+idCEp6LvY/AUhsgGSUCOnY/FKB\n86VCOoPEd2vsfwKQ2ADJKBHSxfSTwPlSIV0e+d5vcLuA+uREhg2M/U8AEhsgGSVC6kafCJwv\nFdKbke99MSdH6xSeVWNJ7FpAYgMko0RID9JogfPlvmrXK/S930XMU9HVpwVnVYn/uwMSGyAZ\nJUIaTk8InC8X0i3UZdgcUcNKJz/WsOrquJWAxAZIRomQ3qe+AudLhfRrnX3/EvrOhnvohbg1\ngMQGSEaJkJZQO4HzpUL6D90h9i1CiwOt4tYAEhsgGSVC2px7isD5UiEdnbtE8HvtTs75MXYF\nILEBklEiJK1RY4HzZUJ6l9qIftPqEzQodgUgsQGSURJIp+RuFjdfJqQ29K5oSCvyjo9dAUhs\ngGSUBFJbWpJsT2dJhPRd3lGlwj9G0Zo+j7kOSGyAZJQEUl96X9x8iZDuoKHiP4/0Et0Vcx2Q\n2ADJKAmkJ2i4uPnyIBXVq71BPKQN1ZvG/H4XkNgAySgJpNH0kLj58iC9GP59l/BPyLaPPR01\nILEBklESSB9Td3Hz5UE6MecbTQKkN2P/9oDEBkhGSSD9RBeLmy8N0ozIrRQOaXOdupVftAQk\nNkAySgKpNP9YcfOlQWpPk0JfxB/85EaaUOkaILEBklESSNpBdcTNlwVpWZVDwy8KiIf0AV1R\n6RogsQGSUTJIZ9N6YfNlQepPT4W/iodU2rSg0l8fkNgAySgZpKtpobD5kiAVNagZOQ6XhOPa\n3VH55X9AYgMko2SQ7oz8+CEkSZBepl6RBQmQFtAFFVcAiQ2QjJJBejbhUznOkwTp5ED5g6aM\nI60enVdx1ApAYgMko2SQJtDdwubLgTQrejo0GZAernQUCEBiAySjZJDm07XC5suB1Cl6pH8Z\nkH7MOTW6DEhsgGSUDNIaOlfYfCmQVuQfXFK+KOUg+mfRImMRkNgAySgZJK3W4cLmS4F0b8Xx\nWaRA+k/Fqd0BiQ2QjJJCOqpA2HwZkDY3rhE9q6AUSKvyo/9PAkhsgGSUFNJ59Iuo+TIgvU7d\nostyzo90Gc0uXwIkNkAySgrpeporar4MSKdWOjunHEijqE/5EiCxAZJRUkj305ui5kuANKfy\nayFyIG3ap+GWyBIgsQGSUVJIwwQdTluTAqlzZeaSTn3ZmaZGFgCJDZCMkkKaRreLmi8e0sqq\nTbdUXJMEabLxqzRAYgMko6SQvo75JIGrxEMaQI9WuiYJUknjWr+GFwCJDZCMkkIqCpwhar5w\nSMVNCiq/pCjrrOa9y8/JAUhsgGSUFJJWr6mo+cIhjaLrK1+VBelTujz8FZDYAMkoOaQTqmxJ\nstZJwiGdSZ9VvioLknZkfviBD5DYAMkoOaTL6ccka50kGtL8wNkx16VBui9yWmZAYgMko+SQ\netKHguaLhtQl7nyC0iAtjogFJDZAMkoO6RF6Q9B8wZBWVT+gOGaFNEjaKTnfa4BkEiAZJYf0\nRsxLzG4SDGkgPRi7Qh6kIeETnAMSGyAZJYc00zgkguvEQipplr8ido08SD/nhQ7vB0hsgGSU\nHNIP1EbQfLGQxiZ8dlceJO280HtjAYkNkIySQ9pS5URB88VCakWfxq2RCOkV6gdIJgGSUXJI\n2gH1Bc0XCmlB4PT4VRIhbajRtBSQ+ADJKAWk0wObxMwXCunGxBcTJULSOtIMQOIDJKMUkDrS\nYjHzRUJaXaNRwtltZUIaTzcBEh8gGaWAdBu9K2a+SEiPVRyTJJpMSMX19isCJDZAMkoBaQi9\nJGa+QEilh+b/lLBSJiStG70FSGyAZJQC0jh6QMx8gZDG01WJK6VCmkkdAIkNkIxSQJpDN4iZ\nLxBSa/oocaVUSKUHFpQAEhcgGaWAtDJ6cG2XiYO0KOeUJGulQtLupDcAiQuQjFJA0gqai5kv\nDlKPyqctiiYX0pd0ISBxAZJRKkiH1RIzXxikdfvUK0qyWi4k7di81VLnA5LfIf2L1gqZLwzS\nkOTnmpEM6RF6Rup8QPI7pGvocyHzRUEqPbxK0g/tSoa0NDfZD2biAiS/Q7o7egYid4mCNJE6\nJl0vGVLwkfkrmeMBye+QnqehQuaLgnQhzUy6XjakV+hemeMBye+QJtJdQuYLgrQ457jkG2RD\n2lJwsMzxgOR3SF/S1ULmC4LUm4Yl3yAb0ra29InE8emHVDJ+4IuJ77Ry2MoRT44vNtlHcUgb\nqKWQ+WIgbdyvToqPdUiH9CbdLHF82iGtPImIao1Ouq/tJu4XHNb8B34nxSFp+4l5SiMG0jOh\nD6smTTokrXYDUQfLTFLaIbWlUDWXiJj9c53wsHP4vVSHdEzVUhHzhUAqbZ73fYpN0iH9dR1N\nkjc+3ZDW5Ya/96nV7QK6MDKLUv3bRFId0sUk5Jm0EEhTqTDVJvmQplFneePTDel7khB/ekfV\nIXUT80O2EEiX03upNsmHFD3Di4zSDWnzPpHv/Xs+FdDjkVn5/HtgVIf0II0RMV8EpCW5qd9B\nKx+S1pdGShuf9p+RBoW/95sLOSJH8WnhYXfye6kO6VUaLGK+CEi30vMpt6UB0hy6VNr4tEMq\nrksUuEjIaw2atrxtDhX0N3n9W3VI79MtIuYLgPRrnX03ptyYBkjaUfkrZY1PO6RX6apv1gmc\nv9r021N1SEuonYj5AiA9R7el3pgOSA8IertUktINacvhuQtFjsc7G4xSQtqce6qI+QIgHZP7\nbeqN6YC0JHCmrPHphjQ82XEvXARIRikhaY0ai5jvHtJ0uozZmg5I2qkBQT9UJJRmSCXNxT4g\nAVK01JBa5CYcjdFB7iEV0lRma1ogPUUPSRqfZkiv05VixwOSUWpIbUnE/w27hrS0ypHcWyzS\nAmlllSMljU8vpOAD0pdixwOSUWpIfegDAfNdQ+rHf9g7LZC0C0NneJFReiGNoCsEjwcko9SQ\nHqfXBMx3C6mofu313Pb0QBpOd8gZn1ZIpc1zRP//ASAZpYY0WsgPBm4hDaM+7Pb0QNpY44AS\nKePTCmlkio/ruwiQjFJD+pi6C5jvFtKJAf6YCemBpHWi96WMTyek0qOFPyABUrTUkJbTJQLm\nu4Q0ky7id0gTpLdFHcI5rnRCGkUdhI8HJKPUkErzjxUw3yWkDjSR3yFNkIrr75vs8JSuSyOk\n0mPEPyABUrTUkLQD6wiY7w7SsvxDTH42SRMkrQeNkzE+jZBGi3nPV2yAZMRAOps2uJ/vDtK/\naYjJHumC9KGMb8N0Qio9JvCZ+PGAZMRAuooEvJ3EFaSiBjXNDpycLkjaIVXXSBifPkhjqK2E\n8YBkxEDqR5Pdz3cF6VXqYbZL2iD1T3VAMFelDVLpiTIekAApGgPpGXrB/XxXkFoETN/RkjZI\ni+hcCePTBmkstZExHpCMGEgT6B73891Amk2tTfdJGyTthJykR/F3V9ognRiYJ2M8IBkxkObT\nde7nu4F0FY033Sd9kAbR4+LHpwvSODkPSIAUjYG0xsIDgmkuIP1c9SDz9+WkD9Ky3JPEj08X\npJMCn0oZD0hGDCSt1uHu57uAdJ+Vh4D0QdLOEfEqZlxpgvQm++FIFwGSEQfpqAL3851DKt6/\nYJX5XmmE9GLycwa6Kk2QTpJ1JgBAMuIgnUe/uJ7vHNIIusnCXmmEtLbaQUKO4ly59EAaL+2A\nYoBkxEHqSu5f6XEO6TRLH6ZLIyStkD4SPT49kE6mjyWNByQjDtJ99Kbr+Y4hzTU7y0GkdEIa\nSz1Fj08LpAl0sazxgGTEQRpGT7me7xjSNfRfK7ulE1JRnXpmZ9WyW1ognSbtAQmQonGQpgr4\ngLVTSCurNbV0WqJ0Qgo+1zX5UIft0gHpHbPPdLkIkIw4SIuok+v5TiE9SAMt7ZdWSO8JPrxi\neiCdLv5Hu2iAZMRB2hQ4w/V8h5C2NK1m7XjbaYVU2rS6gE+WVC4NkCbSBfLGA5IRB0mr19T1\nfIeQRlNXazumFZJ2G70udnwaIJ1Os+SNByQjFtIJVVyfPtUhpLPJ4pv+0wtpnujXv+RDmkTn\nSxwPSEYspMtoqdv5ziB9HjjL4p7phaQ1ryL2DC/yIZ1BMySOByQjFlJP+tDtfGeQupLVE9in\nGdIA/rivtpMO6WMR7zxOHSAZsZAecX/SR0eQVldvbPUA/mmG9F3gdKHjpUM6R8iBp1MGSEYs\npBE0yO18R5AeoQFWd00zJO30AHOyJvvJhjRV7gMSIEVjIc2km93OdwKp5MD8FVb3TTekZ6wb\nt5JsSGdJOkKsESAZsZB+cP+5SieQxlFny/umG9Iv+UeIHC8Z0jSpL9lpgFQRC2lLFdcfCnUC\n6V82Pj2TbkjaxQLeEl+RZEhn0VyZ4wGpIhaSdkB9t/MdQPoiYOPstWmHNIJuFTheLqQZdE78\nWc0FB0hGPKTTAm6PeO0AUjc7bx9IO6RN+zRy/VvqiuRCaknTAckoo5A60mKX8+1DWleroQ29\naYekXU3vihsvFdIMahV/VnPRAZIRD+k219809iE9QffZ2Dv9kCZafRuglaRCakXvAVK0jEIa\nQi+7nG8bUulh+ctt7J5+SFsaCDzDi0xIM+ns+LOaCy8zkLY5qczRn7LcLn0ns3UiDXQ5f8ce\nm39gGl1jZ/e9zu5Vy+1OvHv60jvCxu/QdwubFV9rmiX922e3vsN0H/GQ/nLSXkd/ynI79G3M\n1s+pm8v5W3fb/AMX0Fw7u+8tsznfZjsT75651F7Y+H/0XcJmxfUpnRG8lH336FvNdvlbPCRH\nD54ZfWq30vWHwuw+tfs65wRb+6f/qZ2mHVp1tajxEp/anUvTNJ8+tXN0UzMKSSto7nK+XUg9\n6RVb+2cC0t30oqjx8iDNpPBv4wDJKLOQDt3H5XybkNbvU3eTrT+QCUhfBywdKcxK8iC1pimh\nL4BklFlI/yKzU+aZZBPSk9Tf3vxMQNJOEnaGF2mQPow8IAFStMxCuoY+dzffHqTSI/J+sDc/\nI5CecP/xkvKkQTqv/HSLgGSUWUj/pnfczbcHaRK1tzk/I5BW5B0vaLwsSJ8a71cEJKPMQnqO\nhrqbbw/SxbYPMJARSMEfQBaIGS8L0vnGoSwBySizkCbSXe7m24K0JPc4u/MzA2mY3R/lUiUJ\n0qeBU8qXAMkos5C+sPEZu6TZgtTX/pnDMwNpXYGgM7xIgnRh9NjKgGSUWUjrqZW7+XYgbdyv\njr3XvrVMQdLauT++Ujg5kGYHWhiLgGSUWUjavge7m28H0rPUz/b8DEEaRz2EjJcD6SJ621gE\nJKMMQzom391zGDuQjs5dYnt+hiBtrlPX6gHD2KRAmhM4IfqPBkhGGYZ0EVk+oE/SbECa5uRQ\nKxmCpN1Q8X/6bpIC6RKaEF0GJKMMQ7qJ3J1X3gaky+k9+/MzBel9Aae80eRAmhM4vuJZBCAZ\nZRjSABrjar51SN/lHeXgWWSmIJU2rb5ewHgZkC6ltyquAJJRhiG9SoNdzbcO6Xb6j4P5mYKk\n3UHDBYyXAGlu5QckQIqWYUjT6RZX8y1D+rVObScn8coYpAVCzt8lAdLlMafQBiSjDEP61va7\n32KzDOkFZ8eLyxgk7eg8dy/DhBMPaX7OcZWfIQOSUYYhbc6xcbTGJFmGdEKOo6PTZw7SQwLO\n+S4BUpvYs8EDklGGIWmN9nc13yqk9+lSR/MzB+l7l/8XE044pM9zjo15yQaQjDINqUWuq988\nWoXUNvKBTttlDpJ2ZuAb1+OFQyqksTHXAcko05AK6Ts38y1CWlrlCGfvoMggpKH0gOvxoiF9\nntO8JGYFIBllGlIfd6d8swjpTnra2fwMQlqVf7jr8aIhtY3/tR8gGWUa0uP0mpv51iAV1a/p\n8NgQGYSkXUpz3I4XDGlBzlGxD0iAFC3TkEbTw27mW4P0kuNTA2YS0kjq63a8YEjtE05iDUhG\nmYb0kbsPDFiDdFLgK4fzMwlJwBlexEL6IuEBCZCiZRrScrrEzXxLkD50/i6BTELSOtNUl+PF\nQupAo+JXAZJRpiGV5ts+jkLlLEG6wvmxijIKaTJd63K8UEhf5BwZ/4AESNEyDUk7sI6b+VYg\nLc8/JOEbwGoZhVTSuNav7sYLhdSR3khYB0hGGYd0Fm10Md8KpHtoiOP5GYWk3Zzww73NREJa\nlJv4gARI0TIO6Spa6GK+BUibG9dc43h+ZiF94uRDvZUTCakTjUhcCUhGGYfUr/zgt86yAGm4\nm9cFMwtJOyz/F1fjBUJalHdEkifIgGSUcUjPuDqJiQVIpwS+dD4/w5DupeddjRcI6cqkvzkH\nJKOMQxpP97iYbw5pNrV2MT/DkBYHWroaLw7S13mHJPulFiAZZRzSfLrOxXxzSFdXPsSA7TIM\nSWuRY/P0GbGJg3R18o++A5JRxiGtdvWIYQrp56pN3bw9INOQhtAjbsYLg7Q475DiZOsBySjj\nkLRaR7iYbwrpAXfnGso0pJ/zjnUzXhikzilOGQpIRpmHdGR1F/PNIBXvX+Dqda9MQ9LOo/ku\nxouCtDjv4KQPSIAULfOQzqNVzuebQRpJNzgfrnkA0isODlhekShI19DLyTcAklHmIXWlec7n\nm0E6gz5zPlzzAKQN1Zu6ODq6IEhL8g9K/oAESNEyD+k+Ny+rmUCa5/a0MRmHpHWgmc7HC4J0\nbcoTSwGSUeYhDXNz3CkTSNfFHavDdpmH9BZ1cz5eDKTUD0iAFC3zkKbSHc7n85BWFRzg8qNx\nmYdUXG+/IsfjxUDqkvpMh4BklHlIi9yceIGH9JC7z7FrXoCk3UTjHY8XAum7/ANTPSABUrTM\nQ9oUONP5fBbSlmbVVjofHc4DkGZQR8fjhUDqSi+k3AZIRpmHpNVt6nw+C2mMq3cfhfMApNJm\nBY7P8CIC0nf5TVM/twQkIw9AOr6K8x9kWEgtXZ7FTPMEJK1fincVWEgEpBu4d6ADkpEHIF1G\nSx3P5yAtCJzheK6RFyB9Qec5HS8A0vf5BzAvdgCSkQcg9aBZjudzkG6gkY7nGnkBknZs3k8O\nxwuAdCN7gjZAMvIApIEuvuEZSKurN3J/ZnBPQHrE8UEn3EPiH5AAKZoHII1w8QZtBtIgAQeh\n9wakpbmnOBzvHlI3GsptBiQjD0Ca6fiAwhykkoPynT4hqpQnIGln0yJn411DWlaVfUACpGge\ngPS9i2PlpIb0JnV2PLUib0B6ju5zNt41pO70LLsdkIw8AGlL3kmO56eGdC597HhqRd6AtKbq\nIc7Gu4W0rFoT/v1JgGTkAUhakwaO56eEtCgg4MyRXoGkXe7wN2JuIfUwO68UIBl5AdJpAcdv\ny0wJqbu78y4ZeQTSaOrtaLxLSKYPSIAUzQuQOpDjs6WmgrSuVkPn75mulEcgbard0NG7P1xC\n6mn6CRdAMvICpNvoXafzU0Ea7OpoeRV5BJJ2rbPj0bqDtLxaQ7OD+AOSkRcgDUl1RADzUkAq\nPazKj05HxuQVSFOdvQbpDlIv818EA5KRFyD9lwY4nZ8C0jt0hdOJsXkFUsn+js7w4grS8gLT\nByRAiuYFSLPpRqfzU0C6gD50OjE2r0DS+jp6H5UrSL0tvDMJkIy8AGml81NTJoe0OOd4pwPj\n8gyk2XSZg/FuIP1U0MD8QRCQjLwASSto7nR+ckg3O/+hKy7PQNKOynfwaV83kPrQE+Y7AZKR\nJyAdWtvp/KSQ1u9Td5PTgXF5B9L97McZUuQC0soaDSycShGQjDwB6Rxa63B+UkhP0V0OxyXk\nHUhLAmfZH+8C0i30uIW9AMnIE5CuoLccfto8EVLp19MPz3N1LpTKeQeSdmpgie3xziGtrFHf\nyrl9AcnIA5C23JxDdPRsR/MTIH1zBhE1dXy0kPg8BOlJB8cWcw7pVmsfEgMkIw9AupdC7e/o\nrBHxkIqODQ8T8QmKcB6C9HOVo22PdwxpZc06lv7PCJCMMg+puFb4e5+uGemg0eNjr98emRVY\nJuj2ewiSdqH9M7w4hnS7xROcAZJR5iGtIAm5OPB8TF6CNNz+sZ2dQlpZo94GSzsCklHmIRVV\ni3zvX/CQgwY+EXv9ynJI3wm6/V6CtKGG7TO8OIXUjwZa2xGQjDIPSesZ/tbfz9G7TON/Rtpw\nUHjYRU5mJctLkLRO9L7N8Q4hWf0JCZAq8gCkTYXBb/1GkxzNT3jVbs6hwWFn/+xoWJI8BWmC\n7fckOoTUz/ILhIBk5AFImjb/1UkOX7BO/D1S0bSXP3E2K1meglRc3+4ZXpxB+qVmnXUWdwUk\nI09Acp7pWc1d5ilIWnd60954Z5DupAet7gpIRoDE5i1IM6m9vfGOIK2ubfkBCZCiARKbtyBp\nh1RdY2t/R5D62/icJSAZARKbxyDdRS/Z2t8JpDW197P8gARI0QCJzWOQvqTWtvZ3Aunfdo6Z\nDkhGgMTmMUja8bnL7ezuANKafWuvtr43IBkBEpvXIA2y8rHVihxAupvut7E3IBkBEpvXIC3L\ntXWcdPuQ7D0gAVI0QGLzGiTtHPrKxt72Id1r78QXgGQESGyeg/SCrUPI2oa0dr997DwgAVI0\nQGLzHKS11Q628RZw25Dus3moZ0AyAiQ2z0HS2tg575NdSMEHpFW2/gAgGQESm/cgjaFe1ne2\nC+kButverQEkI0Bi8x6kov3qFVve2Sak9XVr2XtAAqRogMTmPUhaF5poeV+bkAZQf5s3BpCM\nAInNg5Depast72sP0oa6teweygmQjACJzYOQSprUtHLoxnD2ID1o/wi1gGQESGwehKTdSiOs\n7moL0oZ6NWwfpx+QjACJzYuQ5tHFVne1Bekh6mf7tgCSESCxeRGS1ryK1UcOO5CCD0j2jxkD\nSEaAxOZJSAPoWYt72oE00MEDEiBFAyQ2T0JaEjjD4p42IG2oV93BQcwAyQiQ2DwJSTvN6hle\nbEB6xP4BkTVAqgiQ2LwJ6Wmrx8uyDmlTw+orHNwSQDICJDZvQvol/0hrO1qH9Cjd5uSWAJIR\nILF5E5J2EX1maT/LkDY1cvSABEjRAInNo5Bet/j4YRnSY3SroxsCSEaAxOZRSBtr1p/8vYX9\nrEHaMGtawwJHD0iAFA2Q2DwK6au6RNTR/MQDliANrxMcdo6j2wFI0QCJzZuQNjW3eKZcK5A+\nrBoeNsHJDQGkaIDE5k1IY8rPlPuc6Sl2J75lehre0yLDWjq6/YBkBEhs3oT0uISz7jZzdPsB\nyQiQ2LwJaWT5N//AoSY999pLZrsMPT4yy+q7jmIDJCNAYvMmpPIz5Raa7mjlZ6RpEUgjndwQ\nQIoGSGzehKTNPTz4rd/a/HPhll61e6oGUVXrp0SKCZCMAInNo5C0zR+MsPLeBmu/R1o54b/L\nnN0MQIoGSGxehWQxh2c1tx4gGQESGyDxAZIRILEBEh8gGQESGyDxAZIRILEBEh8gGQESGyDx\nAZIRILEBEh8gGQESGyDxAZIRILEBEh8gGQESGyDxAZIRILEBEh8gGQESGyDxAZIRILEBEh8g\nGQESGyDxAZIRILEBEh8gGQESGyDxAZIRILEBEh8gGQESGyDxZRuk6T079J4TWVxfGOk3fVD4\n68uAJDFA4ssySLPaT1k2vu2i8PL2H0O90H23fv9joaVNgCQxQOLLLkhl3UcEL5/qX7Hmr2vn\n63q/kbG7ObqpgMQGSHzZBWlT4Y/By7mFW6Nrht8TvOj1FiABEhsgxfR1oRa8XFG4yljxvw7f\nBy+7Tonuse3PP//8639O2vN/jv6Y1bbqzm6W1f7YKXX8//aUyZ2//W+p44OQpM7/316547fp\nf5rt8rsNSPPCj0Xrw49L4Ub2C112erL/lb3G7gwtDmjRosUFpnMQ8l17o0v2Ie24cnbwsqxz\n/wUrpnQaGloz4d577x20w0llOx39Mavt1ndJnb9rr9TxO8p0ufP37JY6fqe+R+r8HWVyx++x\n8O1jA9LiwtLg5fLCNeXXv2z3V3Tb5MLosqNnofgZiQ0/I/Fl189IxYWhH4k+bmfge/6eim3f\nFq4FJHkBEl92QdJvHh68GDTAuNptdOhy0+ANwcu32m0HJHkBEl+WQZrdftLSUW2DPyLNCD0W\nbS+cGVq5q1fvBSsmXVHxyyRHNxWQ2ACJL8sg6TN6tO/7RfDrmHYhMIWfhVeWPHN9+57TK161\ncHRTAYkNkPiyDZKl/nDSTkd/ynKrv9wkdf5f26WO/+PbhXLnb/tH6viSL1dInf/HLrnjV325\n2WyXitfdhEHyYm+0mJ/pm+Cqq1pl+ha4alWLxzN9E1z1cotF1ncGJA8HSBkNkIwAKaMBkl8C\npIwGSH5p7Sdapm+CqxbOyfQtcNXfn/yU6ZvgqtWf/J/1nX0NCaF0BUgICQiQEBKQHyHtnda3\nU+8p5W+6iD9ISxYU15VG/wAABZtJREFUe5MrHXomO6o4QE6oLLv/945r+154IeZut/Bv4EdI\nYztMWfp226mRK/EHacmCYm5y5UPPZEcVB8gJlV33/2/3920fhhRzt1v5N/AhpD1XjglePnln\n5Fr8QVqyoMo3OfHQM9lR+AA5obLr/p/65PaOIUgxd7ulfwMfQirb/HfwcmTPyLX4g7RkQZVv\ncuKhZ7Kj4can1rLr/td0PQwp5m639G/gQ0jh9tz6XGSh0kFasqXKNznh0DPZUeQAOaGy7v4P\nQ4q52y39G/gV0qgriyILlQ7Ski1VvskJh57JjiIHyAmVdfd/GFLM3W7p38CnkMZ0XBxZqHyQ\nliwp5iZnJ6TIAXJCZd/9D0gVlQ276oeYFZUO0pItld/k+EPPZEeVD5ATKpvu/zCkmLvd0r+B\nLyG9em3c09lKB2nJlspvcvyhZ7KjygfICZVN938YUszdbunfwI+QZl9R4SjhIC3eL/Ymxx16\nJjuKHCAnVPbd/2FIsXe7lX8DH0LaedPg8K8Ed4eO1pJwkBbvV3GTQ0ebiR56JosqP0BOFt7/\nq3/8sf3wH3/cGXvEHyv/Bj6EtCb6FpXQ0VriD9KSBUVvcvhoM8ahZ7Io4wA52Xf/949865TE\nHfHHwr+BDyEhlP4ACSEBARJCAgIkhAQESAgJCJAQEhAgISQgQMqyrqbiyle706qKLb+m/+ag\n8gDJm42jqisjS4eeELNhyMW/Vb4KSB4JkLzZOKLzI0txkOICJI8ESN5sHLWiceElQMqKAMmb\njaN3D2wQfhIXhrSlb7Mq9dp9rZf/jPTBqQUNb992wEkhSGuePDi/6aCy0JY1d+2ff2T4yFfr\nb9y/St3CReH9Sy6o9p6+4+nj96l53NPZ8p637AuQvNk4mjGdeoWWQpBKD6x977jBB1SdF4H0\nWW6jR18+t23t00OQbjppyNNNaXxoy+WtBj98CI3Q9Y0Nat495okmVT/X9a507aWDl+o30bWv\nDu9At2T67+XbAMmbjaP39XaBL/UIpD55oU/Ob6x1SgTShRS8uqc1hSG13KXr31Lb0JZWwQec\n9fkH6/oNFDqq30+5Z+h6N7oo9DBU/czQ1Duv2JPJv5SfAyRvFoK0scZxu8OQyuqdXBzqYvo7\nDKnaUaFdZkUgTQsuluWGiYWPfNWaNpbVblgWWmxJ/wvuEF5be/+SjP1dlAiQvFkIkv4MPR2G\ntIWMlocg/U5tQrv8FYG0LLRc+5gQpKWhxe70+WY6T48sfhn83zehxRdon66jsuV4p9kYIHmz\nMKTdx1dfH4K0ik78MNLvIUir6arwPrmnR1+1i0AKfapbv40+WUWF4R1upU+iL+vNbl+DApet\nz8hfRoUAyZuFIelfBgr1w0OPSCdGNwQhbQj9RKTrWyke0s+hxe70RXH5I9JN9FWl18d3fHJD\n4LAsOsBcdgVI3iwCSe9JU485QdfrVfs9dC10VKggpJ054V8tzUmAFPpxST83+ENUncbhn5FO\nD/xe+RdNut6Hsulo/FkVIHmzcki/1T/g6NCrdvRA8EppozaRV+1OC6zQ9T0XJ0AKPaH7Nf9o\nXe8RNvVd4Hxjh4X7jw3tdgstydRfyO8Bkjcrh6SPJQpCKmlGN40Z3KzKxxFIk+jgZ15rdUPV\neEgXtX/tueY0QdeLGtV8YOyjDWr9YOyw+9j8ni+/0i2nZVkm/1J+DpC8mQFJbx2CpBf3aZq3\nb9vIOxWKdX3kkfkHDtiVf1YMpHb0W7/G+c1Hh65vvKlxXoPOoXMhl+/wf/0OrV77hMF/Z+Lv\nokSAlLX9GXnNAXkiQMrCRv0r9LuhF0K/ZUIeCZCysK+qNnp0RN+8Zr9n+oagaICUjS24tEGV\nJt2KMn0zUEWAhJCAAAkhAQESQgICJIQEBEgICQiQEBIQICEkIEBCSECAhJCAAAkhAf0/7kf3\nrY0pK+QAAAAASUVORK5CYII=",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"# what is the optimal value of k? -----\n",
"\n",
"ks <- tibble(neighbors = seq(from = 1, to = 10, by = 1))\n",
"\n",
"knn_spec <- nearest_neighbor(weight_func = \"rectangular\", neighbors = tune()) %>%\n",
" set_engine(\"kknn\") %>%\n",
" set_mode(\"classification\")\n",
"\n",
"data_vfold <- vfold_cv(mtcars, v = 5, strata = am)\n",
"\n",
"results <- workflow() %>%\n",
" add_recipe(car_recipe_processed) %>%\n",
" add_model(knn_spec) %>%\n",
" tune_grid(resamples = data_vfold, grid = ks) %>%\n",
" collect_metrics()\n",
"\n",
"accuracies <- results %>%\n",
" filter(.metric == \"accuracy\")\n",
"\n",
"accuracy_vs_k <- ggplot(accuracies, aes(x = neighbors, y = mean)) +\n",
" geom_point() +\n",
" geom_line() +\n",
" labs(x = \"Neighbors\", y = \"Accuracy Estimate\") +\n",
" theme(text = element_text(size = 12))\n",
"\n",
"accuracy_vs_k"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"══ Workflow [trained] ══════════════════════════════════════════════════════════\n",
"\u001b[3mPreprocessor:\u001b[23m Recipe\n",
"\u001b[3mModel:\u001b[23m nearest_neighbor()\n",
"\n",
"── Preprocessor ────────────────────────────────────────────────────────────────\n",
"2 Recipe Steps\n",
"\n",
"● step_scale()\n",
"● step_center()\n",
"\n",
"── Model ───────────────────────────────────────────────────────────────────────\n",
"\n",
"Call:\n",
"kknn::train.kknn(formula = ..y ~ ., data = data, ks = ~3, kernel = ~\"rectangular\")\n",
"\n",
"Type of response variable: nominal\n",
"Minimal misclassification: 0.15625\n",
"Best kernel: rectangular\n",
"Best k: 3"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 7 × 12</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.pred_class</th><th scope=col>mpg</th><th scope=col>cyl</th><th scope=col>disp</th><th scope=col>hp</th><th scope=col>drat</th><th scope=col>wt</th><th scope=col>qsec</th><th scope=col>vs</th><th scope=col>am</th><th scope=col>gear</th><th scope=col>carb</th></tr>\n",
"\t<tr><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>0</td><td>14.3</td><td>8</td><td>360.0</td><td>245</td><td>3.21</td><td>3.570</td><td>15.84</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>0</td><td>17.3</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.730</td><td>17.60</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>0</td><td>15.2</td><td>8</td><td>304.0</td><td>150</td><td>3.15</td><td>3.435</td><td>17.30</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>0</td><td>13.3</td><td>8</td><td>350.0</td><td>245</td><td>3.73</td><td>3.840</td><td>15.41</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>0</td><td>15.8</td><td>8</td><td>351.0</td><td>264</td><td>4.22</td><td>3.170</td><td>14.50</td><td>0</td><td>1</td><td>5</td><td>4</td></tr>\n",
"\t<tr><td>1</td><td>19.7</td><td>6</td><td>145.0</td><td>175</td><td>3.62</td><td>2.770</td><td>15.50</td><td>0</td><td>1</td><td>5</td><td>6</td></tr>\n",
"\t<tr><td>1</td><td>21.4</td><td>4</td><td>121.0</td><td>109</td><td>4.11</td><td>2.780</td><td>18.60</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 7 × 12\n",
"\\begin{tabular}{llllllllllll}\n",
" .pred\\_class & mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb\\\\\n",
" <fct> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <fct> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 0 & 14.3 & 8 & 360.0 & 245 & 3.21 & 3.570 & 15.84 & 0 & 0 & 3 & 4\\\\\n",
"\t 0 & 17.3 & 8 & 275.8 & 180 & 3.07 & 3.730 & 17.60 & 0 & 0 & 3 & 3\\\\\n",
"\t 0 & 15.2 & 8 & 304.0 & 150 & 3.15 & 3.435 & 17.30 & 0 & 0 & 3 & 2\\\\\n",
"\t 0 & 13.3 & 8 & 350.0 & 245 & 3.73 & 3.840 & 15.41 & 0 & 0 & 3 & 4\\\\\n",
"\t 0 & 15.8 & 8 & 351.0 & 264 & 4.22 & 3.170 & 14.50 & 0 & 1 & 5 & 4\\\\\n",
"\t 1 & 19.7 & 6 & 145.0 & 175 & 3.62 & 2.770 & 15.50 & 0 & 1 & 5 & 6\\\\\n",
"\t 1 & 21.4 & 4 & 121.0 & 109 & 4.11 & 2.780 & 18.60 & 1 & 1 & 4 & 2\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 7 × 12\n",
"\n",
"| .pred_class &lt;fct&gt; | mpg &lt;dbl&gt; | cyl &lt;dbl&gt; | disp &lt;dbl&gt; | hp &lt;dbl&gt; | drat &lt;dbl&gt; | wt &lt;dbl&gt; | qsec &lt;dbl&gt; | vs &lt;dbl&gt; | am &lt;fct&gt; | gear &lt;dbl&gt; | carb &lt;dbl&gt; |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| 0 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |\n",
"| 0 | 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |\n",
"| 0 | 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |\n",
"| 0 | 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |\n",
"| 0 | 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |\n",
"| 1 | 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |\n",
"| 1 | 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |\n",
"\n"
],
"text/plain": [
" .pred_class mpg cyl disp hp drat wt qsec vs am gear carb\n",
"1 0 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 \n",
"2 0 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 \n",
"3 0 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 \n",
"4 0 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 \n",
"5 0 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 \n",
"6 1 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 \n",
"7 1 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 2 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.metric</th><th scope=col>.estimator</th><th scope=col>.estimate</th></tr>\n",
"\t<tr><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>accuracy</td><td>binary</td><td>0.8571429</td></tr>\n",
"\t<tr><td>kap </td><td>binary</td><td>0.6956522</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" .metric & .estimator & .estimate\\\\\n",
" <chr> & <chr> & <dbl>\\\\\n",
"\\hline\n",
"\t accuracy & binary & 0.8571429\\\\\n",
"\t kap & binary & 0.6956522\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 2 × 3\n",
"\n",
"| .metric &lt;chr&gt; | .estimator &lt;chr&gt; | .estimate &lt;dbl&gt; |\n",
"|---|---|---|\n",
"| accuracy | binary | 0.8571429 |\n",
"| kap | binary | 0.6956522 |\n",
"\n"
],
"text/plain": [
" .metric .estimator .estimate\n",
"1 accuracy binary 0.8571429\n",
"2 kap binary 0.6956522"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# How do we make sure we can predict well? -----\n",
"\n",
"# what can can go wrong here?\n",
"\n",
"# Splitting data\n",
"\n",
"set.seed(4242)\n",
"\n",
"car_split <- initial_split(mtcars, prop = 0.75, strata = am)\n",
"car_train <- training(car_split)\n",
"car_test <- testing(car_split)\n",
"\n",
"# Create recipe\n",
"\n",
"car_recipe <- recipe(am ~ mpg + hp + wt, data = mtcars) %>%\n",
" step_scale(all_predictors()) %>%\n",
" step_center(all_predictors())\n",
"\n",
"# Fit the model\n",
"\n",
"knn_spec <- nearest_neighbor(weight_func = \"rectangular\", neighbors = 3) %>%\n",
" set_engine(\"kknn\") %>%\n",
" set_mode(\"classification\")\n",
"\n",
"knn_fit <- workflow() %>%\n",
" add_recipe(car_recipe) %>%\n",
" add_model(knn_spec) %>%\n",
" fit(data = mtcars)\n",
"\n",
"knn_fit\n",
"\n",
"car_predictions_1 <- predict(knn_fit, car_test) %>%\n",
" bind_cols(car_test)\n",
"car_predictions_1\n",
"\n",
"car_predictions_1 %>%\n",
" metrics(truth = am, estimate = .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Data Recipe\n",
"\n",
"Inputs:\n",
"\n",
" role #variables\n",
" outcome 1\n",
" predictor 3\n",
"\n",
"Operations:\n",
"\n",
"Scaling for all_predictors()\n",
"Centering for all_predictors()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"══ Workflow [trained] ══════════════════════════════════════════════════════════\n",
"\u001b[3mPreprocessor:\u001b[23m Recipe\n",
"\u001b[3mModel:\u001b[23m nearest_neighbor()\n",
"\n",
"── Preprocessor ────────────────────────────────────────────────────────────────\n",
"2 Recipe Steps\n",
"\n",
"● step_scale()\n",
"● step_center()\n",
"\n",
"── Model ───────────────────────────────────────────────────────────────────────\n",
"\n",
"Call:\n",
"kknn::train.kknn(formula = ..y ~ ., data = data, ks = ~3, kernel = ~\"rectangular\")\n",
"\n",
"Type of response variable: nominal\n",
"Minimal misclassification: 0.12\n",
"Best kernel: rectangular\n",
"Best k: 3"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 7 × 12</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.pred_class</th><th scope=col>mpg</th><th scope=col>cyl</th><th scope=col>disp</th><th scope=col>hp</th><th scope=col>drat</th><th scope=col>wt</th><th scope=col>qsec</th><th scope=col>vs</th><th scope=col>am</th><th scope=col>gear</th><th scope=col>carb</th></tr>\n",
"\t<tr><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;fct&gt;</th><th scope=col>&lt;dbl&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>0</td><td>14.3</td><td>8</td><td>360.0</td><td>245</td><td>3.21</td><td>3.570</td><td>15.84</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>0</td><td>17.3</td><td>8</td><td>275.8</td><td>180</td><td>3.07</td><td>3.730</td><td>17.60</td><td>0</td><td>0</td><td>3</td><td>3</td></tr>\n",
"\t<tr><td>0</td><td>15.2</td><td>8</td><td>304.0</td><td>150</td><td>3.15</td><td>3.435</td><td>17.30</td><td>0</td><td>0</td><td>3</td><td>2</td></tr>\n",
"\t<tr><td>0</td><td>13.3</td><td>8</td><td>350.0</td><td>245</td><td>3.73</td><td>3.840</td><td>15.41</td><td>0</td><td>0</td><td>3</td><td>4</td></tr>\n",
"\t<tr><td>0</td><td>15.8</td><td>8</td><td>351.0</td><td>264</td><td>4.22</td><td>3.170</td><td>14.50</td><td>0</td><td>1</td><td>5</td><td>4</td></tr>\n",
"\t<tr><td>0</td><td>19.7</td><td>6</td><td>145.0</td><td>175</td><td>3.62</td><td>2.770</td><td>15.50</td><td>0</td><td>1</td><td>5</td><td>6</td></tr>\n",
"\t<tr><td>1</td><td>21.4</td><td>4</td><td>121.0</td><td>109</td><td>4.11</td><td>2.780</td><td>18.60</td><td>1</td><td>1</td><td>4</td><td>2</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 7 × 12\n",
"\\begin{tabular}{llllllllllll}\n",
" .pred\\_class & mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb\\\\\n",
" <fct> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <dbl> & <fct> & <dbl> & <dbl>\\\\\n",
"\\hline\n",
"\t 0 & 14.3 & 8 & 360.0 & 245 & 3.21 & 3.570 & 15.84 & 0 & 0 & 3 & 4\\\\\n",
"\t 0 & 17.3 & 8 & 275.8 & 180 & 3.07 & 3.730 & 17.60 & 0 & 0 & 3 & 3\\\\\n",
"\t 0 & 15.2 & 8 & 304.0 & 150 & 3.15 & 3.435 & 17.30 & 0 & 0 & 3 & 2\\\\\n",
"\t 0 & 13.3 & 8 & 350.0 & 245 & 3.73 & 3.840 & 15.41 & 0 & 0 & 3 & 4\\\\\n",
"\t 0 & 15.8 & 8 & 351.0 & 264 & 4.22 & 3.170 & 14.50 & 0 & 1 & 5 & 4\\\\\n",
"\t 0 & 19.7 & 6 & 145.0 & 175 & 3.62 & 2.770 & 15.50 & 0 & 1 & 5 & 6\\\\\n",
"\t 1 & 21.4 & 4 & 121.0 & 109 & 4.11 & 2.780 & 18.60 & 1 & 1 & 4 & 2\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 7 × 12\n",
"\n",
"| .pred_class &lt;fct&gt; | mpg &lt;dbl&gt; | cyl &lt;dbl&gt; | disp &lt;dbl&gt; | hp &lt;dbl&gt; | drat &lt;dbl&gt; | wt &lt;dbl&gt; | qsec &lt;dbl&gt; | vs &lt;dbl&gt; | am &lt;fct&gt; | gear &lt;dbl&gt; | carb &lt;dbl&gt; |\n",
"|---|---|---|---|---|---|---|---|---|---|---|---|\n",
"| 0 | 14.3 | 8 | 360.0 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |\n",
"| 0 | 17.3 | 8 | 275.8 | 180 | 3.07 | 3.730 | 17.60 | 0 | 0 | 3 | 3 |\n",
"| 0 | 15.2 | 8 | 304.0 | 150 | 3.15 | 3.435 | 17.30 | 0 | 0 | 3 | 2 |\n",
"| 0 | 13.3 | 8 | 350.0 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |\n",
"| 0 | 15.8 | 8 | 351.0 | 264 | 4.22 | 3.170 | 14.50 | 0 | 1 | 5 | 4 |\n",
"| 0 | 19.7 | 6 | 145.0 | 175 | 3.62 | 2.770 | 15.50 | 0 | 1 | 5 | 6 |\n",
"| 1 | 21.4 | 4 | 121.0 | 109 | 4.11 | 2.780 | 18.60 | 1 | 1 | 4 | 2 |\n",
"\n"
],
"text/plain": [
" .pred_class mpg cyl disp hp drat wt qsec vs am gear carb\n",
"1 0 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 \n",
"2 0 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 \n",
"3 0 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 \n",
"4 0 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 \n",
"5 0 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 \n",
"6 0 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 \n",
"7 1 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 2 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.metric</th><th scope=col>.estimator</th><th scope=col>.estimate</th></tr>\n",
"\t<tr><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>accuracy</td><td>binary</td><td>0.7142857</td></tr>\n",
"\t<tr><td>kap </td><td>binary</td><td>0.3636364</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" .metric & .estimator & .estimate\\\\\n",
" <chr> & <chr> & <dbl>\\\\\n",
"\\hline\n",
"\t accuracy & binary & 0.7142857\\\\\n",
"\t kap & binary & 0.3636364\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 2 × 3\n",
"\n",
"| .metric &lt;chr&gt; | .estimator &lt;chr&gt; | .estimate &lt;dbl&gt; |\n",
"|---|---|---|\n",
"| accuracy | binary | 0.7142857 |\n",
"| kap | binary | 0.3636364 |\n",
"\n"
],
"text/plain": [
" .metric .estimator .estimate\n",
"1 accuracy binary 0.7142857\n",
"2 kap binary 0.3636364"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# What happens when we use the wrong training/testing data -----\n",
"\n",
"car_recipe_train <- recipe(am ~ mpg + hp + wt, data = car_train) %>%\n",
" step_scale(all_predictors()) %>%\n",
" step_center(all_predictors())\n",
"\n",
"car_recipe_train\n",
"\n",
"knn_fit_train <- workflow() %>%\n",
" add_recipe(car_recipe_train) %>%\n",
" add_model(knn_spec) %>%\n",
" fit(data = car_train)\n",
"\n",
"knn_fit_train\n",
"\n",
"car_predictions_2 <- predict(knn_fit_train, car_test) %>%\n",
" bind_cols(car_test)\n",
"car_predictions_2\n",
"\n",
"car_predictions_2 %>%\n",
" metrics(truth = am, estimate = .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"# compare the 2 accuracy scores from the models we just fit?\n",
"# why is one higher than the other?"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 2 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.metric</th><th scope=col>.estimator</th><th scope=col>.estimate</th></tr>\n",
"\t<tr><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>accuracy</td><td>binary</td><td>0.8571429</td></tr>\n",
"\t<tr><td>kap </td><td>binary</td><td>0.6956522</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" .metric & .estimator & .estimate\\\\\n",
" <chr> & <chr> & <dbl>\\\\\n",
"\\hline\n",
"\t accuracy & binary & 0.8571429\\\\\n",
"\t kap & binary & 0.6956522\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 2 × 3\n",
"\n",
"| .metric &lt;chr&gt; | .estimator &lt;chr&gt; | .estimate &lt;dbl&gt; |\n",
"|---|---|---|\n",
"| accuracy | binary | 0.8571429 |\n",
"| kap | binary | 0.6956522 |\n",
"\n"
],
"text/plain": [
" .metric .estimator .estimate\n",
"1 accuracy binary 0.8571429\n",
"2 kap binary 0.6956522"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"car_predictions_1 %>%\n",
" metrics(truth = am, estimate = .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table>\n",
"<caption>A tibble: 2 × 3</caption>\n",
"<thead>\n",
"\t<tr><th scope=col>.metric</th><th scope=col>.estimator</th><th scope=col>.estimate</th></tr>\n",
"\t<tr><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;chr&gt;</th><th scope=col>&lt;dbl&gt;</th></tr>\n",
"</thead>\n",
"<tbody>\n",
"\t<tr><td>accuracy</td><td>binary</td><td>0.7142857</td></tr>\n",
"\t<tr><td>kap </td><td>binary</td><td>0.3636364</td></tr>\n",
"</tbody>\n",
"</table>\n"
],
"text/latex": [
"A tibble: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" .metric & .estimator & .estimate\\\\\n",
" <chr> & <chr> & <dbl>\\\\\n",
"\\hline\n",
"\t accuracy & binary & 0.7142857\\\\\n",
"\t kap & binary & 0.3636364\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A tibble: 2 × 3\n",
"\n",
"| .metric &lt;chr&gt; | .estimator &lt;chr&gt; | .estimate &lt;dbl&gt; |\n",
"|---|---|---|\n",
"| accuracy | binary | 0.7142857 |\n",
"| kap | binary | 0.3636364 |\n",
"\n"
],
"text/plain": [
" .metric .estimator .estimate\n",
"1 accuracy binary 0.7142857\n",
"2 kap binary 0.3636364"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"car_predictions_2 %>%\n",
" metrics(truth = am, estimate = .pred_class)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.0.0"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment