{"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 # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os\nimport glob\nfrom main_io_comp_vis_all import calibrate_magnetic_wifi_ibeacon_to_position, read_data_file\nimport warnings\nwarnings.filterwarnings('ignore')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_sub = pd.read_csv('../input/indoor-location-navigation/sample_submission.csv')\nsample_sub[[\"site\",\"path\",\"time\"]]=sample_sub[\"site_path_timestamp\"].str.split('_', expand=True)\nsite_list = list(set(list(sample_sub[\"site\"])))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# 1) Creating Train Data","metadata":{}},{"cell_type":"markdown","source":"## 1.1) Initialize","metadata":{}},{"cell_type":"code","source":"floor_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":"code","source":"train_df = pd.DataFrame(data={\"x\":[],\"y\":[],\"floor\":[],\"site\":[]})\nNUM_FEATS=10\nBSSID_FEATS = [f'BSSID_{i}' for i in range(NUM_FEATS)]\nRSSI_FEATS = [f'RSSI_{i}' for i in range(NUM_FEATS)]\nBEACON_FEATS = [f'BEACONID_{i}' for i in range(NUM_FEATS)]\nBEACONRSSI_FEATS = [f'BEACONRSSI_{i}' for i in range(NUM_FEATS)]\ntrain_df[BSSID_FEATS+RSSI_FEATS+BEACON_FEATS+BEACONRSSI_FEATS]=[]\ntrain_df[['site']+BSSID_FEATS+BEACON_FEATS]=train_df[['site']+BSSID_FEATS+BEACON_FEATS].astype('str')\ntrain_df_row=train_df.copy()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 1.2) Create DFrame","metadata":{}},{"cell_type":"code","source":"for idxs, site in enumerate(site_list):\n    floor_list = os.listdir('../input/indoor-location-navigation/train/'+site)\n    for idxf, floor in enumerate(floor_list):\n        train_paths = glob.glob('../input/indoor-location-navigation/train/'+site+'/'+floor+'/*')\n        print(\"Site:\",idxs,\" /24 ; Floor:\",idxf)\n        for path in train_paths:\n            data = read_data_file(path)\n            wp_df = pd.DataFrame(data=data.waypoint, columns=[\"Time\",\"x\",\"y\"])\n            if (data.wifi != []):\n                wifi_df = pd.DataFrame(data=data.wifi, columns= [\"Time\",\"SSID\",\"BSSID\",\"RSSI\",\"LTime\"])\n            else:\n                wifi_df = pd.DataFrame(data={\"Time\":[],\"SSID\":[],\"BSSID\":[],\"RSSI\":[],\"LTime\":[]})\n            if (data.ibeacon != []):\n                beacon_df = pd.DataFrame(data=data.ibeacon, columns= [\"Time\",\"BEACONID\",\"RSSI\"])\n            else:\n                beacon_df = pd.DataFrame(data={\"Time\":[],\"BEACONID\":[],\"RSSI\":[]})\n            \n            for idx, row in wp_df.iterrows():\n                wifi_df_wp = wifi_df.loc[(wifi_df[\"Time\"].astype('int')<int(row[\"Time\"]+2000)) & (wifi_df[\"Time\"].astype('int')>int(row[\"Time\"]-2000)),:]\n                wifi_df_wp[[\"Time\",\"RSSI\"]] = wifi_df_wp[[\"Time\",\"RSSI\"]].astype('int')\n                wifi_df_wp = wifi_df_wp.drop(columns=[\"SSID\",\"LTime\"])\n                wifi_df_wp=wifi_df_wp.groupby(by=[\"BSSID\"]).mean()\n                wifi_df_wp = wifi_df_wp.sort_values(by=[\"RSSI\"],ascending=False)\n                wifi_df_wp = wifi_df_wp[:10]\n                train_df_row.loc[0,['x','y']]=row[['x','y']]\n                train_df_row.loc[0,['floor']]= floor_txt_num[floor]\n                train_df_row.loc[0,['site']]= site\n                train_df_row_bssid = list(wifi_df_wp.index)\n                train_df_row_rssi = list(wifi_df_wp[\"RSSI\"])\n                for i in range(10-len(train_df_row_bssid)):\n                    train_df_row_bssid.append('XXX')\n                    train_df_row_rssi.append(-100)    \n                train_df_row.loc[0,BSSID_FEATS]=train_df_row_bssid\n                train_df_row.loc[0,RSSI_FEATS]=train_df_row_rssi\n                #print(train_df_row_bssid)\n\n                beacon_df_wp = beacon_df.loc[(beacon_df[\"Time\"].astype('int')<int(row[\"Time\"]+2000)) & (beacon_df[\"Time\"].astype('int')>int(row[\"Time\"]-2000)),:]\n                beacon_df_wp[[\"Time\",\"RSSI\"]] = beacon_df_wp[[\"Time\",\"RSSI\"]].astype('int')\n                beacon_df_wp=beacon_df_wp.groupby(by=[\"BEACONID\"]).mean()\n                beacon_df_wp = beacon_df_wp.sort_values(by=[\"RSSI\"],ascending=False)\n                beacon_df_wp = beacon_df_wp[:10]\n                train_df_row_beaconid = list(beacon_df_wp.index)\n                train_df_row_brssi = list(beacon_df_wp[\"RSSI\"])\n                for i in range(10-len(train_df_row_beaconid)):\n                    train_df_row_beaconid.append('XXX')\n                    train_df_row_brssi.append(-100)    \n                train_df_row.loc[0,BEACON_FEATS]=train_df_row_beaconid\n                train_df_row.loc[0,BEACONRSSI_FEATS]=train_df_row_brssi\n                # print(train_df_row_beaconid)\n                # print(train_df_row)\n                train_df = train_df.append(train_df_row, ignore_index=True)\ntrain_df.to_csv(\"Train_Data.csv\")            ","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}