{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom tensorflow import keras as kr\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D\nfrom tensorflow.keras.layers import MaxPooling2D\nfrom tensorflow.keras.layers import Dense, Activation, Flatten,BatchNormalization, Activation,MaxPool2D,Dropout\nfrom tensorflow.keras.optimizers import Adam","metadata":{"papermill":{"duration":4.51603,"end_time":"2021-10-03T02:25:27.399604","exception":false,"start_time":"2021-10-03T02:25:22.883574","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:36:36.640979Z","iopub.execute_input":"2021-10-04T14:36:36.641274Z","iopub.status.idle":"2021-10-04T14:36:36.647598Z","shell.execute_reply.started":"2021-10-04T14:36:36.641243Z","shell.execute_reply":"2021-10-04T14:36:36.646608Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Загрузка данных\ntrain_data = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ntest_data = pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")\ntrain_data","metadata":{"papermill":{"duration":5.087826,"end_time":"2021-10-03T02:25:32.608653","exception":false,"start_time":"2021-10-03T02:25:27.520827","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:37:34.98066Z","iopub.execute_input":"2021-10-04T14:37:34.980994Z","iopub.status.idle":"2021-10-04T14:37:39.839431Z","shell.execute_reply.started":"2021-10-04T14:37:34.980962Z","shell.execute_reply":"2021-10-04T14:37:39.838613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Обучащая и тестовая выборка\nx_train=train_data.iloc[0:,1:]\ny_train=train_data.iloc[0:,[0]]\nx_test=test_data.iloc[0:,0:]","metadata":{"papermill":{"duration":0.033051,"end_time":"2021-10-03T02:25:32.714784","exception":false,"start_time":"2021-10-03T02:25:32.681733","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:39:16.67645Z","iopub.execute_input":"2021-10-04T14:39:16.676768Z","iopub.status.idle":"2021-10-04T14:39:16.684034Z","shell.execute_reply.started":"2021-10-04T14:39:16.676737Z","shell.execute_reply":"2021-10-04T14:39:16.682937Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Нормализация данных (в итоге числа от 0 до 1) и преобразование в float32\nx_train = x_train.astype('float32')/255\ny_train = y_train.astype('float32')\nx_test = x_test.astype('float32')/255","metadata":{"papermill":{"duration":0.244611,"end_time":"2021-10-03T02:25:33.542114","exception":false,"start_time":"2021-10-03T02:25:33.297503","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:39:18.916817Z","iopub.execute_input":"2021-10-04T14:39:18.917108Z","iopub.status.idle":"2021-10-04T14:39:19.142093Z","shell.execute_reply.started":"2021-10-04T14:39:18.91708Z","shell.execute_reply":"2021-10-04T14:39:19.141024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Преобрзование выборок в массив np\nx_train= x_train.to_numpy()\ny_train= y_train.to_numpy()\nx_test = x_test.to_numpy()\n# reshape обучающей выборки - 28*28 пикселей и 1 канал\nx_train=x_train.reshape(-1,28,28,1)\nx_test=x_test.reshape(-1,28,28,1)\n# Конвертирование тестовой выборки в двочиную матрицу для 10 категорий (цифры 0-9)\ny_train = kr.utils.to_categorical(y_train, 10)","metadata":{"papermill":{"duration":0.034169,"end_time":"2021-10-03T02:25:33.664293","exception":false,"start_time":"2021-10-03T02:25:33.630124","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:47:19.740784Z","iopub.execute_input":"2021-10-04T14:47:19.741187Z","iopub.status.idle":"2021-10-04T14:47:19.751141Z","shell.execute_reply.started":"2021-10-04T14:47:19.741145Z","shell.execute_reply":"2021-10-04T14:47:19.750462Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Создание модели и добавление слоев\n\n# Стек слоев\nmodel = Sequential()\n# Первый слой свертки. Ядро 3*3, функция активации relu, \n# отступ same (нулевой отступ), на входе изображение 28*28 пикселей с 1 каналом цвета\nmodel.add(Conv2D(32,3, activation='relu', padding='same', input_shape=(28, 28,1)))\n# Второй слой свертки\nmodel.add(Conv2D(32,3,activation='relu', padding='same'))\n# Pooling слой (подвыборочный) с ядром 2*2\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\n# Flatten слой (сглаживающий) - трансформация в одномерный вектор выхода с подвыборочного слоя\nmodel.add(Flatten())\n# Полносвязный слой с 128 узлами\nmodel.add(Dense(128, activation='relu'))\n# Последний (выходной) слой сети. 10 - количество классов.\nmodel.add(Dense(10, activation='softmax'))\n# Сборка модели\nmodel.compile(optimizer='rmsprop',loss='categorical_crossentropy', metrics=['accuracy'])\nmodel.summary()","metadata":{"papermill":{"duration":0.619911,"end_time":"2021-10-03T02:27:32.851606","exception":false,"start_time":"2021-10-03T02:27:32.231695","status":"completed"},"tags":[],"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Обучение модели\nresult2=model.fit(x_train, y_train,batch_size=128, epochs=30)","metadata":{"papermill":{"duration":113.873669,"end_time":"2021-10-03T02:29:27.322076","exception":false,"start_time":"2021-10-03T02:27:33.448407","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:57:52.614645Z","iopub.execute_input":"2021-10-04T14:57:52.615192Z","iopub.status.idle":"2021-10-04T15:07:25.508667Z","shell.execute_reply.started":"2021-10-04T14:57:52.615145Z","shell.execute_reply":"2021-10-04T15:07:25.507139Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Предсказание на тестовых данных\npredictions = model.predict(x_test)","metadata":{"papermill":{"duration":3.413104,"end_time":"2021-10-03T02:29:52.748052","exception":false,"start_time":"2021-10-03T02:29:49.334948","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T15:07:25.509449Z","iopub.status.idle":"2021-10-04T15:07:25.509875Z","shell.execute_reply.started":"2021-10-04T15:07:25.509694Z","shell.execute_reply":"2021-10-04T15:07:25.509714Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Сохранение файла с результатами работы модели\nresults = np.argmax(predictions,axis=1)\nresults = pd.Series(results, name=\"Label\")\nresults.tail()","metadata":{"papermill":{"duration":1.087137,"end_time":"2021-10-03T02:29:59.225375","exception":false,"start_time":"2021-10-03T02:29:58.138238","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T15:07:25.51115Z","iopub.status.idle":"2021-10-04T15:07:25.511479Z","shell.execute_reply.started":"2021-10-04T15:07:25.511303Z","shell.execute_reply":"2021-10-04T15:07:25.511326Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list=[]\n[list.append(i) for i in range(1,28001)]\nImageID = pd.Series(list, name=\"ImageID\").astype(\"int32\")","metadata":{"papermill":{"duration":1.355895,"end_time":"2021-10-03T02:30:01.701752","exception":false,"start_time":"2021-10-03T02:30:00.345857","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T15:07:25.513209Z","iopub.status.idle":"2021-10-04T15:07:25.513555Z","shell.execute_reply.started":"2021-10-04T15:07:25.513368Z","shell.execute_reply":"2021-10-04T15:07:25.51339Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.concat([ImageID,results],axis = 1)\nsubmission.to_csv(\"predictions.csv\", index=False)\nprint(\"predictions.csv was saved.\")","metadata":{"papermill":{"duration":1.263632,"end_time":"2021-10-03T02:30:04.043024","exception":false,"start_time":"2021-10-03T02:30:02.779392","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T14:19:26.767435Z","iopub.execute_input":"2021-10-04T14:19:26.76777Z","iopub.status.idle":"2021-10-04T14:19:26.836601Z","shell.execute_reply.started":"2021-10-04T14:19:26.767737Z","shell.execute_reply":"2021-10-04T14:19:26.835981Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.tail()","metadata":{"papermill":{"duration":1.079312,"end_time":"2021-10-03T02:30:06.662135","exception":false,"start_time":"2021-10-03T02:30:05.582823","status":"completed"},"tags":[],"execution":{"iopub.status.busy":"2021-10-04T15:07:25.51613Z","iopub.status.idle":"2021-10-04T15:07:25.516589Z","shell.execute_reply.started":"2021-10-04T15:07:25.516301Z","shell.execute_reply":"2021-10-04T15:07:25.516336Z"},"trusted":true},"execution_count":null,"outputs":[]}]}