406 lines
73 KiB
Plaintext
406 lines
73 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "initial_id",
|
||
"metadata": {
|
||
"collapsed": true,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T07:40:36.696135Z",
|
||
"start_time": "2024-02-29T07:40:36.680744Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": " id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n0 842302 M 17.99 10.38 122.80 1001.0 \n1 842517 M 20.57 17.77 132.90 1326.0 \n2 84300903 M 19.69 21.25 130.00 1203.0 \n3 84348301 M 11.42 20.38 77.58 386.1 \n4 84358402 M 20.29 14.34 135.10 1297.0 \n\n smoothness_mean compactness_mean concavity_mean concave points_mean \\\n0 0.11840 0.27760 0.3001 0.14710 \n1 0.08474 0.07864 0.0869 0.07017 \n2 0.10960 0.15990 0.1974 0.12790 \n3 0.14250 0.28390 0.2414 0.10520 \n4 0.10030 0.13280 0.1980 0.10430 \n\n ... radius_worst texture_worst perimeter_worst area_worst \\\n0 ... 25.38 17.33 184.60 2019.0 \n1 ... 24.99 23.41 158.80 1956.0 \n2 ... 23.57 25.53 152.50 1709.0 \n3 ... 14.91 26.50 98.87 567.7 \n4 ... 22.54 16.67 152.20 1575.0 \n\n smoothness_worst compactness_worst concavity_worst concave_points_worst \\\n0 0.1622 0.6656 0.7119 0.2654 \n1 0.1238 0.1866 0.2416 0.1860 \n2 0.1444 0.4245 0.4504 0.2430 \n3 0.2098 0.8663 0.6869 0.2575 \n4 0.1374 0.2050 0.4000 0.1625 \n\n symmetry_worst fractal_dimension_worst \n0 0.4601 0.11890 \n1 0.2750 0.08902 \n2 0.3613 0.08758 \n3 0.6638 0.17300 \n4 0.2364 0.07678 \n\n[5 rows x 32 columns]",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>diagnosis</th>\n <th>radius_mean</th>\n <th>texture_mean</th>\n <th>perimeter_mean</th>\n <th>area_mean</th>\n <th>smoothness_mean</th>\n <th>compactness_mean</th>\n <th>concavity_mean</th>\n <th>concave points_mean</th>\n <th>...</th>\n <th>radius_worst</th>\n <th>texture_worst</th>\n <th>perimeter_worst</th>\n <th>area_worst</th>\n <th>smoothness_worst</th>\n <th>compactness_worst</th>\n <th>concavity_worst</th>\n <th>concave_points_worst</th>\n <th>symmetry_worst</th>\n <th>fractal_dimension_worst</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>842302</td>\n <td>M</td>\n <td>17.99</td>\n <td>10.38</td>\n <td>122.80</td>\n <td>1001.0</td>\n <td>0.11840</td>\n <td>0.27760</td>\n <td>0.3001</td>\n <td>0.14710</td>\n <td>...</td>\n <td>25.38</td>\n <td>17.33</td>\n <td>184.60</td>\n <td>2019.0</td>\n <td>0.1622</td>\n <td>0.6656</td>\n <td>0.7119</td>\n <td>0.2654</td>\n <td>0.4601</td>\n <td>0.11890</td>\n </tr>\n <tr>\n <th>1</th>\n <td>842517</td>\n <td>M</td>\n <td>20.57</td>\n <td>17.77</td>\n <td>132.90</td>\n <td>1326.0</td>\n <td>0.08474</td>\n <td>0.07864</td>\n <td>0.0869</td>\n <td>0.07017</td>\n <td>...</td>\n <td>24.99</td>\n <td>23.41</td>\n <td>158.80</td>\n <td>1956.0</td>\n <td>0.1238</td>\n <td>0.1866</td>\n <td>0.2416</td>\n <td>0.1860</td>\n <td>0.2750</td>\n <td>0.08902</td>\n </tr>\n <tr>\n <th>2</th>\n <td>84300903</td>\n <td>M</td>\n <td>19.69</td>\n <td>21.25</td>\n <td>130.00</td>\n <td>1203.0</td>\n <td>0.10960</td>\n <td>0.15990</td>\n <td>0.1974</td>\n <td>0.12790</td>\n <td>...</td>\n <td>23.57</td>\n <td>25.53</td>\n <td>152.50</td>\n <td>1709.0</td>\n <td>0.1444</td>\n <td>0.4245</td>\n <td>0.4504</td>\n <td>0.2430</td>\n <td>0.3613</td>\n <td>0.08758</td>\n </tr>\n <tr>\n <th>3</th>\n <td>84348301</td>\n <td>M</td>\n <td>11.42</td>\n <td>20.38</td>\n <td>77.58</td>\n <td>386.1</td>\n <td>0.14250</td>\n <td>0.28390</td>\n <td>0.2414</td>\n <td>0.10520</td>\n <td>...</td>\n <td>14.91</td>\n <td>26.50</td>\n <td>98.87</td>\n <td>567.7</td>\n <td>0.2098</td>\n <td>0.8663</td>\n <td>0.6869</td>\n <td>0.2575</td>\n <td>0.6638</td>\n <td>0.17300</td>\n </tr>\n <tr>\n <th>4</th>\n <td>84358402</td>\n <td>M</td>\n <td>20.29</td>\n <td>14.34</td>\n <td>135.10</td>\n <td>1297.0</td>\n <td>0.10030</td>\n <td>0.13280</td>\n <td>0.1980</td>\n <td>0.10430</td>\n <td>...</td>\n <td>22.54</td>\n <td>16.67</td>\n <td>152.20</td>\n <td>1575.0</td>\n <td>0.1374</td>\n <td>0.2050</td>\n <td>0.4000</td>\n <td>0.1625</td>\n <td>0.2364</td>\n <td>0.07678</td>\n </tr>\n </tbody>\n</table>\n<p>5 rows × 32 columns</p>\n</div>"
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"\n",
|
||
"df = pd.read_csv('bc_data.csv', header=0)\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": " id radius_mean texture_mean perimeter_mean area_mean \\\ncount 5.690000e+02 569.000000 569.000000 569.000000 569.000000 \nmean 3.037183e+07 14.127292 19.289649 91.969033 654.889104 \nstd 1.250206e+08 3.524049 4.301036 24.298981 351.914129 \nmin 8.670000e+03 6.981000 9.710000 43.790000 143.500000 \n25% 8.692180e+05 11.700000 16.170000 75.170000 420.300000 \n50% 9.060240e+05 13.370000 18.840000 86.240000 551.100000 \n75% 8.813129e+06 15.780000 21.800000 104.100000 782.700000 \nmax 9.113205e+08 28.110000 39.280000 188.500000 2501.000000 \n\n smoothness_mean compactness_mean concavity_mean concave points_mean \\\ncount 569.000000 569.000000 569.000000 569.000000 \nmean 0.096360 0.104341 0.088799 0.048919 \nstd 0.014064 0.052813 0.079720 0.038803 \nmin 0.052630 0.019380 0.000000 0.000000 \n25% 0.086370 0.064920 0.029560 0.020310 \n50% 0.095870 0.092630 0.061540 0.033500 \n75% 0.105300 0.130400 0.130700 0.074000 \nmax 0.163400 0.345400 0.426800 0.201200 \n\n symmetry_mean ... radius_worst texture_worst perimeter_worst \\\ncount 569.000000 ... 569.000000 569.000000 569.000000 \nmean 0.181162 ... 16.269190 25.677223 107.261213 \nstd 0.027414 ... 4.833242 6.146258 33.602542 \nmin 0.106000 ... 7.930000 12.020000 50.410000 \n25% 0.161900 ... 13.010000 21.080000 84.110000 \n50% 0.179200 ... 14.970000 25.410000 97.660000 \n75% 0.195700 ... 18.790000 29.720000 125.400000 \nmax 0.304000 ... 36.040000 49.540000 251.200000 \n\n area_worst smoothness_worst compactness_worst concavity_worst \\\ncount 569.000000 569.000000 569.000000 569.000000 \nmean 880.583128 0.132369 0.254265 0.272188 \nstd 569.356993 0.022832 0.157336 0.208624 \nmin 185.200000 0.071170 0.027290 0.000000 \n25% 515.300000 0.116600 0.147200 0.114500 \n50% 686.500000 0.131300 0.211900 0.226700 \n75% 1084.000000 0.146000 0.339100 0.382900 \nmax 4254.000000 0.222600 1.058000 1.252000 \n\n concave_points_worst symmetry_worst fractal_dimension_worst \ncount 569.000000 569.000000 569.000000 \nmean 0.114606 0.290076 0.083946 \nstd 0.065732 0.061867 0.018061 \nmin 0.000000 0.156500 0.055040 \n25% 0.064930 0.250400 0.071460 \n50% 0.099930 0.282200 0.080040 \n75% 0.161400 0.317900 0.092080 \nmax 0.291000 0.663800 0.207500 \n\n[8 rows x 31 columns]",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>id</th>\n <th>radius_mean</th>\n <th>texture_mean</th>\n <th>perimeter_mean</th>\n <th>area_mean</th>\n <th>smoothness_mean</th>\n <th>compactness_mean</th>\n <th>concavity_mean</th>\n <th>concave points_mean</th>\n <th>symmetry_mean</th>\n <th>...</th>\n <th>radius_worst</th>\n <th>texture_worst</th>\n <th>perimeter_worst</th>\n <th>area_worst</th>\n <th>smoothness_worst</th>\n <th>compactness_worst</th>\n <th>concavity_worst</th>\n <th>concave_points_worst</th>\n <th>symmetry_worst</th>\n <th>fractal_dimension_worst</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>count</th>\n <td>5.690000e+02</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>...</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n <td>569.000000</td>\n </tr>\n <tr>\n <th>mean</th>\n <td>3.037183e+07</td>\n <td>14.127292</td>\n <td>19.289649</td>\n <td>91.969033</td>\n <td>654.889104</td>\n <td>0.096360</td>\n <td>0.104341</td>\n <td>0.088799</td>\n <td>0.048919</td>\n <td>0.181162</td>\n <td>...</td>\n <td>16.269190</td>\n <td>25.677223</td>\n <td>107.261213</td>\n <td>880.583128</td>\n <td>0.132369</td>\n <td>0.254265</td>\n <td>0.272188</td>\n <td>0.114606</td>\n <td>0.290076</td>\n <td>0.083946</td>\n </tr>\n <tr>\n <th>std</th>\n <td>1.250206e+08</td>\n <td>3.524049</td>\n <td>4.301036</td>\n <td>24.298981</td>\n <td>351.914129</td>\n <td>0.014064</td>\n <td>0.052813</td>\n <td>0.079720</td>\n <td>0.038803</td>\n <td>0.027414</td>\n <td>...</td>\n <td>4.833242</td>\n <td>6.146258</td>\n <td>33.602542</td>\n <td>569.356993</td>\n <td>0.022832</td>\n <td>0.157336</td>\n <td>0.208624</td>\n <td>0.065732</td>\n <td>0.061867</td>\n <td>0.018061</td>\n </tr>\n <tr>\n <th>min</th>\n <td>8.670000e+03</td>\n <td>6.981000</td>\n <td>9.710000</td>\n <td>43.790000</td>\n <td>143.500000</td>\n <td>0.052630</td>\n <td>0.019380</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.106000</td>\n <td>...</td>\n <td>7.930000</td>\n <td>12.020000</td>\n <td>50.410000</td>\n <td>185.200000</td>\n <td>0.071170</td>\n <td>0.027290</td>\n <td>0.000000</td>\n <td>0.000000</td>\n <td>0.156500</td>\n <td>0.055040</td>\n </tr>\n <tr>\n <th>25%</th>\n <td>8.692180e+05</td>\n <td>11.700000</td>\n <td>16.170000</td>\n <td>75.170000</td>\n <td>420.300000</td>\n <td>0.086370</td>\n <td>0.064920</td>\n <td>0.029560</td>\n <td>0.020310</td>\n <td>0.161900</td>\n <td>...</td>\n <td>13.010000</td>\n <td>21.080000</td>\n <td>84.110000</td>\n <td>515.300000</td>\n <td>0.116600</td>\n <td>0.147200</td>\n <td>0.114500</td>\n <td>0.064930</td>\n <td>0.250400</td>\n <td>0.071460</td>\n </tr>\n <tr>\n <th>50%</th>\n <td>9.060240e+05</td>\n <td>13.370000</td>\n <td>18.840000</td>\n <td>86.240000</td>\n <td>551.100000</td>\n <td>0.095870</td>\n <td>0.092630</td>\n <td>0.061540</td>\n <td>0.033500</td>\n <td>0.179200</td>\n <td>...</td>\n <td>14.970000</td>\n <td>25.410000</td>\n <td>97.660000</td>\n <td>686.500000</td>\n <td>0.131300</td>\n <td>0.211900</td>\n <td>0.226700</td>\n <td>0.099930</td>\n <td>0.282200</td>\n <td>0.080040</td>\n </tr>\n <tr>\n <th>75%</th>\n <td>8.813129e+06</td>\n <td>15.780000</td>\n <td>21.800000</td>\n <td>104.100000</td>\n <td>782.700000</td>\n <td>0.105300</td>\n <td>0.130400</td>\n <td>0.130700</td>\n <td>0.074000</td>\n <td>0.195700</td>\n <td>...</td>\n <td>18.790000</td>\n <td>29.720000</td>\n <td>125.400000</td>\n <td>1084.000000</td>\n <td>0.146000</td>\n <td>0.339100</td>\n <td>0.382900</td>\n <td>0.161400</td>\n <td>0.317900</td>\n <td>0.092080</td>\n </tr>\n <tr>\n <th>max</th>\n <td>9.113205e+08</td>\n <td>28.110000</td>\n <td>39.280000</td>\n <td>188.500000</td>\n <td>2501.000000</td>\n <td>0.163400</td>\n <td>0.345400</td>\n <td>0.426800</td>\n <td>0.201200</td>\n <td>0.304000</td>\n <td>...</td>\n <td>36.040000</td>\n <td>49.540000</td>\n <td>251.200000</td>\n <td>4254.000000</td>\n <td>0.222600</td>\n <td>1.058000</td>\n <td>1.252000</td>\n <td>0.291000</td>\n <td>0.663800</td>\n <td>0.207500</td>\n </tr>\n </tbody>\n</table>\n<p>8 rows × 31 columns</p>\n</div>"
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.describe()"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T07:40:42.053095Z",
|
||
"start_time": "2024-02-29T07:40:42.023622Z"
|
||
}
|
||
},
|
||
"id": "fde21927bab2d623",
|
||
"execution_count": 5
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "<bound method DataFrame.info of id diagnosis radius_mean texture_mean perimeter_mean area_mean \\\n0 842302 M 17.99 10.38 122.80 1001.0 \n1 842517 M 20.57 17.77 132.90 1326.0 \n2 84300903 M 19.69 21.25 130.00 1203.0 \n3 84348301 M 11.42 20.38 77.58 386.1 \n4 84358402 M 20.29 14.34 135.10 1297.0 \n.. ... ... ... ... ... ... \n564 926424 M 21.56 22.39 142.00 1479.0 \n565 926682 M 20.13 28.25 131.20 1261.0 \n566 926954 M 16.60 28.08 108.30 858.1 \n567 927241 M 20.60 29.33 140.10 1265.0 \n568 92751 B 7.76 24.54 47.92 181.0 \n\n smoothness_mean compactness_mean concavity_mean concave points_mean \\\n0 0.11840 0.27760 0.30010 0.14710 \n1 0.08474 0.07864 0.08690 0.07017 \n2 0.10960 0.15990 0.19740 0.12790 \n3 0.14250 0.28390 0.24140 0.10520 \n4 0.10030 0.13280 0.19800 0.10430 \n.. ... ... ... ... \n564 0.11100 0.11590 0.24390 0.13890 \n565 0.09780 0.10340 0.14400 0.09791 \n566 0.08455 0.10230 0.09251 0.05302 \n567 0.11780 0.27700 0.35140 0.15200 \n568 0.05263 0.04362 0.00000 0.00000 \n\n ... radius_worst texture_worst perimeter_worst area_worst \\\n0 ... 25.380 17.33 184.60 2019.0 \n1 ... 24.990 23.41 158.80 1956.0 \n2 ... 23.570 25.53 152.50 1709.0 \n3 ... 14.910 26.50 98.87 567.7 \n4 ... 22.540 16.67 152.20 1575.0 \n.. ... ... ... ... ... \n564 ... 25.450 26.40 166.10 2027.0 \n565 ... 23.690 38.25 155.00 1731.0 \n566 ... 18.980 34.12 126.70 1124.0 \n567 ... 25.740 39.42 184.60 1821.0 \n568 ... 9.456 30.37 59.16 268.6 \n\n smoothness_worst compactness_worst concavity_worst \\\n0 0.16220 0.66560 0.7119 \n1 0.12380 0.18660 0.2416 \n2 0.14440 0.42450 0.4504 \n3 0.20980 0.86630 0.6869 \n4 0.13740 0.20500 0.4000 \n.. ... ... ... \n564 0.14100 0.21130 0.4107 \n565 0.11660 0.19220 0.3215 \n566 0.11390 0.30940 0.3403 \n567 0.16500 0.86810 0.9387 \n568 0.08996 0.06444 0.0000 \n\n concave_points_worst symmetry_worst fractal_dimension_worst \n0 0.2654 0.4601 0.11890 \n1 0.1860 0.2750 0.08902 \n2 0.2430 0.3613 0.08758 \n3 0.2575 0.6638 0.17300 \n4 0.1625 0.2364 0.07678 \n.. ... ... ... \n564 0.2216 0.2060 0.07115 \n565 0.1628 0.2572 0.06637 \n566 0.1418 0.2218 0.07820 \n567 0.2650 0.4087 0.12400 \n568 0.0000 0.2871 0.07039 \n\n[569 rows x 32 columns]>"
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.info"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T07:40:50.658398Z",
|
||
"start_time": "2024-02-29T07:40:50.649836Z"
|
||
}
|
||
},
|
||
"id": "33a333275b0acb62",
|
||
"execution_count": 6
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "(569, 32)"
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.shape"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T07:40:53.273389Z",
|
||
"start_time": "2024-02-29T07:40:53.269960Z"
|
||
}
|
||
},
|
||
"id": "cf2a7dc50f963f7a",
|
||
"execution_count": 7
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": " radius_mean texture_mean perimeter_mean area_mean smoothness_mean \\\n0 17.99 10.38 122.80 1001.0 0.11840 \n1 20.57 17.77 132.90 1326.0 0.08474 \n2 19.69 21.25 130.00 1203.0 0.10960 \n3 11.42 20.38 77.58 386.1 0.14250 \n4 20.29 14.34 135.10 1297.0 0.10030 \n\n compactness_mean concavity_mean concave points_mean symmetry_mean \\\n0 0.27760 0.3001 0.14710 0.2419 \n1 0.07864 0.0869 0.07017 0.1812 \n2 0.15990 0.1974 0.12790 0.2069 \n3 0.28390 0.2414 0.10520 0.2597 \n4 0.13280 0.1980 0.10430 0.1809 \n\n fractal_dimension_mean \n0 0.07871 \n1 0.05667 \n2 0.05999 \n3 0.09744 \n4 0.05883 ",
|
||
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>radius_mean</th>\n <th>texture_mean</th>\n <th>perimeter_mean</th>\n <th>area_mean</th>\n <th>smoothness_mean</th>\n <th>compactness_mean</th>\n <th>concavity_mean</th>\n <th>concave points_mean</th>\n <th>symmetry_mean</th>\n <th>fractal_dimension_mean</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>17.99</td>\n <td>10.38</td>\n <td>122.80</td>\n <td>1001.0</td>\n <td>0.11840</td>\n <td>0.27760</td>\n <td>0.3001</td>\n <td>0.14710</td>\n <td>0.2419</td>\n <td>0.07871</td>\n </tr>\n <tr>\n <th>1</th>\n <td>20.57</td>\n <td>17.77</td>\n <td>132.90</td>\n <td>1326.0</td>\n <td>0.08474</td>\n <td>0.07864</td>\n <td>0.0869</td>\n <td>0.07017</td>\n <td>0.1812</td>\n <td>0.05667</td>\n </tr>\n <tr>\n <th>2</th>\n <td>19.69</td>\n <td>21.25</td>\n <td>130.00</td>\n <td>1203.0</td>\n <td>0.10960</td>\n <td>0.15990</td>\n <td>0.1974</td>\n <td>0.12790</td>\n <td>0.2069</td>\n <td>0.05999</td>\n </tr>\n <tr>\n <th>3</th>\n <td>11.42</td>\n <td>20.38</td>\n <td>77.58</td>\n <td>386.1</td>\n <td>0.14250</td>\n <td>0.28390</td>\n <td>0.2414</td>\n <td>0.10520</td>\n <td>0.2597</td>\n <td>0.09744</td>\n </tr>\n <tr>\n <th>4</th>\n <td>20.29</td>\n <td>14.34</td>\n <td>135.10</td>\n <td>1297.0</td>\n <td>0.10030</td>\n <td>0.13280</td>\n <td>0.1980</td>\n <td>0.10430</td>\n <td>0.1809</td>\n <td>0.05883</td>\n </tr>\n </tbody>\n</table>\n</div>"
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"features = df.iloc[:, 2:12]\n",
|
||
"features.head()"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T08:59:29.955013Z",
|
||
"start_time": "2024-02-29T08:59:29.946763Z"
|
||
}
|
||
},
|
||
"id": "de2f104bfe69a01",
|
||
"execution_count": 8
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"['M' 'M' 'M' 'M' 'M' 'M' 'M' 'M' 'M' 'M']\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"\n",
|
||
"diagnosis = df[\"diagnosis\"]\n",
|
||
"diagnosis_array = np.ravel(diagnosis)\n",
|
||
"print(diagnosis_array[:10])"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:01:30.707342Z",
|
||
"start_time": "2024-02-29T09:01:30.703571Z"
|
||
}
|
||
},
|
||
"id": "2d9f42ce7a423f09",
|
||
"execution_count": 11
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"训练集大小: (426, 10)\n",
|
||
"测试集大小: (143, 10)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"\n",
|
||
"X_train, X_test, y_train, y_test = train_test_split(features, diagnosis_array, test_size=0.25, random_state=42)\n",
|
||
"print(\"训练集大小:\", X_train.shape)\n",
|
||
"print(\"测试集大小:\", X_test.shape)"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:01:51.137834Z",
|
||
"start_time": "2024-02-29T09:01:50.972999Z"
|
||
}
|
||
},
|
||
"id": "3b7128a6f067dbb5",
|
||
"execution_count": 12
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "KNeighborsClassifier()",
|
||
"text/html": "<style>#sk-container-id-2 {\n /* Definition of color scheme common for light and dark mode */\n --sklearn-color-text: black;\n --sklearn-color-line: gray;\n /* Definition of color scheme for unfitted estimators */\n --sklearn-color-unfitted-level-0: #fff5e6;\n --sklearn-color-unfitted-level-1: #f6e4d2;\n --sklearn-color-unfitted-level-2: #ffe0b3;\n --sklearn-color-unfitted-level-3: chocolate;\n /* Definition of color scheme for fitted estimators */\n --sklearn-color-fitted-level-0: #f0f8ff;\n --sklearn-color-fitted-level-1: #d4ebff;\n --sklearn-color-fitted-level-2: #b3dbfd;\n --sklearn-color-fitted-level-3: cornflowerblue;\n\n /* Specific color for light theme */\n --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n --sklearn-color-icon: #696969;\n\n @media (prefers-color-scheme: dark) {\n /* Redefinition of color scheme for dark theme */\n --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n --sklearn-color-icon: #878787;\n }\n}\n\n#sk-container-id-2 {\n color: var(--sklearn-color-text);\n}\n\n#sk-container-id-2 pre {\n padding: 0;\n}\n\n#sk-container-id-2 input.sk-hidden--visually {\n border: 0;\n clip: rect(1px 1px 1px 1px);\n clip: rect(1px, 1px, 1px, 1px);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n width: 1px;\n}\n\n#sk-container-id-2 div.sk-dashed-wrapped {\n border: 1px dashed var(--sklearn-color-line);\n margin: 0 0.4em 0.5em 0.4em;\n box-sizing: border-box;\n padding-bottom: 0.4em;\n background-color: var(--sklearn-color-background);\n}\n\n#sk-container-id-2 div.sk-container {\n /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n but bootstrap.min.css set `[hidden] { display: none !important; }`\n so we also need the `!important` here to be able to override the\n default hidden behavior on the sphinx rendered scikit-learn.org.\n See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n display: inline-block !important;\n position: relative;\n}\n\n#sk-container-id-2 div.sk-text-repr-fallback {\n display: none;\n}\n\ndiv.sk-parallel-item,\ndiv.sk-serial,\ndiv.sk-item {\n /* draw centered vertical line to link estimators */\n background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n background-size: 2px 100%;\n background-repeat: no-repeat;\n background-position: center center;\n}\n\n/* Parallel-specific style estimator block */\n\n#sk-container-id-2 div.sk-parallel-item::after {\n content: \"\";\n width: 100%;\n border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n flex-grow: 1;\n}\n\n#sk-container-id-2 div.sk-parallel {\n display: flex;\n align-items: stretch;\n justify-content: center;\n background-color: var(--sklearn-color-background);\n position: relative;\n}\n\n#sk-container-id-2 div.sk-parallel-item {\n display: flex;\n flex-direction: column;\n}\n\n#sk-container-id-2 div.sk-parallel-item:first-child::after {\n align-self: flex-end;\n width: 50%;\n}\n\n#sk-container-id-2 div.sk-parallel-item:last-child::after {\n align-self: flex-start;\n width: 50%;\n}\n\n#sk-container-id-2 div.sk-parallel-item:only-child::after {\n width: 0;\n}\n\n/* Serial-specific style estimator block */\n\n#sk-container-id-2 div.sk-serial {\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: var(--sklearn-color-background);\n padding-right: 1em;\n padding-left: 1em;\n}\n\n\n/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\nclickable and can be expanded/collapsed.\n- Pipeline and ColumnTransformer use this feature and define the default style\n- Estimators will overwrite some part of the style using the `sk-estimator` class\n*/\n\n/* Pipeline and ColumnTransformer style (default) */\n\n#sk-container-id-2 div.sk-toggleable {\n /* Default theme specific background. It is overwritten whether we have a\n specific estimator or a Pipeline/ColumnTransformer */\n background-color: var(--sklearn-color-background);\n}\n\n/* Toggleable label */\n#sk-container-id-2 label.sk-toggleable__label {\n cursor: pointer;\n display: block;\n width: 100%;\n margin-bottom: 0;\n padding: 0.5em;\n box-sizing: border-box;\n text-align: center;\n}\n\n#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n /* Arrow on the left of the label */\n content: \"▸\";\n float: left;\n margin-right: 0.25em;\n color: var(--sklearn-color-icon);\n}\n\n#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n color: var(--sklearn-color-text);\n}\n\n/* Toggleable content - dropdown */\n\n#sk-container-id-2 div.sk-toggleable__content {\n max-height: 0;\n max-width: 0;\n overflow: hidden;\n text-align: left;\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-2 div.sk-toggleable__content.fitted {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-0);\n}\n\n#sk-container-id-2 div.sk-toggleable__content pre {\n margin: 0.2em;\n border-radius: 0.25em;\n color: var(--sklearn-color-text);\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n /* unfitted */\n background-color: var(--sklearn-color-fitted-level-0);\n}\n\n#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n /* Expand drop-down */\n max-height: 200px;\n max-width: 100%;\n overflow: auto;\n}\n\n#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n content: \"▾\";\n}\n\n/* Pipeline/ColumnTransformer-specific style */\n\n#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n color: var(--sklearn-color-text);\n background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Estimator-specific style */\n\n/* Colorize estimator box */\n#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-2);\n}\n\n#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n#sk-container-id-2 div.sk-label label {\n /* The background is the default theme color */\n color: var(--sklearn-color-text-on-default-background);\n}\n\n/* On hover, darken the color of the background */\n#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n color: var(--sklearn-color-text);\n background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n/* Label box, darken color on hover, fitted */\n#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n color: var(--sklearn-color-text);\n background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Estimator label */\n\n#sk-container-id-2 div.sk-label label {\n font-family: monospace;\n font-weight: bold;\n display: inline-block;\n line-height: 1.2em;\n}\n\n#sk-container-id-2 div.sk-label-container {\n text-align: center;\n}\n\n/* Estimator-specific */\n#sk-container-id-2 div.sk-estimator {\n font-family: monospace;\n border: 1px dotted var(--sklearn-color-border-box);\n border-radius: 0.25em;\n box-sizing: border-box;\n margin-bottom: 0.5em;\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-0);\n}\n\n#sk-container-id-2 div.sk-estimator.fitted {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-0);\n}\n\n/* on hover */\n#sk-container-id-2 div.sk-estimator:hover {\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-2);\n}\n\n#sk-container-id-2 div.sk-estimator.fitted:hover {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-2);\n}\n\n/* Specification for estimator info (e.g. \"i\" and \"?\") */\n\n/* Common style for \"i\" and \"?\" */\n\n.sk-estimator-doc-link,\na:link.sk-estimator-doc-link,\na:visited.sk-estimator-doc-link {\n float: right;\n font-size: smaller;\n line-height: 1em;\n font-family: monospace;\n background-color: var(--sklearn-color-background);\n border-radius: 1em;\n height: 1em;\n width: 1em;\n text-decoration: none !important;\n margin-left: 1ex;\n /* unfitted */\n border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n color: var(--sklearn-color-unfitted-level-1);\n}\n\n.sk-estimator-doc-link.fitted,\na:link.sk-estimator-doc-link.fitted,\na:visited.sk-estimator-doc-link.fitted {\n /* fitted */\n border: var(--sklearn-color-fitted-level-1) 1pt solid;\n color: var(--sklearn-color-fitted-level-1);\n}\n\n/* On hover */\ndiv.sk-estimator:hover .sk-estimator-doc-link:hover,\n.sk-estimator-doc-link:hover,\ndiv.sk-label-container:hover .sk-estimator-doc-link:hover,\n.sk-estimator-doc-link:hover {\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-3);\n color: var(--sklearn-color-background);\n text-decoration: none;\n}\n\ndiv.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n.sk-estimator-doc-link.fitted:hover,\ndiv.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n.sk-estimator-doc-link.fitted:hover {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-3);\n color: var(--sklearn-color-background);\n text-decoration: none;\n}\n\n/* Span, style for the box shown on hovering the info icon */\n.sk-estimator-doc-link span {\n display: none;\n z-index: 9999;\n position: relative;\n font-weight: normal;\n right: .2ex;\n padding: .5ex;\n margin: .5ex;\n width: min-content;\n min-width: 20ex;\n max-width: 50ex;\n color: var(--sklearn-color-text);\n box-shadow: 2pt 2pt 4pt #999;\n /* unfitted */\n background: var(--sklearn-color-unfitted-level-0);\n border: .5pt solid var(--sklearn-color-unfitted-level-3);\n}\n\n.sk-estimator-doc-link.fitted span {\n /* fitted */\n background: var(--sklearn-color-fitted-level-0);\n border: var(--sklearn-color-fitted-level-3);\n}\n\n.sk-estimator-doc-link:hover span {\n display: block;\n}\n\n/* \"?\"-specific style due to the `<a>` HTML tag */\n\n#sk-container-id-2 a.estimator_doc_link {\n float: right;\n font-size: 1rem;\n line-height: 1em;\n font-family: monospace;\n background-color: var(--sklearn-color-background);\n border-radius: 1rem;\n height: 1rem;\n width: 1rem;\n text-decoration: none;\n /* unfitted */\n color: var(--sklearn-color-unfitted-level-1);\n border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n}\n\n#sk-container-id-2 a.estimator_doc_link.fitted {\n /* fitted */\n border: var(--sklearn-color-fitted-level-1) 1pt solid;\n color: var(--sklearn-color-fitted-level-1);\n}\n\n/* On hover */\n#sk-container-id-2 a.estimator_doc_link:hover {\n /* unfitted */\n background-color: var(--sklearn-color-unfitted-level-3);\n color: var(--sklearn-color-background);\n text-decoration: none;\n}\n\n#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n /* fitted */\n background-color: var(--sklearn-color-fitted-level-3);\n}\n</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> KNeighborsClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.neighbors.KNeighborsClassifier.html\">?<span>Documentation for KNeighborsClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>KNeighborsClassifier()</pre></div> </div></div></div></div>"
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.neighbors import KNeighborsClassifier\n",
|
||
"\n",
|
||
"knn = KNeighborsClassifier()\n",
|
||
"knn.fit(X_train, y_train)"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:04:21.655762Z",
|
||
"start_time": "2024-02-29T09:04:21.649291Z"
|
||
}
|
||
},
|
||
"id": "b2e04debfef26d18",
|
||
"execution_count": 14
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"训练集预测结果: ['B' 'B' 'B' 'M' 'M' 'M' 'B' 'M' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'B' 'M' 'M' 'M' 'B' 'B' 'M' 'B' 'M' 'B' 'B' 'B' 'B' 'M' 'M'\n",
|
||
" 'B' 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'M' 'M' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'M' 'B' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B' 'M' 'B'\n",
|
||
" 'M' 'M' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'M'\n",
|
||
" 'B' 'B' 'M' 'M' 'B' 'B' 'M' 'B' 'M' 'M' 'B' 'M' 'M' 'B' 'M' 'M' 'M' 'M'\n",
|
||
" 'B' 'B' 'B' 'M' 'M' 'B' 'M' 'M' 'M' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'M' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'M' 'B' 'M' 'B'\n",
|
||
" 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M'\n",
|
||
" 'M' 'B' 'B' 'B' 'M' 'M' 'M' 'B' 'M' 'B' 'B' 'M' 'M' 'M' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'M' 'M' 'B'\n",
|
||
" 'B' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M'\n",
|
||
" 'B' 'M' 'M' 'M' 'B' 'B' 'M' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'B'\n",
|
||
" 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'M' 'M' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'M' 'M' 'M' 'M' 'B' 'B' 'B' 'M' 'M' 'B' 'M' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'M' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'M' 'M' 'M' 'B' 'B' 'M' 'M' 'M' 'B'\n",
|
||
" 'B' 'M' 'M' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B' 'M' 'M'\n",
|
||
" 'M' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B']\n",
|
||
"测试集预测结果: ['B' 'M' 'M' 'B' 'B' 'M' 'M' 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'B' 'M' 'B' 'B'\n",
|
||
" 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B'\n",
|
||
" 'M' 'B' 'M' 'B' 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'M' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'M' 'B' 'B' 'B' 'M' 'M' 'M' 'B' 'B' 'M' 'M' 'B' 'B' 'B' 'M'\n",
|
||
" 'B' 'M' 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'M' 'M' 'M' 'M' 'B' 'M' 'B' 'B'\n",
|
||
" 'B' 'B' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'M' 'B' 'M' 'M' 'B' 'B' 'B' 'M'\n",
|
||
" 'B' 'B' 'M' 'B' 'M' 'M' 'B' 'M' 'B' 'B' 'B' 'B' 'M' 'B' 'B' 'M' 'B' 'M'\n",
|
||
" 'B' 'B' 'B' 'M' 'M' 'M' 'B' 'B' 'M' 'M' 'B' 'B' 'B' 'M' 'B' 'M' 'B']\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"y_pred_train = knn.predict(X_train)\n",
|
||
"y_pred_test = knn.predict(X_test)\n",
|
||
"print(\"训练集预测结果:\", y_pred_train)\n",
|
||
"print(\"测试集预测结果:\", y_pred_test)"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:05:17.922504Z",
|
||
"start_time": "2024-02-29T09:05:17.904693Z"
|
||
}
|
||
},
|
||
"id": "cac5ad8ea65fbab3",
|
||
"execution_count": 15
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"{'algorithm': 'auto', 'leaf_size': 30, 'metric': 'minkowski', 'metric_params': None, 'n_jobs': None, 'n_neighbors': 5, 'p': 2, 'weights': 'uniform'}\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(knn.get_params())"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:05:48.533747Z",
|
||
"start_time": "2024-02-29T09:05:48.530345Z"
|
||
}
|
||
},
|
||
"id": "34874ff1a197b193",
|
||
"execution_count": 16
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"训练集准确率: 0.8967136150234741\n",
|
||
"测试集准确率: 0.916083916083916\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"from sklearn.metrics import accuracy_score\n",
|
||
"\n",
|
||
"train_accuracy = accuracy_score(y_train, y_pred_train)\n",
|
||
"test_accuracy = accuracy_score(y_test, y_pred_test)\n",
|
||
"print(\"训练集准确率:\", train_accuracy)\n",
|
||
"print(\"测试集准确率:\", test_accuracy)"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:06:39.831762Z",
|
||
"start_time": "2024-02-29T09:06:39.827707Z"
|
||
}
|
||
},
|
||
"id": "a3ffa5d01d23080b",
|
||
"execution_count": 17
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": "<Figure size 640x480 with 1 Axes>",
|
||
"image/png": "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rcdsNtd7002r1YodO3Zgx44dlW6v6fiMjIxKI1oZGRkYNGgQWrVqVeXY2qaeA7YRF3t/zdUhtGvXrvD29sb69etrbMy+ur7GXIYSBIGXr8jjMOwQeQij0Viv3ckNBkO9nu+7777D1q1bsXfvXgwfPtxx+7V7Lnl7e1c728u+u/pnn32Gr7/+GkqlEpmZmdi4cWOVxx45cgTr16/HnDlzqlxSq+4568NkMlW7qODVn9H27dtx+PBhnD17Fnv27MFbb73luO+NN96oMupiDy41zW6zWq2oqKioFNhEUXSEj0ceeQQrV67EiRMn8Oabb1Y6VhRF/N///R9SU1MxevToOt+f1Wpt1GgekRwx7BB5CPusoroUFxfX63FhYWHYs2cPoqOj8cADDzS4nilTpjguUdkX1Lte69atq/dj+/btW+nST0BAAObOnVspiPj7+yM5ORldunTBa6+9hnvuuafSc1w7q8welOyjNvXxyiuvVPr5zjvvRHR0tOM5QkNDsW3bNgiCgL///hujR4+u13T8ioqKegc/IrnjrudE1CiiKEIUxTr7d4iIpMawQ0RERLLGf5IRERGRrDHsEBERkawx7BAREZGsMewQERGRrDHsEBERkawx7BAREZGscVHBaxQUlIKT8V2bIAAtWvjzXLkJni/3wXPlPniubOyfQ10Ydq4hivDoPzjuhOfKvfB8uQ+eK/fBc1U/vIxFREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDdFlqTilKDCapyyAioibGsEME4MBfhRi75ghe3p4mdSlERNTEGHaIAGw4egEAcCi7CFZRlLgaIiJqSgw75PHy9Ub890wBAEBvtOB8sUHiioiIqCkx7JDH23Y8B5arBnNO5eqkK4aIiJocww55NFEUsfnPiwCAQC8VAIYdIiK5Ydghj/bH+RKcvVQOL5UCY3u1AcCwQ0QkNww75NFS/swBANwZG4abogIBAKdy9VKWRERETYxhhzxWmdGCnafyAAAju7ZExzBfCAAK9Ebk643SFkdERE2GYYc81q60PJSZLGgT5IUbWwfAW61EuxBvALyURUQkJww75LFSLjcmj+jaEoIgAABiw/0AAGkMO0REssGwQx7pbGEZ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vh6Lvk8HADxxa1v06RAicUVERETyxLAjAb3RjBc3n4DBbMUt7YLw5G3tpC6JiIhIthh2mpkoilj0fTrOXipHuJ8GC+6Jg1LBhQOJiIichWGnma0/eh7fn8qDUiFg0fDOCPbRSF0SERGRrDHsNKM/L5TgrT22DT6n3NEBCa0DJa6IiIhI/hh2mklRuQlJKSdhtooY3CkUj/RoLXVJREREHoFhpxlYRRHztqUip7QCbYO9MefuTtzgk4iIqJkw7DSDT/6XhQN/XYJWZdvg00+rkrokIiIij8Gw42S/nL2ElT+fBQDMvLMjYsJ8Ja6IiIjIszDsOFFOaQXmbE2FCOC+bi0xrEuE1CURERF5HIYdJ1pz6ByKyk2IDffD84NipC6HiIjII7F5xIkGdwxFqcGEiX3bQ6tiriQiIpICw44T3RgViBujuJYOERGRlDjcQERERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyxrBDREREssawQ0RERLLGsENERESyppK6AFcjCFJXQHWxnyOeK/fA8+U+eK7cB8+VTX3fvyCKoujcUoiIiIikw8tYREREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7REREJGsMO0RERCRrDDtEREQkaww7ANLS0pCYmIhevXphyZIl4KLSrmvhwoWIjY11/HfXXXdJXRJdo7CwEIMGDcK5c+cct/E75pqqO1f8jrmmH374AYMHD0Z8fDzuvfdeZGRkAOB3q748PuwYjUZMmjQJXbp0wcaNG5GRkYFNmzZJXRbV4M8//8TKlStx8OBBHDx4EN98843UJdFVCgsLMWnSJPz999+O2/gdc03VnSuA3zFXlJWVhVmzZmHGjBnYu3cv2rdvj9mzZ/O71QAeH3b27t0LnU6HmTNnom3btpg+fTo2bNggdVlUDbPZjPT0dPTs2RMBAQEICAiAn5+f1GXRVaZPn47hw4dXuo3fMddU3bnid8w1ZWRkYMaMGbjnnnsQGhqKRx55BCdPnuR3qwE8PuykpqYiISEB3t7eAIDY2FjH8CC5lrS0NFitVtx3333o3r07nnjiCZw/f17qsugqCxYswLhx4yrdxu+Ya6ruXPE75poGDhyI0aNHO37OzMxEu3bt+N1qAI8POzqdDlFRUY6fBUGAQqFAcXGxhFVRdU6fPo0OHTpg6dKl2Lx5M1QqFebOnSt1WXSVNm3aVLmN3zHXVN254nfM9RmNRnz66ad4+OGH+d1qAI8PO0qlEhqNptJtWq0WBoNBooqoJiNHjsSmTZtw0003oX379pg/fz5+/vln6HQ6qUujWvA75j74HXN97777Lry9vTFq1Ch+txrA48NOYGAgCgsLK92m1+uhVqslqojqq0WLFrBarcjNzZW6FKoFv2Pui98x13LgwAF88cUXeOONN6BWq/ndagCPDzvdunXD0aNHHT9nZ2fDaDQiMDBQuqKoWkuWLEFKSorj5yNHjkChUCAyMlLCqqgu/I65D37HXFd2djZmzJiBefPmISYmBgC/Ww3h8WGnV69e0Ol02LhxIwBgxYoV6NOnD5RKpcSV0bXi4uLw9ttv48CBA9i/fz/mz5+P++67z9GcR66J3zH3we+YazIYDJg0aRIGDx6Mu+66C3q9Hnq9Hj179uR3q54EkSsQYdeuXZgxYwa0Wi0UCgVWr17tSM7kWt544w2sXbsWSqUSI0aMwPTp0+Hj4yN1WXSN2NhY7Nq1y9E8ye+Y67r2XPE75np++OEHPPPMM1Vu37VrF06dOsXvVj0w7FyWl5eH48ePIyEhAcHBwVKXQyQ7/I4ROQe/W3Vj2CEiIiJZ8/ieHSIiIpI3hh0iIiKSNYYdIiIikjWGHSKStaKioko/WywWlJaWSlMMEUmCYYeIZG306NH4/PPPHT+fO3cOPXv2RHZ2toRVEVFzUkldABFRY/3yyy+YOXMmdu/eXe39f/zxBy5duoRWrVrhjjvugEqlgtlsBgA8/vjjAGwjPffeey+mT5/ebHUTUfNi2CEi2XrvvfeQmJiIgQMHon///lCpVPjtt98wdepUR0Aym83gChxE8sawQ0Sy9PPPP2PPnj3o3bs3lEol1q5di02bNkGn06GkpAQPPPAAAOD+++/H2LFjJa6WiJyJYYeIZKGsrAxjxozBoEGDMG7cOMyZMwehoaGO+wsKCtCnTx88//zzjttWrlxZZddoIpIfhh0icnsWiwXTp09Hly5dMHnyZOzcuRMtW7ZEbGys4zEKhQJff/01duzY4bitpKQEY8aMkaJkImpGDDtE5PYWLlyIX375BT///DMA4K677sJtt92GN998s9LjRo8eXWVkp6KiollrJaLmx7BDRG7t/PnzOHbsGLp3745169Y5Zln5+flVeeyGDRuwZ88ex8+XLl3Cww8/3FylEpFEGHaIyK35+/tj5cqVOHfuHCZOnIjExMRqgw4APPjggxzZIfJADDtE5Nb8/f0REhKCkJAQ3HjjjVi1ahWmTZtW7WM5skPkmRh2iEg2pk6dikceeQSPPfYYwsPDYbFYYLFYYDQaAdQ8smM0GqFWqyEIglSlE5ETCSJX0yIimZo1axbCw8Oxbt06aDQaKBRVd8gRRRFGoxFbt25FUFBQ8xdJRE7HsENERESyxo1AiYiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNYYdoiIiEjWGHaIiIhI1hh2iIiISNb+Hxz6ORFwnkHJAAAAAElFTkSuQmCC"
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"import matplotlib.pyplot as plt\n",
|
||
"from pylab import mpl\n",
|
||
"\n",
|
||
"mpl.rcParams[\"font.sans-serif\"] = [\"SimHei\"]\n",
|
||
"\n",
|
||
"k_values = range(1, 23)\n",
|
||
"accuracies = []\n",
|
||
"for k in k_values:\n",
|
||
" knn = KNeighborsClassifier(n_neighbors=k)\n",
|
||
" knn.fit(X_train, y_train)\n",
|
||
" pred = knn.predict(X_test)\n",
|
||
" accuracies.append(accuracy_score(y_test, pred))\n",
|
||
"plt.plot(k_values, accuracies)\n",
|
||
"plt.xlabel('k值')\n",
|
||
"plt.ylabel('准确率')\n",
|
||
"plt.title('不同k值下的准确率')\n",
|
||
"plt.show()"
|
||
],
|
||
"metadata": {
|
||
"collapsed": false,
|
||
"ExecuteTime": {
|
||
"end_time": "2024-02-29T09:20:26.178865Z",
|
||
"start_time": "2024-02-29T09:20:25.994659Z"
|
||
}
|
||
},
|
||
"id": "42ff8fb694530848",
|
||
"execution_count": 23
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"outputs": [],
|
||
"source": [],
|
||
"metadata": {
|
||
"collapsed": false
|
||
},
|
||
"id": "d96ff8b92c302f60"
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 2
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython2",
|
||
"version": "2.7.6"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|