You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

860 lines
110 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "markdown",
"id": "31637f6b",
"metadata": {},
"source": [
"## 1.手写体识别"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "6bab32d4",
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import load_digits"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "80edf133",
"metadata": {},
"outputs": [],
"source": [
"digits = load_digits()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8ea44c1f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['DESCR', 'data', 'feature_names', 'frame', 'images', 'target', 'target_names']"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(digits)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3d36f2ec",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"\".. _digits_dataset:\\n\\nOptical recognition of handwritten digits dataset\\n--------------------------------------------------\\n\\n**Data Set Characteristics:**\\n\\n :Number of Instances: 1797\\n :Number of Attributes: 64\\n :Attribute Information: 8x8 image of integer pixels in the range 0..16.\\n :Missing Attribute Values: None\\n :Creator: E. Alpaydin (alpaydin '@' boun.edu.tr)\\n :Date: July; 1998\\n\\nThis is a copy of the test set of the UCI ML hand-written digits datasets\\nhttps://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits\\n\\nThe data set contains images of hand-written digits: 10 classes where\\neach class refers to a digit.\\n\\nPreprocessing programs made available by NIST were used to extract\\nnormalized bitmaps of handwritten digits from a preprinted form. From a\\ntotal of 43 people, 30 contributed to the training set and different 13\\nto the test set. 32x32 bitmaps are divided into nonoverlapping blocks of\\n4x4 and the number of on pixels are counted in each block. This generates\\nan input matrix of 8x8 where each element is an integer in the range\\n0..16. This reduces dimensionality and gives invariance to small\\ndistortions.\\n\\nFor info on NIST preprocessing routines, see M. D. Garris, J. L. Blue, G.\\nT. Candela, D. L. Dimmick, J. Geist, P. J. Grother, S. A. Janet, and C.\\nL. Wilson, NIST Form-Based Handprint Recognition System, NISTIR 5469,\\n1994.\\n\\n.. topic:: References\\n\\n - C. Kaynak (1995) Methods of Combining Multiple Classifiers and Their\\n Applications to Handwritten Digit Recognition, MSc Thesis, Institute of\\n Graduate Studies in Science and Engineering, Bogazici University.\\n - E. Alpaydin, C. Kaynak (1998) Cascading Classifiers, Kybernetika.\\n - Ken Tang and Ponnuthurai N. Suganthan and Xi Yao and A. Kai Qin.\\n Linear dimensionalityreduction using relevance weighted LDA. School of\\n Electrical and Electronic Engineering Nanyang Technological University.\\n 2005.\\n - Claudio Gentile. A New Approximate Maximal Margin Classification\\n Algorithm. NIPS. 2000.\\n\""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digits.DESCR#discription"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "938ce0d2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0., 0., 5., 13., 9., 1., 0., 0., 0., 0., 13., 15., 10.,\n",
" 15., 5., 0., 0., 3., 15., 2., 0., 11., 8., 0., 0., 4.,\n",
" 12., 0., 0., 8., 8., 0., 0., 5., 8., 0., 0., 9., 8.,\n",
" 0., 0., 4., 11., 0., 1., 12., 7., 0., 0., 2., 14., 5.,\n",
" 10., 12., 0., 0., 0., 0., 6., 13., 10., 0., 0., 0.])"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digits.data[0]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "14cac6af",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([[ 0., 0., 5., 13., 9., 1., 0., 0.],\n",
" [ 0., 0., 13., 15., 10., 15., 5., 0.],\n",
" [ 0., 3., 15., 2., 0., 11., 8., 0.],\n",
" [ 0., 4., 12., 0., 0., 8., 8., 0.],\n",
" [ 0., 5., 8., 0., 0., 9., 8., 0.],\n",
" [ 0., 4., 11., 0., 1., 12., 7., 0.],\n",
" [ 0., 2., 14., 5., 10., 12., 0., 0.],\n",
" [ 0., 0., 6., 13., 10., 0., 0., 0.]]),\n",
" 0)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digits.images[0], digits.target[0]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "85db1c61",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1797"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(digits.data)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "f3c67f60",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x2da27e566c8>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<Figure size 640x480 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZoAAAGkCAYAAAAIduO+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAYoElEQVR4nO3df2yUhR3H8c/R2oNpexak0I7jpygCtoMWCKvOHyCkQSL7oxKCWYXNRXJMsDFx/WewLOPqH1twGyk/xoqJYyDLis4MusKkZJkdpaQJaIJgmRwidG5wV7rkML3bX7utQ9o+R788PNf3K3midz7HfUIqb+5He75kMpkUAABGhrk9AACQ2QgNAMAUoQEAmCI0AABThAYAYIrQAABMERoAgClCAwAwRWgAAKYIDQDAVMaEZsuWLZo4caKGDx+uefPm6dixY25P6tfRo0e1dOlSFRUVyefzaf/+/W5PGpBwOKw5c+YoNzdXBQUFWrZsmU6fPu32rAGpq6tTcXGx8vLylJeXp/nz5+vAgQNuz3KstrZWPp9P69evd3tKvzZu3Cifz9frmDZtmtuzBuTTTz/Vc889p1GjRmnEiBF6+OGHdfz4cbdn9WvixIk3/J77fD6FQiFX9mREaPbu3avq6mpt2LBBJ06cUElJiRYvXqzOzk63p/Wpu7tbJSUl2rJli9tTHGlublYoFFJLS4uampr0xRdfaNGiReru7nZ7Wr/GjRun2tpatbW16fjx43ryySf1zDPP6IMPPnB72oC1trZq27ZtKi4udnvKgM2YMUOfffZZ6vjzn//s9qR+XblyReXl5brrrrt04MABffjhh/rJT36i/Px8t6f1q7W1tdfvd1NTkySpsrLSnUHJDDB37txkKBRKXe7p6UkWFRUlw+Gwi6uckZRsaGhwe0ZaOjs7k5KSzc3Nbk9JS35+fvKXv/yl2zMGpKurKzl16tRkU1NT8rHHHkuuW7fO7Un92rBhQ7KkpMTtGY69+uqryUceecTtGYNi3bp1ySlTpiQTiYQr9+/5RzTXr19XW1ubFi5cmLpu2LBhWrhwod5//30Xlw0d0WhUkjRy5EiXlzjT09OjPXv2qLu7W/Pnz3d7zoCEQiEtWbKk19e7F5w5c0ZFRUWaPHmyVq5cqfPnz7s9qV/vvPOOysrKVFlZqYKCAs2aNUs7duxwe5Zj169f15tvvqnVq1fL5/O5ssHzofn888/V09OjMWPG9Lp+zJgxunTpkkurho5EIqH169ervLxcM2fOdHvOgJw8eVL33HOP/H6/XnzxRTU0NGj69Oluz+rXnj17dOLECYXDYbenODJv3jzt2rVLBw8eVF1dnc6dO6dHH31UXV1dbk/rU0dHh+rq6jR16lQ1NjZqzZo1eumll/TGG2+4Pc2R/fv36+rVq3r++edd25Dt2j0jI4RCIZ06dcoTz7n/x4MPPqj29nZFo1H99re/VVVVlZqbm+/o2EQiEa1bt05NTU0aPny423McqaioSP17cXGx5s2bpwkTJuitt97St7/9bReX9S2RSKisrEybNm2SJM2aNUunTp3S1q1bVVVV5fK6gdu5c6cqKipUVFTk2gbPP6K57777lJWVpcuXL/e6/vLlyxo7dqxLq4aGtWvX6t1339V7772ncePGuT1nwHJycnT//fertLRU4XBYJSUlev31192e1ae2tjZ1dnZq9uzZys7OVnZ2tpqbm/Wzn/1M2dnZ6unpcXvigN1777164IEHdPbsWben9KmwsPCGv3w89NBDnnja7z8++eQTHTp0SN/5zndc3eH50OTk5Ki0tFSHDx9OXZdIJHT48GHPPO/uNclkUmvXrlVDQ4P+9Kc/adKkSW5PuiWJRELxeNztGX1asGCBTp48qfb29tRRVlamlStXqr29XVlZWW5PHLBr167p448/VmFhodtT+lReXn7D2/Y/+ugjTZgwwaVFztXX16ugoEBLlixxdUdGPHVWXV2tqqoqlZWVae7cudq8ebO6u7u1atUqt6f16dq1a73+Vnfu3Dm1t7dr5MiRGj9+vIvL+hYKhbR79269/fbbys3NTb0WFggENGLECJfX9a2mpkYVFRUaP368urq6tHv3bh05ckSNjY1uT+tTbm7uDa+B3X333Ro1atQd/9rYK6+8oqVLl2rChAm6ePGiNmzYoKysLK1YscLtaX16+eWX9fWvf12bNm3Ss88+q2PHjmn79u3avn2729MGJJFIqL6+XlVVVcrOdvmPelfe62bg5z//eXL8+PHJnJyc5Ny5c5MtLS1uT+rXe++9l5R0w1FVVeX2tD592WZJyfr6eren9Wv16tXJCRMmJHNycpKjR49OLliwIPnHP/7R7Vlp8crbm5cvX54sLCxM5uTkJL/61a8mly9fnjx79qzbswbk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\n",
"text/plain": [
"<Figure size 480x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.gray()#如果不加gray即使是灰度图plt默认三个通道都相同的值所以显示有颜色。\n",
"plt.matshow(digits.images[0])"
]
},
{
"cell_type": "markdown",
"id": "501e6e01",
"metadata": {},
"source": [
"显示多个。"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "5494019a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<Figure size 640x480 with 0 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfEAAAGzCAYAAAA/oi4aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAtIElEQVR4nO3df1BV953/8RegXn/xwwQiMvKV2NS62giuVmpHG7Nl19U00WRjLHFnlbWxOjHGUXdS224gPxrNdteY3VrU3RjSbaw/kl3t5gezwRlsE1EbI5ltTSMSqCAB1AgXNKLC+f7RCYYgyPlw7zn3I8/HzJ2JF9738845L3l7ufeeT5TjOI4AAIB1ov1uAAAAmGGIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphngvtbS06LHHHlNKSooGDRqkzMxMvfXWW363BXSrublZubm5+uu//mvddNNNioqKUkFBgd9tAdf129/+VsuXL9f48eM1ZMgQ/b//9//0wAMP6Pjx43635guGeC8tWrRIGzZs0IIFC/T8888rJiZGs2fP1ttvv+13a0CXzpw5oyeffFIffPCB0tPT/W4H6LFnn31Wr776qr71rW/p+eef15IlS/TrX/9af/7nf67f/e53frfnuSg2QDF3+PBhZWZm6ic/+YnWrFkjSbp48aK++tWv6pZbbtGBAwd87hC4tpaWFp07d07Jycl699139bWvfU0vvviiFi1a5HdrQLcOHDigyZMna8CAAe33lZWV6fbbb9f999+vX/ziFz525z2eiffCK6+8opiYGC1ZsqT9voEDB2rx4sUqKSlRVVWVj90BXQsEAkpOTva7DcC1b3zjGx0GuCR9+ctf1vjx4/XBBx/41JV/GOK9cPToUY0ZM0ZxcXEd7p8yZYokqbS01IeuAKBvcRxHdXV1SkxM9LsVzzHEe+Hjjz/WiBEjOt3/2X01NTVetwQAfc7LL7+sU6dOaf78+X634jmGeC98+umnCgQCne4fOHBg+9cBAOHzhz/8QQ8//LCmTp2qhQsX+t2O5xjivTBo0CC1tLR0uv/ixYvtXwcAhEdtba3uuusuxcfHt79Hqa/p53cDNhsxYoROnTrV6f6PP/5YkpSSkuJ1SwDQJzQ2NmrWrFlqaGjQb37zmz7785Zn4r2QkZGh48ePKxgMdrj/0KFD7V8HAITWxYsXdffdd+v48eN67bXXNG7cOL9b8g1DvBfuv/9+tba2auvWre33tbS06MUXX1RmZqZSU1N97A4Abjytra2aP3++SkpKtHv3bk2dOtXvlnzFr9N7ITMzU/PmzdPatWtVX1+v2267TS+99JIqKyv1wgsv+N0e0K2f/vSnamhoaP8Uxf/8z/+ourpakvTII48oPj7ez/aAa1q9erV+9atf6e6779Ynn3zS6eIuf/u3f+tTZ/7gim29dPHiRf3jP/6jfvGLX+jcuXOaMGGCnnrqKc2cOdPv1oBupaWl6Y9//OM1v1ZRUaG0tDRvGwJ6YMaMGdq/f3+XX+9rI40hDgCApXhNHAAASzHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsJSnF3tpa2tTTU2NYmNjFRUV5eXSMOQ4jpqampSSkqLo6L79bz7yaxeyexXZtYub7Ho6xGtqargUqaWqqqo0cuRIv9vwFfm1E9klu7bqSXY9HeKxsbFeLqe5c+ca1eXl5bmuKS4u9mwtSWpoaDCqM+X1uYtEthyD119/3XWN6SVWn3nmGaO6N954w6jOhC3nLZxsOQbTpk1zXbN9+3ajtf7v//7PqO6uu+4yqjPRk/Pm6RD3+tc4/fv3N6ozCbzp3uG2/GrLlj7DyZZjMGTIENc1Q4cONVrL9O+Yl2w5b+FkyzHo18/9SIqLizNay+Tvidd6ct6MXijatGmT0tLSNHDgQGVmZurw4cMmDwN4juzCVmQX1+J6iO/cuVOrVq1Sbm6u3nvvPaWnp2vmzJmqr68PR39AyJBd2Irsoiuuh/iGDRv00EMPKScnR+PGjdPmzZs1ePBgbdu2rdP3trS0KBgMdrgBfnGTXYn8InKQXXTF1RC/dOmSjhw5oqysrKsPEB2trKwslZSUdPr+devWKT4+vv3GuyPhF7fZlcgvIgPZRXdcDfEzZ86otbVVw4cP73D/8OHDVVtb2+n7165dq8bGxvZbVVVV77oFDLnNrkR+ERnILroT1nenBwIBBQKBcC4BhA35ha3Ibt/h6pl4YmKiYmJiVFdX1+H+uro6JScnh7QxIJTILmxFdtEdV0N8wIABmjRpkvbt29d+X1tbm/bt26epU6eGvDkgVMgubEV20R3Xv05ftWqVFi5cqMmTJ2vKlCnauHGjzp8/r5ycnHD0B4QM2YWtyC664nqIz58/X6dPn9bjjz+u2tpaZWRkqLCwsNObLoBIQ3ZhK7KLrkQ5juN4tVgwGDS+RrOJ8vJyo7rRo0e7rtm9e7fRWvPmzTOqe+CBB1zXmPYoSY2NjcaXN7xReJ1fU3v27HFdM2fOHKO1nn/+eaO6lStXGtWZILveZzcjI8Oo7ujRo65rGhsbjdYy3X8iLS3NqM5ET7Lbt/fnAwDAYgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALOV6FzO/TJo0yXWNyUYmkvSlL33Jdc1HH31ktNZbb71lVGdyPHqzAQq8Z7qJxIwZM0LaR3dKS0s9Wwv2mDt3rlHd+++/77rGZMMfScrNzTWqizQ8EwcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFLW7GI2bNgw1zVHjhwxWst0RzITpj3CLitXrnRdk5eXZ7RWfHy8UZ2J4uJiz9aCPTZu3GhUV1lZ6dlae/fuNaqLNDwTBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALHVDb4BSVFQUhk5Cy+T/S5LOnTsX4k4QTiabNBQUFBit5WU2EhISPFsL/jA5xyYb/kjS3LlzjepMLFq0yLO1woln4gAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWMqaXcxMdmaaNGlSGDq5NtPdyEx73L17t1EdEEoZGRlGdaWlpSHtA+GTl5fnuubRRx8NfSNdMN35rKGhIaR9+IVn4gAAWIohDgCApRjiAABYytUQz8vLU1RUVIfb2LFjw9UbEDJkF7Yiu+iO6ze2jR8/XkVFRVcfoJ81741DH0d2YSuyi664TkK/fv2UnJzco+9taWlRS0tL+5+DwaDb5YCQcZNdifwicpBddMX1a+JlZWVKSUnR6NGjtWDBAp08ebLL7123bp3i4+Pbb6mpqb1qFugNN9mVyC8iB9lFV1wN8czMTBUUFKiwsFD5+fmqqKjQ9OnT1dTUdM3vX7t2rRobG9tvVVVVIWkacMttdiXyi8hAdtEdV79OnzVrVvt/T5gwQZmZmRo1apR27dqlxYsXd/r+QCCgQCDQ+y6BXnKbXYn8IjKQXXSnVx8xS0hI0JgxY3TixIlQ9QN4guzCVmQXn9erId7c3Kzy8nKNGDEiVP0AniC7sBXZxee5GuJr1qzR/v37VVlZqQMHDujee+9VTEyMsrOzw9UfEBJkF7Yiu+iOq9fEq6urlZ2drbNnzyopKUnTpk3TwYMHlZSUFK7+gJAgu7AV2UV3XA3xHTt2hKuP6/roo49c15juEDZv3jxPanrj2Wef9XQ92/mZXaA3/M5uQUGB65oZM2YYrZWenu66Zs+ePUZr7d2716juxRdf9GytnuDa6QAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKVcbYDiJ5MNUL7//e8brbV+/XrXNUeOHDFaa/LkyUZ1uPE1NDQY1ZlstjBnzhyjtUw3ujDZVAP+KC0tdV2TkZFhtJZJXV5entFappmvrKx0XcMGKAAAoBOGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJbydAMUx3G8XE6XLl0yqmtqanJdc+HCBaO1bOH1uYtEthwDkywGg0GjtT799FOjOi/Zct7CyZZj0Nra6rrG9GevaeYvXrxoVGeiJ+ctyvHw7FZXVys1NdWr5RBCVVVVGjlypN9t+Ir82onskl1b9SS7ng7xtrY21dTUKDY2VlFRUR2+FgwGlZqaqqqqKsXFxXnVUq988MEHWrdunUpLS1VfX69BgwZp7NixWrFihWbNmtWrx46U4+E4jpqampSSkqLo6L796ktX+Y2Uc9UbP/nJT/T000/rz/7sz3Tw4MFePVakHA+ye9WNlN3f/OY3+va3v33NrxUVFelrX/ua8WNHyvFwk11Pf50eHR193X9VxMXFWROms2fP6uLFi8rJyVFKSoouXLigV199Vd/5zne0ZcsWLVmypNdrRMLxiI+P93X9SHG9/EbCuTJRXV2tDRs2aMiQIYqOjg7Z/0MkHA+y+yc3UnaHDBkiSVqxYkWngZ2enh6S/49IOB49za6nQ/xGM3v2bM2ePbvDfcuXL9ekSZO0YcOGkAxxINzWrFmjr3/962ptbdWZM2f8bgfokenTp+v+++/3uw3f9e3fMYVBTEyMUlNT1dDQ4HcrwHX9+te/1iuvvKKNGzf63QrgWlNTk65cueJ3G76KmCEeCASUm5urQCDgdyuunT9/XmfOnFF5ebmee+45vfnmm/rWt77Vq8e0+Xj0Nbaeq9bWVj3yyCP67ne/q9tvvz1kj2vr8eiLbD5XOTk5iouL08CBA3XnnXfq3Xff7fVj2ng8PH1j241q6dKl2rJli6Q/vfZ03333aevWrRo2bJjPnQFd27Rpk374wx+qrKxMSUlJmjFjhs6cOaPf/e53frcGdOnAgQPasGGDZs+ercTERB07dkz//M//rPPnz+vAgQOaOHGi3y16iiEeAn/4wx9UXV2tmpoa7dq1SwMGDFB+fr6GDx/ud2vANZ09e1ZjxozRD37wA61evVqSGOKw1okTJzRhwgR985vfVGFhod/teIohHgZ/9Vd/pYaGBh06dKjTR+mASLBs2TIVFRXp97//vQYMGCCJIQ67ZWdn67/+67904cIFxcTE+N2OZyLmNfEbyf3336/f/va3On78uN+tAJ2UlZVp69atWrFihWpqalRZWanKykpdvHhRly9fVmVlpT755BO/2wRcSU1N1aVLl3T+/Hm/W/EUQzwMPrsUZWNjo8+dAJ2dOnVKbW1tWrFihW699db226FDh3T8+HHdeuutevLJJ/1uE3Dlo48+0sCBAzV06FC/W/EUnxPvhfr6et1yyy0d7rt8+bJ+/vOfa9CgQRo3bpxPnQFd++pXv6r//u//7nT/j370IzU1Nen555/Xl770JR86A67v9OnTSkpK6nDf+++/r1/96leaNWtW37s6nxMhfvrTnzqjRo1yAoGAM2XKFOfQoUN+t3Rdc+fOdf7iL/7CycvLc/793//deeqpp5yxY8c6kpx/+Zd/MXrM3NxcR1KH21e+8pUQd45QsjG713LHHXc448ePN64nu/axMbt33nmnM3v2bOfpp592tm7d6qxcudIZPHiwEx8f7xw7dszoMW3ObkQ8E9+5c6dWrVqlzZs3KzMzUxs3btTMmTP14YcfdnqmG0nmz5+vF154Qfn5+Tp79qxiY2M1adIkPfvss7rnnnuMH3f8+PEqKipq/3O/fhFxmnANtmY3XMiuPWzN7ty5c/Xyyy9rw4YNCgaDSkpK0n333afc3Fzddtttxo9rbXb9/leE4zjOlClTnIcffrj9z62trU5KSoqzbt06H7vyR25urpOenu53G+ghsnsV2bUL2b3K5uz6/uLBpUuXdOTIEWVlZbXfFx0draysLJWUlPjYmX/KysqUkpKi0aNHa8GCBTp58qTfLeEayG5nZNcOZLczW7Pr+xA/c+aMWltbO10YZfjw4aqtrfWpK/9kZmaqoKBAhYWFys/PV0VFhaZPn66mpia/W8MXkN2OyK49yG5HNmfXkl/69x2f34d8woQJyszM1KhRo7Rr1y4tXrzYx86A7pFd2Mrm7Pr+TDwxMVExMTGqq6vrcH9dXZ2Sk5N96ipyJCQkaMyYMTpx4oTfreALyG73yG7kIrvdsym7vg/xAQMGaNKkSdq3b1/7fW1tbdq3b5+mTp3qY2eRobm5WeXl5RoxYoTfreALyG73yG7kIrvdsyq7fr+zznEcZ8eOHU4gEHAKCgqcY8eOOUuWLHESEhKc2tpav1vz3OrVq53i4mKnoqLCeeedd5ysrCwnMTHRqa+v97s1XAPZvYrs2oXsXmVzdj19TbytrU01NTWKjY3tsDHIrFmz9NRTT+lHP/qR6urqNGHCBL366qsaNGiQgsGgly36rqKiQvPnz9cnn3yixMRETZ06VW+99ZYCgYAvx8JxHDU1NSklJaXvXQnpC66VX7J7FdmNXGS3ezZn19NdzKqrq5WamurVcgihqqoqjRw50u82fEV+7UR2ya6tepJdT5+Jx8bGermcVq5caVT3xBNPuK6pqKgwWmvGjBlGdQ0NDUZ1prw+d5HIlmMQHx/vuiY/P99orQcffNCozku2nLdw8voYvP7660Z1Jp/NXrZsmdFaNujJefN0iHu9t3YgEDCqi4uLc11j+pfElv3GbekznGw5BiZ9Dh48OAydRAZbzls4eX0MhgwZYlQ3aNCgEHdit56cN6MXijZt2qS0tDQNHDhQmZmZOnz4sMnDAJ4ju7AV2cW1uB7in100Pzc3V++9957S09M1c+ZM1dfXh6M/IGTILmxFdtEV10N8w4YNeuihh5STk6Nx48Zp8+bNGjx4sLZt2xaO/oCQIbuwFdlFV1wNcbcXzW9paVEwGOxwA/xgsuED+UUkILvojqsh7vai+evWrVN8fHz7jY84wC8mGz6QX0QCsovuhPUKCGvXrlVjY2P7raqqKpzLASFFfmErstt3uPqImduL5gcCAeOPeQGhZLLhA/lFJCC76I6rZ+JcNB+2IruwFdlFd1xf7GXVqlVauHChJk+erClTpmjjxo06f/68cnJywtEfEDJkF7Yiu+iK6yE+f/58nT59Wo8//rhqa2uVkZGhwsLCTm+6ACIN2YWtyC66YnTZ1eXLl2v58uWh7gUIO7ILW5FdXIun107vjfXr17uumTdvntFa3/ve91zXbNmyxWitSZMmGdUVFRUZ1eHGt2jRItc1paWlIe8DfVdaWppR3R133OG6ZuHChUZr/fGPfzSqM/1/C5e+vckuAAAWY4gDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKWs2QNm6davrmmeffdZorXfffdd1zUcffWS0FhuZoCsJCQlGdSYboGzcuNFoLS83g6isrPRsLfROQ0ODUd2oUaNc1zQ2NhqtVVxcbFRn8vfS9Hj0BM/EAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwlDW7mJnsEjZ69GijtUzqTHcjGzZsmFHduXPnjOpgD5PdyCSzncUKCgqM1jLd/cxkV6e8vDyjteA90x3n0tPTXdfEx8cbrVVaWmpUF84dyUzwTBwAAEsxxAEAsBRDHAAASzHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwFEMcAABLMcQBALCUNRugmDDZNEWSbrrpJtc1b731ltFapnV/+Zd/6bqGTVP8M2fOHNc1zz33nNFaL730klGdiUcffdSoLicnJ8SdIJLMnTvXqG7GjBmuazIyMozWMv37ZcJ0o6Ce4Jk4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWuqF3MTNlstuXya5ikrRlyxajuscee8x1zfe//32jtdB7jY2NntRI0sKFC13XmO4EZWrPnj2ergc7FBcX+93CdaWlpfndQgc8EwcAwFIMcQAALOVqiOfl5SkqKqrDbezYseHqDQgZsgtbkV10x/Vr4uPHj1dRUdHVB+jHy+qwA9mFrcguuuI6Cf369VNycnI4egHCiuzCVmQXXXH9mnhZWZlSUlI0evRoLViwQCdPnuzye1taWhQMBjvcAL+4ya5EfhE5yC664mqIZ2ZmqqCgQIWFhcrPz1dFRYWmT5+upqama37/unXrFB8f335LTU0NSdOAW26zK5FfRAayi+64GuKzZs3SvHnzNGHCBM2cOVNvvPGGGhoatGvXrmt+/9q1a9XY2Nh+q6qqCknTgFtusyuRX0QGsovu9OrdEQkJCRozZoxOnDhxza8HAgEFAoHeLAGExfWyK5FfRCayi8/r1efEm5ubVV5erhEjRoSqH8ATZBe2Irv4PFdDfM2aNdq/f78qKyt14MAB3XvvvYqJiVF2dna4+gNCguzCVmQX3XH16/Tq6mplZ2fr7NmzSkpK0rRp03Tw4EElJSWFqz8gJMgubEV20R1XQ3zHjh3h6gMIK7ILW5FddOeGvuzP+vXrjeo+f2Wknho2bJjRWllZWUZ1u3fvNqqDP0x2Z0pISDBay2RHMtPdo1566SWjuoaGBqM62GHOnDlGdSY79+Xl5RmtZSrSduBjAxQAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSN/QGKOfOnTOq27JlS4g76ZrpRibf+973QtwJbhQmm4vEx8cbrVVQUGBUhxvbnXfeaVT36KOPhriTrplu3mO6WVC48EwcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwlKcboDiO4+VyamlpMapramoKcSdd+/TTTz1bqze8PneRyJZj0NbW5romGAwarXXlyhWjOi/Zct7CyetjcPHiRaM60xyasOFnb0/OW5Tj4dmtrq5WamqqV8shhKqqqjRy5Ei/2/AV+bUT2SW7tupJdj0d4m1tbaqpqVFsbKyioqI6fC0YDCo1NVVVVVWKi4vzqqWQKC0t1fr161VSUqKWlhalpaVp0aJFWrp0qfFjRsrxcBxHTU1NSklJUXR03371pav8Rsq5cmPZsmXavn17l1//4IMPlJKSYvTYkXI8yO5VN1J2Jam8vFxPP/20Dh48qHPnzmnkyJGaN2+eHnnkEQ0ePNj4cSPleLjJrqdDvDvBYFDx8fFqbGy0Kkz/+7//q7vvvlsTJ07U/PnzNXToUJWXl6utrU3/9E//ZPy4th6PvsjGc1VSUqLy8vIO9zmOo6VLlyotLU2///3vjR/bxuPRV9l4rqqqqjRhwgTFx8dr6dKluummm1RSUqKCggLdc8892rt3r/Fj23g8PH1N/EYTDAb1d3/3d7rrrrv0yiuv9Pl/7cMeU6dO1dSpUzvc9/bbb+vChQtasGCBT10B1/ef//mfamho0Ntvv63x48dLkpYsWaK2tjb9/Oc/17lz5zRs2DCfu/QOU6cXtm/frrq6Ov34xz9WdHS0zp8/b/SmIiASbN++XVFRUXrwwQf9bgXo0mdvfhs+fHiH+0eMGKHo6GgNGDDAj7Z8EzFDPBAIKDc3V4FAwO9WeqyoqEhxcXE6deqUvvKVr2jo0KGKi4vTsmXLjN+d+Rkbj0dfdSOcq8uXL2vXrl36xje+obS0tF491o1wPPoKG8/VjBkzJEmLFy9WaWmpqqqqtHPnTuXn52vFihUaMmSI8WPbeDwi5jVxG6Wnp+vEiROS/hSoGTNmqLi4WP/2b/+m73znO/rlL3/pc4dAz7z22mu6++679bOf/UzLli3zux2gW08//bSeeeaZDh8T++EPf6inn37ax678wWvivdDc3KwLFy5o6dKl+td//VdJ0n333adLly5py5YtevLJJ/XlL3/Z5y6B69u+fbv69++vBx54wO9WgOtKS0vTN7/5Tf3N3/yNbr75Zr3++ut65plnlJycrOXLl/vdnqcY4r0waNAgSVJ2dnaH+x988EFt2bJFJSUlDHFEvObmZu3du1czZ87UzTff7Hc7QLd27NihJUuW6Pjx4+2fob7vvvvU1tamxx57TNnZ2X0qxxHzmriNPvsc7RffYHHLLbdIks6dO+d5T4Bbe/bs4V3psMbPfvYzTZw4sdNFUO655x5duHBBR48e9akzfzDEe2HSpEmSpFOnTnW4v6amRpKUlJTkeU+AWy+//LKGDh2qe+65x+9WgOuqq6tTa2trp/svX74syY5LAYdSxAzxTZs2KS0tTQMHDlRmZqYOHz7sd0vX9dnrhy+88EKH+//jP/5D/fr1a38XpRt5eXmKiorqcBs7dmwo2kWY2Jjdz5w+fVpFRUW69957e3WlK4ns2sjG7I4ZM0ZHjx7V8ePHO9z/y1/+UtHR0ZowYYLrx7Q5uxHxmvjOnTu1atUqbd68WZmZmdq4caNmzpypDz/8sP1X05Fo4sSJ+vu//3tt27ZNV65c0R133KHi4mLt3r1ba9euNb5s5fjx41VUVNT+5379IuI04Rpsze5ndu7cqStXroTsV+lk1x62Zvcf/uEf9Oabb2r69Olavny5br75Zr322mt688039d3vfrfv/dx1IsCUKVOchx9+uP3Pra2tTkpKirNu3Tofu+qZS5cuOXl5ec6oUaOc/v37O7fddpvz3HPPGT9ebm6uk56eHrL+EF42Z9dxHOfrX/+6c8sttzhXrlzp9WORXbvYnN1Dhw45s2bNcpKTk53+/fs7Y8aMcX784x87ly9fNno8m7Pr+6/TL126pCNHjigrK6v9vujoaGVlZamkpMTHznqmf//+ys3NVWVlpS5duqSysjKtXLmyV49ZVlamlJQUjR49WgsWLNDJkydD0yxCyvbsSn+6hnpdXZ1iYmJC8nhk1w62Z3fKlCl644039PHHH+vSpUv68MMP9YMf/KBXz55tza7vQ/zMmTNqbW3t9A7v4cOHq7a21qeu/JOZmamCggIVFhYqPz9fFRUVmj59uqd7nKNnyG5HZNceZLcjm7NryS/9+45Zs2a1//eECROUmZmpUaNGadeuXVq8eLGPnQHdI7uwlc3Z9f2ZeGJiomJiYlRXV9fh/rq6OiUnJ/vUVeRISEjQmDFj2i/vishBdrtHdiMX2e2eTdn1fYgPGDBAkyZN0r59+9rva2tr0759+zptldgXNTc3q7y8XCNGjPC7FXwB2e0e2Y1cZLd7VmXX73fWOY7j7NixwwkEAk5BQYFz7NgxZ8mSJU5CQoJTW1vrd2ueW716tVNcXOxUVFQ477zzjpOVleUkJiY69fX1freGayC7V5Fdu5Ddq2zObkS8Jj5//nydPn1ajz/+uGpra5WRkaHCwsJOb7roC6qrq5Wdna2zZ88qKSlJ06ZN08GDB7n6W4Qiu1eRXbuQ3atszq6nW5G2tbWppqZGsbGxioqK8mpZ9ILjOGpqalJKSoqio31/9cVX5NcuZPcqsmsXN9n19Jl4TU2NUlNTvVwSIVJVVdVpw4G+hvzaieySXVv1JLueDvHY2FgvlzP2+uuvu66Jj483WmvatGlGdV6z5dyFk9fHYNmyZUZ1Jln89re/bbTW7bffblTX2NgY9rUcx1EwGCS78j6769evN6q76667XNe8/PLLRmvl5+cb1Zlk11RPzpunQ9yWX+MMGTLEdc3QoUPD0EnksOXchZPXxyAQCBjVDRw40HWNaX7j4uKM6kxexTM9/mTX+2NgkkHJ7B8bpmvZkIue9Gj0QpGNO98AEtmFvcgursX1EP9s55vc3Fy99957Sk9P18yZM1VfXx+O/oCQIbuwFdlFV1wP8Q0bNuihhx5STk6Oxo0bp82bN2vw4MHatm1bp+9taWlRMBjscAP84ia7EvlF5CC76IqrIe5255t169YpPj6+/ca7I+EXk12byC8iAdlFd1wNcbc736xdu1aNjY3tt6qqqt51Cxgy2bWJ/CISkF10J6zvTg8EAsbvsAX8Rn5hK7Lbd7h6Js7ON7AV2YWtyC6642qIs/MNbEV2YSuyi+64/nX6qlWrtHDhQk2ePFlTpkzRxo0bdf78eeXk5ISjPyBkyC5sRXbRFddDnJ1vYCuyC1uRXXTF013MgsGg8TXGTcyZM8eobs+ePa5rnnjiCaO18vLyjOq81tjYaHyJzRuF1/lduXKlZ2uVlpYa1Zn2mJCQ4LpmxowZRmuRXe+zW1xcbFSXlpYW0j66U1lZaVRnmkMTPclu396fDwAAizHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsBRDHAAASzHEAQCwFEMcAABLMcQBALAUQxwAAEsxxAEAsJTrXcxsYropiQmTTVOA7mzcuNGztUw34jHdsMLLTSTgPdMNdUw2JVm0aJHRWg0NDUZ1Jtk13RCmJ3gmDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApW7oXcwSEhKM6t5//33XNaa79qBvMNn5yMudvlauXOnZWpI0d+5c1zUFBQUh7wPhYXqujh496rrGdCc9013MTHZaCyeeiQMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiA5RrMLnAvekGEnv27DGqi7SL8KN7JucrIyPDaC0vN04x2chEkoqLi0PaByKL6c9eE3fccYdR3a233mpUF2k/e3kmDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApRjiAABYiiEOAIClGOIAAFiKIQ4AgKUY4gAAWIohDgCApaIcx3G8WiwYDCo+Pt6r5VRaWmpUl56e7rrm/fff92wtSZo4caLrGtPjIUmNjY2Ki4szrr8ReJ1fUyZ/pU13I9u7d69RnZfIbu+ya7Kb3tGjR43WeuKJJ1zXpKWlGa1lukugyd8V053PepJdnokDAGAphjgAAJZyNcTz8vIUFRXV4TZ27Nhw9QaEDNmFrcguutPPbcH48eNVVFR09QH6uX4IwBdkF7Yiu+iK6yT069dPycnJ4egFCCuyC1uRXXTF9WviZWVlSklJ0ejRo7VgwQKdPHmyy+9taWlRMBjscAP84ia7EvlF5CC76IqrIZ6ZmamCggIVFhYqPz9fFRUVmj59upqamq75/evWrVN8fHz7LTU1NSRNA265za5EfhEZyC6606vPiTc0NGjUqFHasGGDFi9e3OnrLS0tamlpaf9zMBj0NEx8TrwjPid+1fWyK/mfX1N8Trwjstu77PI58Y4i7XPivXp3REJCgsaMGaMTJ05c8+uBQECBQKA3SwBhcb3sSuQXkYns4vN69Tnx5uZmlZeXa8SIEaHqB/AE2YWtyC4+z9UQX7Nmjfbv36/KykodOHBA9957r2JiYpSdnR2u/oCQILuwFdlFd1z9Or26ulrZ2dk6e/askpKSNG3aNB08eFBJSUnh6g8ICbILW5FddMfVEN+xY0e4+gDCiuzCVmQX3bmhL/tTUFBgVPfcc8+5rjF996HpOytN3iHZm3enw3sbN240qmtsbHRds3//fqO1cOMz+dlmkkHJLPOmP0NN30G/aNEi1zV5eXlGa/UEG6AAAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYgOUazC5oL7JRfElqbi42Khuz549RnWwx4wZM4zqFi5c6LqmoaHBaC3c+EyyYfpz7dy5c65rTDdb2bt3r1Gd6cZE4cIzcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFIMcQAALMUQBwDAUgxxAAAsxRAHAMBSDHEAACzFEAcAwFKeboDiOI6Xyxmvd/HiRdc1wWDQaK0LFy4Y1bW2thrVmfL63EUir49Bc3OzUd3ly5dD3IndyK73x8D055rJz1Gvf/Z6eSx7slaU42FH1dXVSk1N9Wo5hFBVVZVGjhzpdxu+Ir92Irtk11Y9ya6nQ7ytrU01NTWKjY1VVFRUh68Fg0GlpqaqqqpKcXFxXrUUsSLleDiOo6amJqWkpCg6um+/+tJVfiPlXEWKSDkeZPcqstszkXI83GTX01+nR0dHX/dfFXFxcYTpcyLheMTHx/u6fqS4Xn4j4VxFkkg4HmT3T8iuO5FwPHqa3b79z1MAACzGEAcAwFIRM8QDgYByc3MVCAT8biUicDzswbnqiONhD85VRzYeD0/f2AYAAEInYp6JAwAAdxjiAABYiiEOAIClGOIAAFiKIQ4AgKUiZohv2rRJaWlpGjhwoDIzM3X48GG/W/JFXl6eoqKiOtzGjh3rd1voBtn9E7JrH7L7JzZnNyKG+M6dO7Vq1Srl5ubqvffeU3p6umbOnKn6+nq/W/PF+PHj9fHHH7ff3n77bb9bQhfIbkdk1x5ktyNbsxsRQ3zDhg166KGHlJOTo3Hjxmnz5s0aPHiwtm3b5ndrvujXr5+Sk5Pbb4mJiX63hC6Q3Y7Irj3Ibke2Ztf3IX7p0iUdOXJEWVlZ7fdFR0crKytLJSUlPnbmn7KyMqWkpGj06NFasGCBTp486XdLuAay2xnZtQPZ7czW7Po+xM+cOaPW1lYNHz68w/3Dhw9XbW2tT135JzMzUwUFBSosLFR+fr4qKio0ffp0NTU1+d0avoDsdkR27UF2O7I5u55uRYrrmzVrVvt/T5gwQZmZmRo1apR27dqlxYsX+9gZ0D2yC1vZnF3fn4knJiYqJiZGdXV1He6vq6tTcnKyT11FjoSEBI0ZM0YnTpzwuxV8AdntHtmNXGS3ezZl1/chPmDAAE2aNEn79u1rv6+trU379u3T1KlTfewsMjQ3N6u8vFwjRozwuxV8AdntHtmNXGS3e1Zl14kAO3bscAKBgFNQUOAcO3bMWbJkiZOQkODU1tb63ZrnVq9e7RQXFzsVFRXOO++842RlZTmJiYlOfX29363hGsjuVWTXLmT3KpuzGxGvic+fP1+nT5/W448/rtraWmVkZKiwsLDTmy76gurqamVnZ+vs2bNKSkrStGnTdPDgQSUlJfndGq6B7F5Fdu1Cdq+yObvsJw4AgKV8f00cAACYYYgDAGAphjgAAJZiiAMAYCmGOAAAlmKIAwBgKYY4AACWYogDAGAphjgAAJZiiAMAYCmGOAAAlvr/3KS33YDL4vYAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 640x480 with 9 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.gray()\n",
"fig = plt.figure()\n",
"for i, (images, labels) in enumerate(zip(digits.images[:9], digits.target[:9])):\n",
" fig.add_subplot(3,3,i+1)\n",
" plt.title(str(labels))\n",
" plt.imshow(images)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e00abaa6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digits.target_names"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f2e5c6e0",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "e9af25e7",
"metadata": {},
"outputs": [],
"source": [
"x_train, x_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=10)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "a2c62100",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1797, 1437, 360)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(digits.data), len(x_train), len(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "558522cc",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "cc3d8214",
"metadata": {},
"outputs": [],
"source": [
"lr = LogisticRegression()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "8d3dfb7c",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"D:\\envs\\stark-lin\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:818: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
"STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
"\n",
"Increase the number of iterations (max_iter) or scale the data as shown in:\n",
" https://scikit-learn.org/stable/modules/preprocessing.html\n",
"Please also refer to the documentation for alternative solver options:\n",
" https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
" extra_warning_msg=_LOGISTIC_SOLVER_CONVERGENCE_MSG,\n"
]
},
{
"data": {
"text/plain": [
"LogisticRegression()"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.fit(x_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "ffce7229",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.95"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.score(x_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "bb88e9c3",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x2da2b608f88>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 480x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.matshow(digits.images[100])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "829fe818",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"4"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"digits.target[100]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "61422431",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([4])"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.predict([digits.data[100]])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "43d3dd43",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.predict(digits.data[:10])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "38511984",
"metadata": {},
"outputs": [],
"source": [
"y_pred = lr.predict(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "d4a66067",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import confusion_matrix"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "319a768d",
"metadata": {},
"outputs": [],
"source": [
"cm = confusion_matrix(y_test, y_pred)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "7f878c1c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(95.72222222222221, 0.5, 'True')"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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9dRTT7k8bt68uf7880+lp6cX5Evi1tdff62oqCg99NBD+ef8/f01YMAAnTlzRmvXrnV5/QMPPODSqTm/3Ov3338vlHgAAP9DwQDA5505c0YhISFun9+/f7+KFSumKlWquJyvVq3aPxr31Vdf1alTp1S9enXdeOONeu6557Rt27Yrfv+wYcO0YsUKLVy4UN27d1daWpqKFfvfr93jx4/r1KlT+uCDDxQeHu5y9OrVS9Jf6/qlv/Y91KhR45Kbvffv369y5cpd8LU6vwxo//79+f9b0K9XTEyMy+Pzf6z/97//veTX4Ert379f119/vcvXR7owdm/FAwD4H/YwAPBpBw8eVFpa2j/+4/9qtGjRQnv27NFXX32lb775RtOmTdP48eM1depUPf7445d9/4033qi2bdtKku655x6dPXtWffr0UbNmzVSxYkU5HA5J0iOPPKIePXpc9DOcLydrJndXljJMujK3r8UDAEUZHQYAPu2TTz6RJLVv397taypVqiSHw6G9e/e6nE9JSbmiMS511+gyZcqoV69e+uyzz/THH38oLi7O5SpCBTF69GhlZmbq9ddflySFh4crJCREeXl5atu27UWPiIgISVJsbKx27typnJwct59fqVIlHT58+ILlW7/99lv+8+f/9598va5UQe7GXalSJe3evTu/iDrv77EDALyPggGAz1q1apVGjRqlKlWqqFu3bm5fd76YmDx5ssv5d99994rGCQoK0qlTpy44/+eff7o8Dg4OVrVq1ZSVlXVFn/t3sbGx6tKli2bOnKmjR4+qePHi6tKli7744gv9/PPPF7z++PHj+f9/ly5ddOLECb333nsXvO78v6rfcccdysvLu+A148ePl81mU4cOHST986/XlQoKCpKki35t/+6OO+7Q0aNHNW/evPxzubm5evfddxUcHKyWLVsWamwAgCvHkiQAPmHp0qX67bfflJubq2PHjmnVqlVasWKFKlWqpEWLFl3yrs4NGjRQly5dNGHCBP3555/5lwndtWuXpMv/S3eDBg00ZcoUvfbaa6pWrZoiIiLUpk0b1a5dW61atVKDBg1UpkwZbdq0SQsWLFC/fv2uOs/nnntOn3/+uSZMmKDRo0dr9OjRWr16tZo0aaI+ffqodu3aOnnypDZv3qxvv/1WJ0+elCR1795dH3/8sYYMGaIff/xRzZs3V0ZGhr79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HTt21Ouvv66YmBjdcMMN+umnn/T222+rd+/eZofmccuXL5dhGKpRo4ZSUlL03HPPqWbNmkX67xb8A2Zfpqkoeffdd42YmBgjICDAaNy4sbFx40azQ/Ko1atXG5IuOHr06GF2aB51sZwlGTNmzDA7NI/q3bu3UalSJSMgIMAIDw83br31VuObb74xOyxTWOGyqg888IARHR1tBAQEGOXLlzceeOABIyUlxeywvGLx4sVGnTp1DLvdbtSsWdP44IMPzA7JK5YvX25IMnbu3Gl2KF6Tnp5uDBw40IiJiTFKlChhVK1a1XjppZeMrKwss0PzuHnz5hlVq1Y1AgICjKioKKNv377GqVOnzA4LPspmGBa4nSEAAACAq8IeBgAAAABuUTAAAAAAcIuCAQAAAIBbFAwAAAAA3KJgAAAAAOAWBQMAAAAAtygYAAAAALhFwQAAAADALQoGAPAxPXv21D333JP/uFWrVho0aJDX41izZo1sNptOnTrl9bEBAL6DggEArlDPnj1ls9lks9kUEBCgatWq6dVXX1Vubq5Hx/33v/+tUaNGXdFr+SMfAFDY/MwOAACuJbfffrtmzJihrKwsff311+rbt6/8/f2VkJDg8rrs7GwFBAQUyphlypQplM8BAOBq0GEAgAKw2+2KiopSpUqV9PTTT6tt27ZatGhR/jKi119/XeXKlVONGjUkSX/88Yfuv/9+lS5dWmXKlFGnTp20b9++/M/Ly8vTkCFDVLp0aZUtW1bPP/+8DMNwGfPvS5KysrL0r3/9SxUrVpTdble1atX00Ucfad++fWrdurUk6brrrpPNZlPPnj0lSQ6HQ4mJiapSpYoCAwNVt25dLViwwGWcr7/+WtWrV1dgYKBat27tEicAwLooGADgHwgMDFR2drYkaeXKldq5c6dWrFihJUuWKCcnR+3bt1dISIi+++47/d///Z+Cg4N1++2357/nrbfe0syZMzV9+nStX79eJ0+e1MKFCy85Zvfu3fXZZ5/pnXfe0Y4dO/T+++8rODhYFStW1BdffCFJ2rlzp44cOaKJEydKkhITE/Xxxx9r6tSp+uWXXzR48GA98sgjWrt2raS/CpvOnTurY8eO2rJlix5//HG98MILnvqyAQCuISxJAoCrYBiGVq5cqeXLl6t///46fvy4goKCNG3atPylSJ9++qkcDoemTZsmm80mSZoxY4ZKly6tNWvWqF27dpowYYISEhLUuXNnSdLUqVO1fPlyt+Pu2rVLn3/+uVasWKG2bdtKkqpWrZr//PnlSxERESpdurSkvzoSb7zxhr799lvFx8fnv2f9+vV6//331bJlS02ZMkWxsbF66623JEk1atTQ9u3bNWbMmEL8qgEArkUUDABQAEuWLFFwcLBycnLkcDj08MMPa8SIEerbt69uvPFGl30LW7duVUpKikJCQlw+IzMzU3v27FFaWpqOHDmiJk2a5D/n5+enhg0bXrAs6bwtW7aoePHiatmy5RXHnJKSorNnz+q2225zOZ+dna2bbrpJkrRjxw6XOCTlFxcAAGujYACAAmjdurWmTJmigIAAlStXTn5+//s1GhQU5PLaM2fOqEGDBpo9e/YFnxMeHn5V4wcGBhb4PWfOnJEk/ec//1H58uVdnrPb7VcVBwDAOigYAKAAgoKCVK1atSt6bf369TVv3jxFRESoVKlSF31NdHS0fvjhB7Vo0UKSlJubq+TkZNWvX/+ir7/xxhvlcDi0du3a/CVJzs53OPLy8vLP1a5dW3a7XQcOHHDbmahVq5YWLVrkcm7jxo2XTxIAUOSx6RkAPKRbt24KCwtTp06d9N1332nv3r1as2aNBgwYoIMHD0qSBg4cqNGjR+vLL7/Ub7/9pmeeeeaS91CoXLmyevTood69e+vLL7/M/8zPP/9cklSpUiXZbDYtWbJEx48f15kzZxQSEqKhQ4dq8ODBmjVrlvbs2aPNmzfr3Xff1axZsyRJTz31lHbv3q3nnntOO3fu1Jw5czRz5kxPf4kAANcACgYA8JCSJUtq3bp1iomJUefOnVWrVi099thjyszMzO84PPvss3r00UfVo0cPxcfHKyQkRPfee+8lP3fKlCm677779Mwzz6hmzZrq06ePMjIyJEnly5fXyJEj9cILLygyMlL9+vWTJI0aNUqvvPKKEhMTVatWLd1+++36z3/+oypVqkiSYmJi9MUXX+jLL79U3bp1NXXqVL3xxhse/OoAAK4VNsPdzjoAAAAAlkeHAQAAAIBbFAwAAAAA3KJgAAAAAOAWBQMAAAAAtygYAAAAALhFwQAAAADALQoGAAAAAG5RMAAAAABwi4IBAAAAgFsUDAAAAADcomAAAAAA4Nb/A9NmTk5eCYVTAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 1000x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sn\n",
"plt.figure(figsize=(10,8))\n",
"plt.title(\"Digits Recognition\")\n",
"sn.heatmap(cm, annot=True)\n",
"plt.xlabel(\"Predicted\")\n",
"plt.ylabel(\"True\")"
]
},
{
"cell_type": "markdown",
"id": "34c5a18b",
"metadata": {},
"source": [
"## 2.鸢尾花识别"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "07a16459",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.datasets import load_iris"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "0cb6b5e7",
"metadata": {},
"outputs": [],
"source": [
"iris = load_iris()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "93eaff25",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['DESCR',\n",
" 'data',\n",
" 'data_module',\n",
" 'feature_names',\n",
" 'filename',\n",
" 'frame',\n",
" 'target',\n",
" 'target_names']"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dir(iris)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "b8e7e686",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"150"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(iris.data)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "a4c34091",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(150, 4)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.data.shape"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "1f7d8b6b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
" 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n",
" 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"iris.target"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "4e62908b",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "7cd0d160",
"metadata": {},
"outputs": [],
"source": [
"x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=10)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "5f19db88",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(150, 120, 30)"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(iris.data), len(x_train), len(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "3e3a9bad",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.linear_model import LogisticRegression"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "6240628c",
"metadata": {},
"outputs": [],
"source": [
"lr = LogisticRegression()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "a0e21d08",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LogisticRegression()"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lr.fit(x_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "fa87fe2a",
"metadata": {},
"outputs": [],
"source": [
"y_pred = lr.predict(x_test)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "6ba931a9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([1, 2, 0, 1, 0, 1, 1, 1, 0, 1, 1, 2, 1, 0, 0, 2, 1, 0, 0, 0, 2, 2,\n",
" 2, 0, 1, 0, 1, 1, 1, 2]),\n",
" array([1, 2, 0, 1, 0, 1, 1, 1, 0, 1, 1, 2, 1, 0, 0, 2, 1, 0, 0, 0, 2, 2,\n",
" 2, 0, 1, 0, 1, 1, 1, 2]))"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_pred, y_test"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "60a4514f",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 40,
"id": "139465f8",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics import confusion_matrix"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "dc96b868",
"metadata": {},
"outputs": [],
"source": [
"cm = confusion_matrix(y_pred, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "d2f239a8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(95.72222222222221, 0.5, 'True')"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAwwAAAK9CAYAAACJnusfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA88klEQVR4nO3de5xVdbk/8GdzG0aEQeQmioJyVAwCFTU1uSiJWipZmh0vgGmZSAKSSqWAlKOleRfMG1pa2knJvOQxFJW8ImFpiuK1VG4hcAAdLnv9/ujHtJawlIGBPYPvd6/16jVrr73Ww+61Gx4+z3etQpIkSQAAAKxDg1IXAAAA1F0aBgAAIJeGAQAAyKVhAAAAcmkYAACAXBoGAAAgl4YBAADIpWEAAAByaRgAAIBcGgZgizV48ODo1KlTqcuot2ry+Y0dOzYKhcKmLQiAktAwAPXGpEmTolAoxPTp0zf7tQuFQmZr0aJF9OnTJ+6///7NXkupLF++PMaOHRtTp04tdSkAbEaFJEmSUhcBsD4mTZoUQ4YMieeeey569er1qcevXLkyisVilJWVbfS1C4VCfOlLX4qTTz45kiSJt99+OyZMmBDvv/9+PPjggzFgwICNvkZd8/HPb8GCBdGmTZsYM2ZMjB07NnPsqlWrYtWqVdG0adMSVArAptSo1AUA1LZly5ZFs2bNonHjxrV63l133TVOPPHE6p+/9rWvxR577BFXXnnlFtkw1OTza9SoUTRq5FcKwJbISBJQrw0ePDi23nrreP311+OII46I5s2bxwknnFD92sdn8H/zm9/E3nvvHc2bN48WLVpE9+7d48orr9yga3ft2jVat24dr7/+emZ/VVVVjBkzJrp06RJlZWXRsWPHOOecc6Kqqmqtc/zqV7+KfffdN7baaqvYZpttonfv3vG///u/mWOuu+66+NznPhdlZWXRoUOHGDp0aCxatGitc1177bWx8847R3l5eey7777xxBNPRN++faNv377Vx0ydOjUKhULcdddd8ZOf/CR22GGHaNq0aRxyyCExe/bszPnSn99bb70Vbdq0iYiIcePGVY9mrUka1rWGYdWqVTF+/PjYZZddoqysLDp16hQ/+MEP1vocOnXqFF/5yldi2rRpse+++0bTpk1j5513jttuuy33swdg89EwAPXeqlWrYsCAAdG2bdu49NJL42tf+9o6j3v44Yfjm9/8ZmyzzTZxySWXxMUXXxx9+/aNP//5zxt03cWLF8cHH3wQ22yzTfW+YrEYRx11VFx66aVx5JFHxtVXXx0DBw6Myy+/PL7xjW9k3j9u3Lg46aSTonHjxnHhhRfGuHHjomPHjvHII49UHzN27NgYOnRodOjQIS677LL42te+Ftdff30ceuihsXLlyurjJkyYEGeeeWbssMMO8dOf/jQOOuigGDhwYPzzn/9cZ+0XX3xx3HPPPTFq1KgYPXp0PP3009WN1rq0adMmJkyYEBERX/3qV+OXv/xl/PKXv4xjjjkm9z2nnnpqXHDBBbHXXnvF5ZdfHn369InKyso4/vjj1zp29uzZ8fWvfz2+9KUvxWWXXRbbbLNNDB48OF566aXc8wOwmSQA9cQtt9ySRETy3HPPVe8bNGhQEhHJeeedt9bxgwYNSnbaaafqn88666ykRYsWyapVq2p87YhIvvWtbyXz589P5s2bl0yfPj057LDDkohIfvazn1Uf98tf/jJp0KBB8sQTT2TeP3HixCQikj//+c9JkiTJa6+9ljRo0CD56le/mqxevTpzbLFYTJIkSebNm5c0adIkOfTQQzPHXHPNNUlEJDfffHOSJElSVVWVbLvttsk+++yTrFy5svq4SZMmJRGR9OnTp3rfo48+mkRE0rVr16Sqqqp6/5VXXplERPK3v/2tet/HP7/58+cnEZGMGTNmrc9nzJgxSfpXysyZM5OISE499dTMcaNGjUoiInnkkUeq9+20005JRCSPP/549b558+YlZWVlydlnn73WtQDYvCQMwBbhu9/97qce07Jly1i2bFk8/PDDG3SNm266Kdq0aRNt27aNXr16xZQpU+Kcc86JkSNHVh/z29/+Nrp27Rq77757LFiwoHo7+OCDIyLi0UcfjYiIyZMnR7FYjAsuuCAaNMj+X/Ga0Z4//elPsWLFihg+fHjmmNNOOy1atGhRfYem6dOnx7/+9a847bTTMusITjjhhEz6kTZkyJBo0qRJ9c8HHXRQRES88cYbG/TZfNwDDzwQEZH5bCIizj777IiIte4utccee1TXEPHvRGO33XartXoA2HAaBqDea9SoUeywww6fetwZZ5wRu+66axx++OGxww47xCmnnBJ//OMf1/s6Rx99dDz88MNx//33V8/sL1++PPOX+ddeey1eeumlaNOmTWbbddddIyJi3rx5ERHx+uuvR4MGDWKPPfbIvd7bb78dERG77bZbZn+TJk1i5513rn59zX936dIlc1yjRo1yn6Ow4447Zn5e01h88MEHn/gZrK+33347GjRosFZN7du3j5YtW1bXnFfPmppqqx4ANpxbWgD1XllZ2Vr/Sr8ubdu2jZkzZ8ZDDz0UDz74YDz44INxyy23xMknnxy33nrrp75/hx12iP79+0dExBFHHBGtW7eOM888M/r161c9y18sFqN79+7x85//fJ3n6NixYw3+ZJtOw4YN17k/qeU7ba/vw9w2Vz0A1JyEAfhMadKkSRx55JFx3XXXxeuvvx7f+c534rbbblvrDkHr4zvf+U7ssssu8aMf/aj6L7a77LJLLFy4MA455JDo37//WtuatGCXXXaJYrEYf//733PPv9NOO0VExKxZszL7V6xYEW+++Wb162v+++N/hlWrVsVbb71V4z9Xnpo8yXmnnXaKYrEYr732Wmb/3LlzY9GiRdU1A1D3aRiAz4x//etfmZ8bNGgQn//85yMi1nnL00/TqFGjOPvss+Pll1+O3//+9xERcdxxx8W7774bN9xww1rHf/jhh7Fs2bKIiBg4cGA0aNAgLrzwwigWi5nj1jQf/fv3jyZNmsRVV12V+Zf2m266KRYvXhxf/vKXIyKiV69ese2228YNN9wQq1atqj7u9ttvr9WRnq222ioiYp23dP24I444IiIirrjiisz+NcnLmtoBqPuMJAGfGaeeemosXLgwDj744Nhhhx3i7bffjquvvjp69uwZXbt23aBzDh48OC644IK45JJLYuDAgXHSSSfFXXfdFaeffno8+uijceCBB8bq1avjlVdeibvuuiseeuih6NWrV3Tp0iV++MMfxvjx4+Oggw6KY445JsrKyuK5556LDh06RGVlZbRp0yZGjx4d48aNi8MOOyyOOuqomDVrVlx33XWxzz77VD9ErkmTJjF27NgYNmxYHHzwwXHcccfFW2+9FZMmTYpddtmlRsnAJykvL4899tgj7rzzzth1112jVatW0a1bt+jWrdtax/bo0SMGDRoUv/jFL2LRokXRp0+fePbZZ+PWW2+NgQMHRr9+/WqlJgA2PQ0D8Jlx4oknxi9+8Yu47rrrYtGiRdG+ffv4xje+EWPHjl2vNRDrUl5eHmeeeWaMHTs2pk6dGn379o3JkyfH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r5W0YXjyySejsrIyWrduHV26dIk//OEPMWDAgDjooIPijTfeWK9zlJWVRYsWLTJboVDYxJVTEytXrowZM/4aB/f7YvW+QqEQB/f7Yjz99PMlrAzqNt8d2Dgtv/alWP2vxbF06rOlLoV6ppgkJdvqopI2DB9++GE0avSfZ8cVCoWYMGFCHHnkkdGnT5949dVXS1gdtenyK2+IU7/133HSScfG7rt3iWuvuTiaNSuPSbfeWerSoE7z3YENVChExTFfisWT/xSxuljqaqBeK+mTnnffffeYPn16dO3aNbP/mmuuiYiIo446qhRlsQn89rf3RpvWrWLsBaOiffs28cILL8WXv3JizJu34NPfDJ9hvjuwYbY6oGc03r5tLPqfh0tdCvVQ3fx3/rVVVlbG3XffHa+88kqUl5fHAQccEJdccknstttutXqdQlLCWwpVVlbGE088EQ888MA6Xz/jjDNi4sSJUSzW7F8GGjXZvjbKA4D18mKnHqUuAeqd3V9d99//6oKDtj+kZNd+4t0p633sYYcdFscff3zss88+sWrVqvjBD34QL774Yvz973+PZs2a1VpNJW0YNhUNAwCbk4YBaq4uNwwHbn9wya7953cf2eD3zp8/P9q2bRuPPfZY9O7du9ZqKulIEgAA8B9VVVVRVVWV2VdWVhZlZWWf+t7FixdHRESrVq1qtaaSP7gNAAD4t3U9Y6yysvJT31csFmP48OFx4IEHRrdu3Wq1JgkDAACkFEu47Hn06NExcuTIzL71SReGDh0aL774YkybNq3Wa9IwAABAHbG+40dpZ555Ztx3333x+OOPxw477FDrNWkYAAAgpb7cEyhJkhg2bFjcc889MXXq1OjcufMmuY6GAQAA6qGhQ4fGHXfcEb///e+jefPmMWfOnIiIqKioiPLy8lq7jkXPAABQD02YMCEWL14cffv2je222656u/POO2v1OhIGAABIKeWi55rYXKNTEgYAACCXhAEAAFKSepIwbC4SBgAAIJeGAQAAyGUkCQAAUurLcxg2FwkDAACQS8IAAAAp9eW2qpuLhAEAAMglYQAAgBRrGLIkDAAAQC4NAwAAkMtIEgAApFj0nCVhAAAAckkYAAAgJZEwZEgYAACAXBoGAAAgl5EkAABIKXoOQ4aEAQAAyCVhAACAFIuesyQMAABALgkDAACkWMOQJWEAAAByaRgAAIBcRpIAACDFoucsCQMAAJBLwgAAACkWPWdJGAAAgFwaBgAAIJeRJAAASLHoOUvCAAAA5JIwAABAikXPWRIGAAAgl4QBAABSrGHIkjAAAAC5NAwAAEAuI0kAAJCSJMVSl1CnSBgAAIBcEgYAAEgpWvScIWEAAAByaRgAAIBcRpIAACAl8aTnDAkDAACQS8IAAAApFj1nSRgAAIBcEgYAAEixhiFLwgAAAOTSMAAAALmMJAEAQErRSFKGhAEAAMglYQAAgJTEbVUzJAwAAEAuDQMAAJDLSBIAAKR4DkOWhAEAAMglYQAAgJSiRc8ZEgYAACCXhAEAAFKsYciSMAAAALk0DAAAQC4jSQAAkFI0kpQhYQAAAHJJGAAAIMWi5ywJAwAAkEvDAAAA5DKSBAAAKZ70nCVhAAAAckkYAAAgxaLnLAkDAACQS8IAAAApHtyWJWEAAAByaRgAAIBcRpIAACAlcVvVDAkDAACQS8IAAAApFj1nSRgAAIBcGgYAACCXkSQAAEjxpOcsCQMAAJBLwgAAACluq5olYQAAAHJpGAAAgFxGkgAAIMWi5ywJAwAAkEvCAAAAKRKGLAkDAADUU9dee2106tQpmjZtGvvtt188++yztX4NDQMAAKQkJdxq4s4774yRI0fGmDFjYsaMGdGjR48YMGBAzJs3bwP/5OumYQAAgHro5z//eZx22mkxZMiQ2GOPPWLixImx1VZbxc0331yr19EwAABAHVFVVRVLlizJbFVVVWsdt2LFinj++eejf//+1fsaNGgQ/fv3j6eeeqpWa9oiFz2vWvFuqUsgR1VVVVRWVsbo0aOjrKys1OVAveB7AxvGd4cNVcq/S44dOzbGjRuX2TdmzJgYO3ZsZt+CBQti9erV0a5du8z+du3axSuvvFKrNRUSy8DZjJYsWRIVFRWxePHiaNGiRanLgXrB9wY2jO8O9VFVVdVaiUJZWdlaTe97770X22+/fTz55JOx//77V+8/55xz4rHHHotnnnmm1mraIhMGAACoj9bVHKxL69ato2HDhjF37tzM/rlz50b79u1rtSZrGAAAoJ5p0qRJ7L333jFlypTqfcViMaZMmZJJHGqDhAEAAOqhkSNHxqBBg6JXr16x7777xhVXXBHLli2LIUOG1Op1NAxsVmVlZTFmzBiLz6AGfG9gw/jusKX7xje+EfPnz48LLrgg5syZEz179ow//vGPay2E3lgWPQMAALmsYQAAAHJpGAAAgFwaBgAAIJeGAQAAyKVhYLO59tpro1OnTtG0adPYb7/94tlnny11SVCnPf7443HkkUdGhw4dolAoxOTJk0tdEtQLlZWVsc8++0Tz5s2jbdu2MXDgwJg1a1apy4J6S8PAZnHnnXfGyJEjY8yYMTFjxozo0aNHDBgwIObNm1fq0qDOWrZsWfTo0SOuvfbaUpcC9cpjjz0WQ4cOjaeffjoefvjhWLlyZRx66KGxbNmyUpcG9ZLbqrJZ7LfffrHPPvvENddcExH/fhJhx44dY9iwYXHeeeeVuDqo+wqFQtxzzz0xcODAUpcC9c78+fOjbdu28dhjj0Xv3r1LXQ7UOxIGNrkVK1bE888/H/3796/e16BBg+jfv3889dRTJawMgM+CxYsXR0REq1atSlwJ1E8aBja5BQsWxOrVq9d66mC7du1izpw5JaoKgM+CYrEYw4cPjwMPPDC6detW6nKgXmpU6gIAADaVoUOHxosvvhjTpk0rdSlQb2kY2ORat24dDRs2jLlz52b2z507N9q3b1+iqgDY0p155plx3333xeOPPx477LBDqcuBestIEptckyZNYu+9944pU6ZU7ysWizFlypTYf//9S1gZAFuiJEnizDPPjHvuuSceeeSR6Ny5c6lLgnpNwsBmMXLkyBg0aFD06tUr9t1337jiiiti2bJlMWTIkFKXBnXW0qVLY/bs2dU/v/nmmzFz5sxo1apV7LjjjiWsDOq2oUOHxh133BG///3vo3nz5tXr5SoqKqK8vLzE1UH947aqbDbXXHNN/OxnP4s5c+ZEz54946qrror99tuv1GVBnTV16tTo16/fWvsHDRoUkyZN2vwFQT1RKBTWuf+WW26JwYMHb95iYAugYQAAAHJZwwAAAOTSMAAAALk0DAAAQC4NAwAAkEvDAAAA5NIwAAAAuTQMAABALg0DAACQS8MAUMcMHjw4Bg4cWP1z3759Y/jw4Zu9jqlTp0ahUIhFixZt9msDUHdoGADW0+DBg6NQKEShUIgmTZpEly5d4sILL4xVq1Zt0uvefffdMX78+PU61l/yAahtjUpdAEB9cthhh8Utt9wSVVVV8cADD8TQoUOjcePGMXr06MxxK1asiCZNmtTKNVu1alUr5wGADSFhAKiBsrKyaN++fey0007x3e9+N/r37x/33ntv9RjRT37yk+jQoUPstttuERHxj3/8I4477rho2bJltGrVKo4++uh46623qs+3evXqGDlyZLRs2TK23XbbOOeccyJJksw1Pz6SVFVVFeeee2507NgxysrKokuXLnHTTTfFW2+9Ff369YuIiG222SYKhUIMHjw4IiKKxWJUVlZG586do7y8PHr06BH/8z//k7nOAw88ELvuumuUl5dHv379MnUC8NmlYQDYCOXl5bFixYqIiJgyZUrMmjUrHn744bjvvvti5cqVMWDAgGjevHk88cQT8ec//zm23nrrOOyww6rfc9lll8WkSZPi5ptvjmnTpsXChQvjnnvu+cRrnnzyyfHrX/86rrrqqnj55Zfj+uuvj6233jo6duwYv/vd7yIiYtasWfH+++/HlVdeGRERlZWVcdttt8XEiRPjpZdeihEjRsSJJ54Yjz32WET8u7E55phj4sgjj4yZM2fGqaeeGuedd96m+tgAqEeMJAFsgCRJYsqUKfHQQw/FsGHDYv78+dGsWbO48cYbq0eRfvWrX0WxWIwbb7wxCoVCRETccsst0bJly5g6dWoceuihccUVV8To0aPjmGOOiYiIiRMnxkMPPZR73VdffTXuuuuuePjhh6N///4REbHzzjtXv75mfKlt27bRsmXLiPh3InHRRRfFn/70p9h///2r3zNt2rS4/vrro0+fPjFhwoTYZZdd4rLLLouIiN122y3+9re/xSWXXFKLnxoA9ZGGAaAG7rvvvth6661j5cqVUSwW47//+79j7NixMXTo0OjevXtm3cILL7wQs2fPjubNm2fO8dFHH8Xrr78eixcvjvfffz/222+/6tcaNWoUvXr1WmssaY2ZM2dGw4YNo0+fPutd8+zZs2P58uXxpS99KbN/xYoVseeee0ZExMsvv5ypIyKqmwsAPts0DAA10K9fv5gwYUI0adIkOnToEI0a/ef/Rps1a5Y5dunSpbH33nvH7bffvtZ52rRps0HXLy8vr/F7li5dGhER999/f2y//faZ18rKyjaoDgA+OzQMADXQrFmz6NKly3odu9dee8Wdd94Zbdu2jRYtWqzzmO222y6eeeaZ6N27d0RErFq1Kp5//vnYa6+91nl89+7do1gsxmOPPVY9kpS2JuFYvXp19b499tgjysrK4p133slNJrp27Rr33ntvZt/TTz/96X9IALZ4Fj0DbCInnHBCtG7dOo4++uh44okn4s0334ypU6fG9773vfjnP/8ZERFnnXVWXHzxxTF58uR45ZVX4owzzvjEZyh06tQpBg0aFKecckpMnjy5+px33XVXRETstNNOUSgU4r777ov58+fH0qVLo3nz5jFq1KgYMWJE3HrrrfH666/HjBkz4uqrr45bb701IiJOP/30eO211+L73/9+zJo1K+64446YNGnSpv6IAKgHNAwAm8hWW20Vjz/+eOy4445xzDHHRNeuXeNb3/pWfPTRR9WJw9lnnx0nnXRSDBo0KPbff/9o3rx5fPWrX/3E806YMCG+/vWvxxlnnBG77757nHbaabFs2bKIiNh+++1j3Lhxcd5550W7du3izDPPjIiI8ePHx/nnnx+VlZXRtWvXOOyww+L++++Pzp07R0TEjjvuGL/73e9i8uTJ0aNHj5g4cWJcdNFFm/DTAaC+KCR5K+sAAIDPPAkDAACQS8MAAADk0jAAAAC5NAwAAEAuDQMAAJBLwwAAAOTSMAAAALk0DAAAQC4NAwAAkEvDAAAA5NIwAAAAuf4fmNxRVtwnJ0oAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 1000x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sn\n",
"plt.figure(figsize=(10,8))\n",
"plt.title(\"Iris Recognition\")\n",
"sn.heatmap(cm, annot=True)\n",
"plt.xlabel(\"Predicted\")\n",
"plt.ylabel(\"True\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}