{"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":"markdown","source":"# OBJECTIVE : To Create models for each mall","metadata":{}},{"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)\nimport os\nimport json\nimport glob\nfrom keras.models import Sequential\nfrom keras.layers import Dense\nfrom keras.wrappers.scikit_learn import KerasRegressor\nimport keras\n# train_paths = glob.glob('../input/indoor-location-navigation/train/*/*/*')\nfrom main_io_comp_vis_all import calibrate_magnetic_wifi_ibeacon_to_position, read_data_file\nfloor_txt_num = {'F1':1,'1F':1,'L1':1,'1L':1,'F2':3,'2F':3,'L2':3,'2L':3,'F3':4,'3F':4,'L3':4,'3L':4,'F4':5,'4F':5,'L4':5,'4L':5,\n                'F5':6,'5F':6,'L5':6,'5L':6,'F6':7,'6F':7,'L6':7,'6L':7,'F7':8,'7F':8,'L7':8,'7L':8,'F8':9,'8F':9,'L8':9,'8L':9,\n                'F9':10,'9F':10,'L9':10,'9L':10,'F10':11,'10F':11,'L10':11,'10L':11,'F11':12,'11F':12,'L11':12,'11L':12,\n                'B1':1,'1B':1,\"B\":1,'B2':2,'2B':2,'B3':3,'3B':3,'B4':4,'4B':4}","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 1) Create Mall list & Check existence of aux data","metadata":{}},{"cell_type":"code","source":"mall_max_fxy = pd.read_csv('../input/bssid-maxfxy-unique/max_fxy.csv')\ntrain_mall_df = glob.glob('../input/mall-bssid-df/*')\ntrain_mall_bssid_unique = glob.glob('../input/bssid-maxfxy-unique/*')\nmalllist=[]\nfor mall in train_mall_df:\n    malllist.append(mall[23:-7])\n\ni=0\nfor mall in malllist:\n    if (('../input/bssid-maxfxy-unique/'+mall+'_bssid.csv') not in train_mall_bssid_unique) or (mall not in list(mall_max_fxy['mall'])):\n        print(\"Data Not Present for mall: \", mall)\n        print(i)\n    i+=1","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 5) Fit data & Create Simple Model","metadata":{}},{"cell_type":"code","source":"hist_loss =[]\nmall_max_fxy = pd.read_csv('../input/bssid-maxfxy-unique/max_fxy.csv')\nfor idx, mall in enumerate(malllist):\n    mall_df = pd.read_csv('../input/mall-bssid-df/'+mall+'_df.csv')\n    mall_scaled_df = mall_df.copy()\n    mall_scaled_df[\"floor\"] /= int(mall_max_fxy[mall_max_fxy[\"mall\"]==mall][\"max_floor\"])\n    mall_scaled_df[\"x\"] /= int(mall_max_fxy[mall_max_fxy[\"mall\"]==mall][\"max_x\"])\n    mall_scaled_df[\"y\"] /= int(mall_max_fxy[mall_max_fxy[\"mall\"]==mall][\"max_y\"])\n    #print(mall_scaled_df.columns[0])\n    for col in mall_scaled_df.columns[4:]:\n        mall_scaled_df[col] = (mall_scaled_df[col]+100)/100\n    model = Sequential()\n    model.add(Dense(4000, input_dim=(len(mall_scaled_df.columns)-4), kernel_initializer='normal', activation='sigmoid'))\n    model.add(Dense(120, activation='sigmoid'))\n    model.add(Dense(3, activation='linear'))\n    optimizer = keras.optimizers.Adam(lr=0.01)\n    # model.compile(loss='mse', optimizer=optimizer)\n    model.compile(loss='mse', optimizer=optimizer, metrics=['mse','mae'])\n    n_epoch=5\n    history = model.fit(mall_scaled_df[mall_scaled_df.columns[4:]], mall_scaled_df[mall_scaled_df.columns[1:4]], epochs=n_epoch, batch_size=16, verbose=2, validation_split=0.2)\n    model.save(mall+'_mdl')\n    hist_loss.append([mall]+history.history[\"loss\"])\npd.DataFrame(data=hist_loss,columns=([\"mall\"]+list(range(n_epoch)))).to_csv('train_hist_mall.csv')   ","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}