{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"!pip install ultimate==2.31.2","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nfrom ultimate.mlp import MLP\n\ntrain = pd.read_csv(\"../input/train.csv\")\ntest = pd.read_csv(\"../input/test.csv\")\n\nY_train = train[\"label\"]\nX_train = train.drop(labels = [\"label\"],axis = 1) \nX_test = np.array(test, np.float64)\n\nX_train = np.array(X_train, np.float64)\nY_train = np.array(Y_train, np.float64)\nX_train = (X_train / 255.0) * 2 - 1 \nX_test = (X_test / 255.0) * 2 - 1\n\nprint(\"X_train\", X_train.shape, X_train.min(), X_train.max())\nprint(\"Y_train\", Y_train.shape, Y_train.min(), Y_train.max())\nprint(\"X_test\", X_test.shape, X_test.min(), X_test.max())\n\nparam = {\n    'layer_size': [\n        (28, 28, 1),\n        (28, 28, 1),\n        (14, 14, 8),\n        (14, 14, 8),\n        (7, 7, 16),\n        (1, 1, 80),\n        (1, 1, 10),\n    ],\n    'exf': [\n        {'Op': 'star', 'Constellation': 'aries'},\n        {'Kernel':[6,6], 'Stride':[2,2], 'Pad':[2,2]},\n        {'Op': 'star', 'Constellation': 'aries'},\n        {'Kernel':[6,6], 'Stride':[2,2], 'Pad':[2,2]},\n        {'Kernel':[7,7], 'Stride':[1,1], 'Pad':[0,0]},\n        {'Kernel':[1,1], 'Op': 'fc'},\n    ],\n    \n    'loss_type': 'hardmax',\n    'output_range': [-1, 1],\n    'output_shrink': 0.001,\n    'regularization': 1,\n    'op': 'conv',\n\n    'importance_mul': 0.0001,\n    'importance_out': True,\n    'verbose': 1,\n    'rate_init': 0.01, \n    'rate_decay': 0.8, \n    'epoch_train': 4 * 10, \n    'epoch_decay': 4,\n    'iteration_log': 10000,\n}\n\nmlp = MLP(param).fit(X_train, Y_train)\n\nfeature_importance = mlp.feature_importances_\n    \nprint(feature_importance.shape, feature_importance.min(), feature_importance.max())\n\nfeature_importance = (feature_importance - feature_importance.min()) / (feature_importance.max() - feature_importance.min()) \nfeature_importance = feature_importance.reshape(28, 28)\nprint(feature_importance.shape, feature_importance.min(), feature_importance.max())\n\nimport matplotlib.pyplot as plt\nplt.imshow(feature_importance, cmap='gray')\nplt.show()\n\npred = mlp.predict(X_test)\n\npd.DataFrame({\"ImageId\": list(range(1,len(pred)+1)), \"Label\": pred}).to_csv(\"pred.csv\", index=False, header=True)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}