{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":30587,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"### Load","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:38.055047Z","iopub.execute_input":"2023-12-05T19:30:38.055500Z","iopub.status.idle":"2023-12-05T19:30:38.483861Z","shell.execute_reply.started":"2023-12-05T19:30:38.055461Z","shell.execute_reply":"2023-12-05T19:30:38.482914Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow\nfrom tensorflow import keras\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import Flatten, Dense","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:38.487170Z","iopub.execute_input":"2023-12-05T19:30:38.488074Z","iopub.status.idle":"2023-12-05T19:30:51.536152Z","shell.execute_reply.started":"2023-12-05T19:30:38.488028Z","shell.execute_reply":"2023-12-05T19:30:51.535198Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()\n\n# X_train: Cada imagem é uma matriz\n# y_train: resposta\n# X_test e y_test são dados que não foram visto","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:51.537373Z","iopub.execute_input":"2023-12-05T19:30:51.537975Z","iopub.status.idle":"2023-12-05T19:30:52.029906Z","shell.execute_reply.started":"2023-12-05T19:30:51.537944Z","shell.execute_reply":"2023-12-05T19:30:52.028990Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# plt.imshow(X_train[2]);\n# print(f'LABEL: {y_train[2]}')","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:52.032024Z","iopub.execute_input":"2023-12-05T19:30:52.032331Z","iopub.status.idle":"2023-12-05T19:30:52.036833Z","shell.execute_reply.started":"2023-12-05T19:30:52.032307Z","shell.execute_reply":"2023-12-05T19:30:52.035478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Scale","metadata":{}},{"cell_type":"code","source":"X_train = X_train/255\ny_train = X_train/255","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:52.038309Z","iopub.execute_input":"2023-12-05T19:30:52.038666Z","iopub.status.idle":"2023-12-05T19:30:52.401113Z","shell.execute_reply.started":"2023-12-05T19:30:52.038632Z","shell.execute_reply":"2023-12-05T19:30:52.399934Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Model","metadata":{}},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Flatten, Dense\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras.datasets import mnist\nimport numpy as np","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:52.402734Z","iopub.execute_input":"2023-12-05T19:30:52.403402Z","iopub.status.idle":"2023-12-05T19:30:52.410829Z","shell.execute_reply.started":"2023-12-05T19:30:52.403359Z","shell.execute_reply":"2023-12-05T19:30:52.409933Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"(X_train, y_train), (X_test, y_test) = mnist.load_data()\n\nX_train = X_train / 255.0\nX_test = X_test / 255.0\n\nmodel = Sequential()\nmodel.add(Flatten(input_shape=(28, 28))) \nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dense(10, activation='softmax'))","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:52.411815Z","iopub.execute_input":"2023-12-05T19:30:52.412094Z","iopub.status.idle":"2023-12-05T19:30:53.059165Z","shell.execute_reply.started":"2023-12-05T19:30:52.412069Z","shell.execute_reply":"2023-12-05T19:30:53.058063Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer=Adam(), loss='sparse_categorical_crossentropy', metrics=['accuracy'])\nX_train_flattened = X_train.reshape(X_train.shape[0], 28, 28)\nhistory = model.fit(X_train_flattened, y_train, batch_size=64, epochs=10, verbose=1, validation_split=0.2)","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:30:53.060421Z","iopub.execute_input":"2023-12-05T19:30:53.061146Z","iopub.status.idle":"2023-12-05T19:31:20.802614Z","shell.execute_reply.started":"2023-12-05T19:30:53.061112Z","shell.execute_reply":"2023-12-05T19:31:20.801630Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Evalute","metadata":{}},{"cell_type":"code","source":"y_pred_classes = model.evaluate(X_test, y_test)","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:20.804301Z","iopub.execute_input":"2023-12-05T19:31:20.804598Z","iopub.status.idle":"2023-12-05T19:31:21.441092Z","shell.execute_reply.started":"2023-12-05T19:31:20.804573Z","shell.execute_reply":"2023-12-05T19:31:21.440020Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Predicts","metadata":{}},{"cell_type":"code","source":"y_pred_probabilities = model.predict(X_test)\n# y_pred_probabilities","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:21.444473Z","iopub.execute_input":"2023-12-05T19:31:21.444870Z","iopub.status.idle":"2023-12-05T19:31:22.275771Z","shell.execute_reply.started":"2023-12-05T19:31:21.444838Z","shell.execute_reply":"2023-12-05T19:31:22.274623Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred_classes = y_pred_probabilities.argmax(axis=1)\ny_pred_classes","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:22.277078Z","iopub.execute_input":"2023-12-05T19:31:22.277410Z","iopub.status.idle":"2023-12-05T19:31:22.285165Z","shell.execute_reply.started":"2023-12-05T19:31:22.277381Z","shell.execute_reply":"2023-12-05T19:31:22.284196Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(X_test[1]);","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:22.286809Z","iopub.execute_input":"2023-12-05T19:31:22.287479Z","iopub.status.idle":"2023-12-05T19:31:22.564121Z","shell.execute_reply.started":"2023-12-05T19:31:22.287396Z","shell.execute_reply":"2023-12-05T19:31:22.562940Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Metrics","metadata":{}},{"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nconf_max= (confusion_matrix(y_test, y_pred_classes))","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:22.565648Z","iopub.execute_input":"2023-12-05T19:31:22.566055Z","iopub.status.idle":"2023-12-05T19:31:22.991834Z","shell.execute_reply.started":"2023-12-05T19:31:22.566021Z","shell.execute_reply":"2023-12-05T19:31:22.990648Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.matshow(conf_max, cmap=plt.cm.gray)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-12-05T19:31:56.692915Z","iopub.execute_input":"2023-12-05T19:31:56.693319Z","iopub.status.idle":"2023-12-05T19:31:56.987443Z","shell.execute_reply.started":"2023-12-05T19:31:56.693289Z","shell.execute_reply":"2023-12-05T19:31:56.986053Z"},"trusted":true},"execution_count":null,"outputs":[]}]}