{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.simplefilter(action='ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. 数据预处理" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "x_train_flatten = x_train.reshape(x_train.shape[0], 784).astype('float32')\n", "x_test_flatten = x_test.reshape(x_test.shape[0], 784).astype('float32')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "x_train_normalize = x_train_flatten / 255.0\n", "x_test_normalize = x_test_flatten / 255.0" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "y_train_one_hot = tf.keras.utils.to_categorical(y_train)\n", "y_test_one_hot = tf.keras.utils.to_categorical(y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. 建立模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.1 建立 Sequential 模型" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.models.Sequential([\n", " tf.keras.layers.Dense(units=256, input_dim=784, kernel_initializer='normal', activation='relu'), # 输入层-隐藏层\n", " tf.keras.layers.Dense(units=10, kernel_initializer='normal', activation='softmax') # 输出层\n", "])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2 查看模型的摘要" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense (Dense) (None, 256) 200960 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 10) 2570 \n", "=================================================================\n", "Total params: 203,530\n", "Trainable params: 203,530\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. 训练模型" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 48000 samples, validate on 12000 samples\n", "Epoch 1/10\n", " - 2s - loss: 12.1313 - acc: 0.2359 - val_loss: 9.5054 - val_acc: 0.3956\n", "Epoch 2/10\n", " - 2s - loss: 6.8008 - acc: 0.5620 - val_loss: 5.5449 - val_acc: 0.6429\n", "Epoch 3/10\n", " - 2s - loss: 5.1265 - acc: 0.6690 - val_loss: 4.6647 - val_acc: 0.6992\n", "Epoch 4/10\n", " - 2s - loss: 4.5862 - acc: 0.7053 - val_loss: 4.4342 - val_acc: 0.7142\n", "Epoch 5/10\n", " - 2s - loss: 4.3743 - acc: 0.7202 - val_loss: 4.3324 - val_acc: 0.7225\n", "Epoch 6/10\n", " - 2s - loss: 4.2436 - acc: 0.7291 - val_loss: 4.1828 - val_acc: 0.7323\n", "Epoch 7/10\n", " - 2s - loss: 3.4656 - acc: 0.7763 - val_loss: 2.8037 - val_acc: 0.8164\n", "Epoch 8/10\n", " - 2s - loss: 2.6635 - acc: 0.8274 - val_loss: 2.6640 - val_acc: 0.8268\n", "Epoch 9/10\n", " - 2s - loss: 2.5528 - acc: 0.8349 - val_loss: 2.5826 - val_acc: 0.8305\n", "Epoch 10/10\n", " - 2s - loss: 2.4391 - acc: 0.8420 - val_loss: 2.4225 - val_acc: 0.8404\n" ] } ], "source": [ "train_history = model.fit(x=x_train_normalize, y=y_train_one_hot, validation_split=0.2,\n", " epochs=10, batch_size=200, verbose=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. 以图形显示训练过程" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def show_train_history(train_history, train, validation):\n", " plt.plot(train_history.history[train])\n", " plt.plot(train_history.history[validation])\n", " plt.title('Train History')\n", " plt.xlabel('Epoch')\n", " plt.ylabel(train)\n", " plt.legend(['train', 'validation'], loc='upper left')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_train_history(train_history, 'acc', 'val_acc')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_train_history(train_history, 'loss', 'val_loss')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. 评估模型的准确率" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 0s 33us/step\n", "\n", "accuracy: 0.8402\n" ] } ], "source": [ "scores = model.evaluate(x_test_normalize, y_test_one_hot)\n", "print()\n", "print('accuracy:', scores[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6. 进行预测" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.1 执行预测" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "predictions = model.predict_classes(x_test_normalize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.2 预测结果" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([7, 2, 1, ..., 4, 5, 6])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.3 定义函数以显示10项预测结果" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def plot_images_labels_prediction(images, labels, predictions, idx, num=10):\n", " \"\"\"\n", " images: 数字图像数组\n", " labels: 真实值数组\n", " predictions: 预测结果数据\n", " idx: 开始显示的数据index\n", " num: 要显示的数据项数, 默认为10, 不超过25\n", " \"\"\"\n", " fig = plt.gcf()\n", " fig.set_size_inches(12, 14)\n", " if num > 25:\n", " num = 25\n", " for i in range(0, num):\n", " ax = plt.subplot(5, 5, i+1)\n", " ax.imshow(images[idx], cmap='binary')\n", " title = 'lable=' + str(labels[idx])\n", " if len(predictions) > 0:\n", " title += ',predict=' + str(predictions[idx])\n", " ax.set_title(title, fontsize=10)\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " idx += 1\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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5ClTpph8xRVX5LA6VJf3338/4bGePXuavHTp0mqq5hcvvviiyW3btjV51113rc5yssKdWQAAAASLziwAAACCRWcWAAAAwWLMLEqCP7Zs4sSJKddv3759wmP+mNeysjKTGzZsaPKGDRtMPuCAA0yeO3euyatWrUpZE2quOXPmmOy3NZHEMXUofitWrDD5vPPOK1AlKCYvvPBCwmPr168vQCWW/zvw0UcfNXns2LHVWU5WuDMLAACAYNGZBQAAQLDozAIAACBYRTdmdsKECSb78/DttNNOJterV8/k3r17J+xzhx12MLlVq1ZVKRFF6F//+pfJzjmT/TGyycYs7bjjjlkdc8iQISYvWrQo5frHH398VvtH6Zo/f77J999/v8l9+vSpznKQA8OHD094bNKkSSa/++67VTrGjBkzTPavcyIiHTp0MLlr165VOiaqbuPGjSY/99xzBaoktc6dO5s8dOhQk7///nuTGzRokPeaMsWdWQAAAASLziwAAACCRWcWAAAAwSq6MbM33nijydl+PvGIESMSHmvUqJHJ7dq1y7quXPM/47hfv34m+2NXkNoJJ5xg8pIlS0zedtttTW7atGmVjzlu3DiT/XlngYp89NFHJvtj0Xr16lWd5SAHrrnmmoTHateundNjPPPMMymziEiLFi1Mfuqpp0zed999c1oT0nvttddMnjlzZsI6N910U3WVU6HVq1ebvHDhQpN/+OEHkxkzCwAAAOQAnVkAAAAEi84sAAAAglV0Y2ZHjRplsv/59v541w8//NDkDz74IGGf06dPN/mtt94y2R9j9Pnnn2dU6xZ169ZNeKysrMxkfx5UvwZ/DC1jZqumZcuWOd/nvffea/LHH3+ccv0DDjggZUbNdc8995hcXl5uMv//i99xxx1ncrI5Xzdt2lSlY/i/R/wxisuWLUvY5rPPPjN5v/32M3nz5s1Vqgnp+fNIn3nmmSYnm+u+f//+ea0pE5MnTy50CZXGnVkAAAAEi84sAAAAgkVnFgAAAMEqujGzRx11VMrs6969e9p9rlmzxmR/XK0/Pi3bz8/eeuutEx5r3bq1yW3atDHZn89tt912y+qYyL+pU6eaPHDgQJPXr19vcvPmzU0eNGiQydtss00Oq0NI/Pmy/WuMf70opvkbEfP666+bvHjxYpNVNWGbbOeZvfTSS00+5phjTG7cuLHJr776asI+7rrrrpTHeOihh0zu27dvNiUiA/7PwJ+fdfTo0QnbNGzYMK81JeP3Q/w2nqxNFyvuzAIAACBYdGYBAAAQLDqzAAAACBadWQAAAASr6N4Alg9NmjQx+cgjj0y5fro3nWXi6aefNtl/E9ree+9tsj+pMgpv9uzZJvtv+PL16tXL5MMOOyznNSFM/hsrfM2aNaumSpAp/017/jV65cqVWe/T/4Ce0047zeRbbrnF5HRvGk324TAPP/ywyX6d/fr1M/mnn34y+YorrjA52YcCwZowYYLJzz33nMn+hyT4H2RRKHfeeafJ/hu+Dj/8cJO32267fJdUadyZBQAAQLDozAIAACBYdGYBAAAQrBoxZjbfli9fnvDYZZddZrJzzmR/Av6mTZvmvjBk5eSTTzb5hRdeSLn+eeedZ7I//gjYYt68eSmf98cxovB+/vlnkyszRrZr164mjxs3zuSysrLsC4uTbMxs//79Tb7uuutM/v777032296JJ55oMh/ok9748eNN9r/HxfDBFP4YcBGRMWPGmFynju0SDhgwwORiHj/NnVkAAAAEi84sAAAAgkVnFgAAAMFizGwOPPjggwmP+eNo/fnZWrdundeakNq//vWvhMdmzpxpsj+vrD8XqD+eqGHDhjmqDqGbNWuWyY899pjJ++yzj8lHH3103mtCfiWbO9T/uVd1jGwm/DGvTz75pMnvvPNO3msodWvXrjX5rbfeSrm+/x6aQhg5cmTCYytWrDC5Xbt2Jqebk7+YcGcWAAAAwaIzCwAAgGDRmQUAAECwGDNbCW+88YbJgwYNSrvNs88+a3L79u1zWhOy07Nnz4TH0s0j2bt3b5OZfxEVeeWVV0xes2aNyd27dze5Xr16ea8JVbNp06aUz7/99tvVVElq/pzmmzdvTvm8f1633HKLyaNHj85hdaXBfz/Fl19+afJZZ51VneVk5JNPPkm7Tsj9Eu7MAgAAIFh0ZgEAABAsOrMAAAAIFmNmK+G5554zecOGDQnrdOvWzeQuXbrktSakNnnyZJM/+OCDtNscfvjhJt9+++25LAklbO7cuSmfP/3006upElTWiBEjTK5du3aBKsnOlClTTPavdapqsn9et912W34KKyHbbrutyR07djR5/vz5Jq9evdrkpk2b5qewOP5c9+PHj0+7zcEHH5yvcvKOO7MAAAAIFp1ZAAAABIvOLAAAAILFmNkM/PjjjyY///zzJm+99dYJ2/jjjurWrZv7wlChVatWmXz33XebnGycs88fB9WwYcOqF4aS9M0335g8Y8YMk9u0aWPyKaeckveaUDVTp04tdAkJVqxYYfKHH36YsI5/rUunrKzMZH5XpVe/fn2TW7VqZfKECRNM7tGjh8nXXXddlWtYsGCByf48ssuWLTPZHyudTK1a4d7fDLdyAAAA1Hh0ZgEAABAsOrMAAAAIFmNmM3Dvvfea7M/bd+yxxyZsc9BBB+W1JqT2pz/9yeR33nkn7TYnn3yyycwri0w9/vjjJn/77bcmJ7tGANm66667TH7wwQez3kd5ebnJTzzxhMktWrTIep813a233mqyc85kf/z1mWeeWeVjNmvWzGR/TOzKlSuz3ucFF1xQpZoKiTuzAAAACBadWQAAAASLziwAAACCRWcWAAAAweINYEn4g7XvuOMOkxs3bmzyzTffnPeakJ2hQ4dmvY3/Zgo+JAGZ8ico9zVp0qSaKkEpOe6440xevHhxlffZrl07kw899NAq77Oma9u2rclPPfWUyf6bxv0POKiM0047LeXz5513nsmjR49Ou0//wyBCwp1ZAAAABIvOLAAAAIJFZxYAAADBYsysiKxatcrkq666yuSNGzea7I9j6tKlS34KQ7Xy20HdunWrtD9/bHWy/f38888mr127NuU+16xZY/KwYcOyrqt27domDx482ORtttkm633WdFOmTEn5/PHHH19NlSBX/InvN23alHL9adOmpd3nRRddZPLXX3+dVQ3+xPiV4b8nBPm3zz77pMz58Jvf/CbrbebPn2/yXnvtlaty8o47swAAAAgWnVkAAAAEi84sAAAAglUjx8z6Y5+6d+9u8meffWZyq1atTPbnnUVp2HvvvXO6vzPOOMPkHXfcMWGdb7/91uSxY8fmtIZMNG/e3OQBAwZUew2hmTFjhsn+zxHh69u3r8n9+vVLuX6PHj0SHvPHp2f7vP+7Kt36yVx66aVZb4Pw+eOt/ZxMSGNkfdyZBQAAQLDozAIAACBYdGYBAAAQrBo5Ztb/XOTZs2enXH/o0KEm77bbbjmvCbnlzwU8adKkaq/B/3zuyvDnpq1VK/XfnyeeeKLJnTt3TnuMQw45JPvCariJEyea7M9F7c8jedhhh+W9JuRWz549Tb7nnntMXrlyZXWWIyIiZWVlJrdt2zZhnUceecTkZGP1Ufr8OYlzMUdxMePOLAAAAIJFZxYAAADBojMLAACAYNWIMbPLli0z+Zhjjkm5/pAhQ0zmc9XD88wzz5jsj3fbsGFD1vv88MMPTc52TtgLL7ww4bGWLVum3ObUU081OdkYOeTXDz/8kPDYtGnTUm5z+umnm1yZ+UFRWP7/zXHjxpnsj8O/77778l7T//7v/5p8xRVX5P2YCNNPP/2Udp369etXQyXVgzuzAAAACBadWQAAAASLziwAAACCVSPGzD788MMm+2Noff6ckKU+P1tNkO5z1StjzJgxOd8nio8/16+IyHbbbWfySSedZPLVV1+d15pQ/bp27ZoyJ3svxsiRI02eMmWKySeccILJl1xyicnOOZPbtWuXWbGo8R577DGT/WuWiMjAgQOrq5y8484sAAAAgkVnFgAAAMGiMwsAAIBgldyY2RkzZiQ89sADDxSgEgClINmY2VmzZhWgEhSz7t27Z/QYUB32228/k6+99tqEdY488sjqKifvuDMLAACAYNGZBQAAQLDozAIAACBYdGYBAAAQrJJ7A9gbb7yR8Nh//vOflNu0atXK5IYNG+a0JgAAgOrif0BHqePOLAAAAIJFZxYAAADBojMLAACAYJXcmNlMdOzY0eRXXnnF5KZNm1ZnOQAAAKgk7swCAAAgWHRmAQAAECw6swAAAAhWyY2Z/cMf/pDRYwAAAAgfd2YBAAAQLDqzAAAACBadWQAAAARLnXOZr6y6QkSW5a8cVKOWzrlm+dgx7aTk0FaQCdoJMkVbQSYybidZdWYBAACAYsIwAwAAAASLziwAAACCRWcWAAAAwaIzCwAAgGDRmQUAAECw6MwCAAAgWHRmAQAAECw6swAAAAgWnVkAAAAEi84sAAAAgkVnFgAAAMGiMwsAAIBg0ZkFAABAsOjMAgAAIFh0ZgEAABAsOrMAAAAIFp1ZAAAABIvOLAAAAIJFZxYAAADBojMLAACAYNGZBQAAQLDozAIAACBYdGYBAAAQLDqzAAAACBadWQAAAASLziwAAACCRWcWAAAAwcprZ1ZV16V5vlxVF1Tw3HRV7VzF47dR1Vmqul5Vb6jKvrI87lJVLYuWZ6ZZ93xV3SmLfRfknPKt0G0lbl/7qepGVT0tF/vL4Hjron93UtUJada9RlW3qcQxTlVVl6vvUaEVuq2oahNVnaiq81T1HVVtX5X9ZXHcfF5XCnJO+VQE7eRwVV2rqnOir4FV2V8Wx81bO4nbrlqvk/lWBG2Fa0oVlfqd2dUicpWIDKnqjlS1TmW2c84dlGaV80Ukm4tJzs4JlqrWFpHBIvJiDvaTFefc1865dL8YrhGRrDqzqrqtiFwtIm9nWxMq1F9E5jjn9haRPiLy58ruqIiuKzk7JxgznHMdo6/bK7uTImonObtOwuCaUkXV0plV1Yaq+oqqvq+q81X1pLin66jqk6q6SFUnJLvzpKrHRHcj31fV8araMJPjOueWO+feFZGf09S3TlWHqerCqM5m0ePTVfU+VZ0tIlerajNVfVpV342+Do7W215VX4y2HyUiGr/vuOWbovOfq6qDor9qO4vIk9Ff7vVzdU6hKlRbiVwpIk+LyPIKaitX1cXJaoj+wh2squ+LyOmqupuqPq+q76nqDFVtE63366i++ap6p7fvBdFybVUdoqoLor9qr1TVqyR2IXlNVV/L4pzukNgvnp+y2CYIBWwr7UTkVRER59xiESlX1eZJ9h/MdSXTcwpRga8pmdQXUjsRSXOdDBnXlP8uh3dNcc7l7UtE1kX/1hGRRtFymYgskdg3sVxEnIgcHD33qIjcEC1Pl9g3r0xE/iEiDaLHbxKRgdHyMBGZk+Tr914dt27ZbwV1OhHpHS0PFJEH4mr4S9x6Y0TkkGi5hYgsipaHx9XUI9pfmfc9OFZEZorINlFuGn+eccfIyTmF9lXotiIiO4vI6xL7A+9xETktSY2palgqIv3i1n1FRHaPlg8QkVej5cki0idavjzuvMtFZEG03FdEJohIHa+tLN3SrqI8roJz2rL/TiLydLJ2FvJXEbSVu0VkWLS8v4hsFJF9k9QZzHUl03MK6asI2snhIrJKROaKyDQR2bOCOkNqJ2mvkyF+FUFb4ZpSxa9K3Y6uBBWRu1W1q4hslth/iC099C+cc29Gy6Ml8SX0AyXWw39TVUVEthKRWSIizrlrc1TfZol1DLbU8Ezcc+PilruJSLuoDhGRRtFfXl1FpGdU099VdU2SY3QTkceccz9E661OVkgOzylUhWor94nITc65zXE/32RS1TBOJPbXvYgcJCLj4/a1dfTvwSJyarT8V4ndNfV1E5ERzrmNUe0VtZVeFRWpqrVEZKjEXhoqVYVqK4NE5M+qOkdE5ovIByKyKcl6IV1XMj2nEBWqnbwvIi2dc+tU9TgRmSQiuydZL6R2kul1MlRcUwK9plRXZ7a3iDSTWK/8Z1VdKiL1ouect66fVURecs6d5e9UVYeJyBFJjjfWOTeoCvXG1/B93HItETnQOWdess3lf+o8nlMoCtVWOovI2OhnWSYix6nqRufcpDTHTNZWaonIv51zHZMcL9k+KkVVx4lI6yRPDRWRZ0WkvYhMj85pBxGZrKonOudm5+L4RaAgbcU5952IXBCtqyLymYh8mkG9RXtdqcI5haCQ7SS2U+eeU9W/qGqZc25lmnqLtp1I5tfJUHFNyVDRXVPydcvXu219tYjcHy0fIbEfQLn8cuu+S/TcKBG5Pv6WtsQa1uci0ip6vIGI7JFlHbeK95K8xF4G3tn9cuv+zGh5QFyt08XeVh8jIjfG5Y7ul1v3A9wvt+iT3brvLslv3U8RkSMq8b1NOKeQv4qlrUTbPS5xL5+JyOLo31Q1LBU7BGCmiJweLauIdIiWJ4vIOdFyX0k+zOBSST7MYL6I/LqS31/TlkP+KnRbEZHtRGSraPkiEfm/uOeCvK6kOqdQv4qgnewgIhot7x/tZ0sOsp145/e4lN4wA64pgV5Tqms2gydFpLOqzpfYu9oWxz33kYhcrqqLRKSJiDwUv6FzboXEXir9m6rOk9ht+zaZHFRVd1DVL0XkOhEZoKpfqmqj6CXYVhKbGUAk9hfN/hp7A86RIlLRu06vis5jnqp+KLFOh4jIbSLSVVUXSuwW/uf+hs655yXWkZkd3XbfMq3W4yIyItNB1RWdU7rtAlKQtlIRjU1bEv/nbMoa4vQWkQtVda6ILBSRLW8kuDrafr7EXsJKZpTE2tC8aPuzo8dHisjzmt0bwEpZodpKWxFZoKofSewXwtUi/x3aEeR1paJzKhGFaienSex7OldinYgznXMu8HZS6rimBHpN2fJXYo2isfnOfuecuy7K65xzOX2HKkqDqh4vIr9xzg1X1XIRmeqcC34OTuQe1xVkgnaCTNFWMlcjO7M+GggyQWcW2eC6gkzQTpAp2krF6MwCAAAgWKX+CWAAAAAoYXRmAQAAEKys5pktKytz5eXleSoF1Wnp0qWycuXKvMx6TTspLe+9995K51yzfOybtlI6uKYgU1xTkIlsrilZdWbLy8tl9uxSmW+9ZuvcuXPe9k07KS2quixf+6atlA6uKcgU1xRkIptrCsMMAAAAECw6swAAAAgWnVkAAAAEi84sAAAAgkVnFgAAAMGiMwsAAIBg0ZkFAABAsOjMAgAAIFh0ZgEAABAsOrMAAAAIFp1ZAAAABIvOLAAAAIJFZxYAAADBojMLAACAYNUpdAEAACB7a9asSXjs888/z2ofLVu2NHnYsGEmt2/f3uQ99tgjYR8dOnTI6phArnFnFgAAAMGiMwsAAIBg0ZkFAABAsBgzWwlTpkwx+cQTT0xY5/777ze5b9++JteuXTv3haFCy5cvN/mMM85IWOeggw4y+eKLLza5vLw853Vla+3atSb/4x9PVQ43AAAPN0lEQVT/MLl79+4m161bN+81AciPqVOnmuz/7pk+fXrCNv/85z+zOkbr1q1NXrp0qcnr169Pu4/NmzdndUwg17gzCwAAgGDRmQUAAECw6MwCAAAgWIyZzcCqVatM9se/JnPllVeafOGFF5pcv379qheGCvnzL+65554m+2NPRUSaN29ucjGOke3UqZPJK1euNHn27Nkm77777vkprIb77rvvTP79739v8sKFC01++eWXTWYsc830ySefmPzggw+aPHLkSJN//PFHk51zOa/po48+yvk+gerGnVkAAAAEi84sAAAAgkVnFgAAAMFizGwG/Lk8v/rqq7TbnHXWWSbXq1cvpzXB8seO+vPI+uOeL7/88oR9+HMDF4M777zT5M8++8xkf4wdY2Rzb/To0QmPDRgwwOTPP/885T78Mbbbb7991QtDcL788kuT77vvvmqvoU2bNia3b9++2mtA9pYsWWKy/ztv4sSJJvtzENeqlXjv8tJLLzXZn2s9pN8n3JkFAABAsOjMAgAAIFh0ZgEAABAsxswm4X8WtT9uMRPnnnuuyapapZqQ2vvvv29yss8sjzdw4MA8VlN5CxYsMHnIkCEmn3LKKSb36tUr7zXVNP64xmuvvTZhHX+8Wrr/3/680w888IDJTZs2zaZEFID/M/fHux5yyCEJ23Tv3t3krbbayuTGjRub3LBhQ5PXrVtn8m9/+1uTk413PeCAA0zeZ599TPbnOG/QoEHCPlD95s+fb7I/B/Ezzzxj8ooVK6p8zLfeestkf/7r1q1bm+y38T//+c8m++27OnFnFgAAAMGiMwsAAIBg0ZkFAABAsBgzm8S8efNM9sdj+urUSfw2HnvssTmtCdby5ctNfvrpp1Ou/+ijj5rcrFmznNdUGf4Y2aOPPjrl+j179jR52223zXlNNZ0/Ttmfo7gyxo4da/K0adNM9uet9cfYihR2PFpN9P3335vs/9+cO3euyZMmTUq7zy5dupj8wQcfmFxeXm6yP3/xLrvsYnKyuUNRfPw+hT8eVkRk3LhxJq9duzblPv22cOihh5rst6V77703YR/77ruvyW+//bbJ/rXvueeeM7lDhw4m+/PWVif+JwAAACBYdGYBAAAQLDqzAAAACBZjZpPw53NLJ904R+Te9ddfb/Lo0aNN7tSpk8mnn3563muqjDfeeMPkb775xuQLLrjA5HPOOSfvNdU0y5YtM/mxxx5Lu40/Vqx58+Ymv/TSSym398fD+eN0e/funbDNDjvskLYuVN6GDRtMPvvss032x8j279/f5G7dumV9TH9co69FixZZ7xOFd8kll5g8ceJEkzOZI9ZvT3vttZfJd999t8n16tVLub9Zs2YlPPbQQw+Z7P++mTNnjsn+Neiyyy4z+dRTTzW5Ot+bwp1ZAAAABIvOLAAAAIJFZxYAAADBojMLAACAYPEGsCRef/31lM/7k5f7A7GRf6qaMu+8884mF2LC+R9//NHkZO3EnzzbPw//wx6Qe/6bHL777juTu3btmrCNf4346aefTB4zZozJf/zjH01esmSJyf4b/0466aSEY/oftNC0adOEdZC5devWmez//5wyZYrJ/ptZbrzxRpO32WabHFaHYub/f7/nnntMfuSRR0x2zpn8q1/9KmGfffv2NdlvXw0aNMi6znjJPvxl48aNJt92220m//a3vzV56dKlVaohn7gzCwAAgGDRmQUAAECw6MwCAAAgWIyZFZGZM2eanGxy4Xj+2KiOHTvmvCZUzdSpU00+5phjTN5uu+0StvHHLGVr+vTpKfNbb72Vdh/F+uEOpWz9+vUm++OWr7322rT78Ccs/93vfmfyhAkTTP7kk09M9sfUJRt/WYhx36Vs0qRJJg8aNMjkli1bmjxjxgyTGzdunJ/CUPT8a/u9995rsv//2X8PR7IPZtp///2rVNOmTZtM/uKLL0zu06dPwjY9evQwec2aNVkd89xzzzU52e/V6sKdWQAAAASLziwAAACCRWcWAAAAwWLMrIi8++67Wa1f1bGVqLqrr77a5FdffdXkr7/+2mR/XlB/TJOIyLPPPlulmvx9+mMv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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=0, num=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7. 显示混淆矩阵" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.1 建立混淆矩阵" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predict0123456789
label
095303001010130
10111370144060
211195171021510214
3359190895381102824221
434479160153525
51819612802165185
6123451315901050
75629141121924531
81131516121617138638
9145212351412016890
\n", "
" ], "text/plain": [ "predict 0 1 2 3 4 5 6 7 8 9\n", "label \n", "0 953 0 3 0 0 10 10 1 3 0\n", "1 0 1113 7 0 1 4 4 0 6 0\n", "2 11 1 951 7 10 2 15 10 21 4\n", "3 35 9 190 89 5 381 10 28 242 21\n", "4 3 4 4 7 916 0 15 3 5 25\n", "5 18 1 9 6 12 802 16 5 18 5\n", "6 12 3 4 5 13 15 901 0 5 0\n", "7 5 6 29 14 11 2 1 924 5 31\n", "8 11 3 15 16 12 16 17 13 863 8\n", "9 14 5 2 12 35 14 1 20 16 890" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(y_test, predictions, rownames=['label'], colnames=['predict'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.2 建立真实值与预测 DataFrame" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpredict
077
122
\n", "
" ], "text/plain": [ " label predict\n", "0 7 7\n", "1 2 2" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({'label': y_test, 'predict': predictions})\n", "df[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.3 查询真实值是 \"5\" 但预测值是 \"2\" 的数据" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpredict
173752
390252
591352
592252
638552
659852
749852
777952
997052
\n", "
" ], "text/plain": [ " label predict\n", "1737 5 2\n", "3902 5 2\n", "5913 5 2\n", "5922 5 2\n", "6385 5 2\n", "6598 5 2\n", "7498 5 2\n", "7779 5 2\n", "9970 5 2" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[(df.label==5)&(df.predict==2)]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=340, num=1)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=1289, num=1)" ] } ], "metadata": { "kernelspec": { "display_name": "tensorflow-keras-practice", "language": "python", "name": "tensorflow-keras-practice" }, "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }