{"cells":[{"metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","trusted":true},"cell_type":"code","source":"# import required libraries\nimport numpy as np \nimport pandas as pd \n\nfrom sklearn import metrics\nfrom sklearn import preprocessing\n\nfrom keras.layers import Input, Embedding, Dense, Dropout, concatenate, Flatten\nfrom keras.models import Model\n\nimport os","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9c35f74d2cf7494e4233f104f7c1373d5a34a2cc"},"cell_type":"code","source":"dtypes = {\n        'ip'             : 'uint32',\n        'app'            : 'uint16',\n        'device'         : 'uint16',\n        'os'             : 'uint16',\n        'channel'        : 'uint16',\n        'is_attributed'  : 'uint8',\n        }\ntrain_df = pd.read_csv(\"../input/train.csv\", nrows=1000000,usecols=['ip','app','device','os', 'channel', 'is_attributed'],dtype=dtypes)\n\nle_ip = preprocessing.LabelEncoder()\nle_os = preprocessing.LabelEncoder()\nle_dev = preprocessing.LabelEncoder()\nle_ch = preprocessing.LabelEncoder()\nle_app = preprocessing.LabelEncoder()\n\nmax_ip  = np.max(le_ip.fit_transform(train_df.ip))+1\nmax_dev = np.max(le_dev.fit_transform(train_df.device))+1\nmax_os  = np.max(le_os.fit_transform(train_df.os))+1\nmax_ch  = np.max(le_ch.fit_transform(train_df.channel))+1\nmax_app = np.max(le_app.fit_transform(train_df.app))+1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bcc1faaabc293fd1da79078a7aff5c4e6dbfdbd4"},"cell_type":"code","source":"X_train = {\n        'ip': np.array(le_ip.transform(train_df.ip)),\n        'os': np.array(le_os.transform(train_df.os)),\n        'dev': np.array(le_dev.transform(train_df.device)),\n        'ch': np.array(le_ch.transform(train_df.channel)),\n        'app': np.array(le_app.transform(train_df.app))\n    }\ny_train = train_df.is_attributed","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"afd9d1d0-c732-40ba-8cd0-e1278ec0bf21","_uuid":"ec98bf286989963158533c20565fbd530d396e5d","trusted":true},"cell_type":"code","source":"emb_n = 10\ndense_n = 50\n\nin_ip = Input(shape=[1], name = 'ip')\nemb_ip = Embedding(max_ip, emb_n)(in_ip)\nin_os = Input(shape=[1], name = 'os')\nemb_os = Embedding(max_os, emb_n)(in_os)\nin_dev = Input(shape=[1], name = 'dev')\nemb_dev = Embedding(max_dev, emb_n)(in_dev)\nin_ch = Input(shape=[1], name = 'ch')\nemb_ch = Embedding(max_ch, emb_n)(in_ch)\nin_app = Input(shape=[1], name = 'app')\nemb_app = Embedding(max_app, emb_n)(in_app)\nin_dy = Input(shape=[1], name = 'dy')\nin_hr = Input(shape=[1], name = 'hr')\nin_wd = Input(shape=[1], name = 'wd')\n              \nx = concatenate([(emb_ip),(emb_app), (emb_ch), (emb_dev), emb_os ])\n\nx = Flatten()(x)\nx = Dropout(0.2)(Dense(dense_n,activation='relu')(x))\nx = Dropout(0.2)(Dense(dense_n,activation='relu')(x))\nx = Dropout(0.2)(Dense(dense_n,activation='relu')(x))\noutp = Dense(1,activation='sigmoid')(x)\n\nmodel = Model(inputs=[in_ip,in_app,in_ch,in_dev,in_os], outputs=outp)\n\nmodel.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"7f125027-52f7-453f-97fe-91303f410426","_uuid":"55537d5ce4e61e2d4c35b5c4656b4f8a26ad821e","trusted":true},"cell_type":"code","source":"#training\nbatch_size = 1024\nclass_weight = {0: 1.,\n                1: 50.}\nvalidation_split=0.95\nepochs=20\nmodel.fit(X_train, y_train, batch_size=batch_size,validation_split=validation_split, epochs=epochs)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"00857c76-2d9c-4c3c-b80b-12709b4a7d61","_uuid":"4f857c8ae7f1b9c84cf13ee64d7efee4a97798b3","trusted":true},"cell_type":"code","source":"# evaluating\ndtypes = {\n        'ip'             : 'uint32',\n        'app'            : 'uint16',\n        'device'         : 'uint16',\n        'os'             : 'uint16',\n        'channel'        : 'uint16',\n        'is_attributed'  : 'uint8',\n        }\ntest_df = pd.read_csv(\"../input/train.csv\", nrows=100000,usecols=['ip','app','device','os', 'channel', 'is_attributed'],dtype=dtypes)\nX_test = {\n        'ip': np.array(le_ip.transform(test_df.ip)),\n        'os': np.array(le_os.transform(test_df.os)),\n        'dev': np.array(le_dev.transform(test_df.device)),\n        'ch': np.array(le_ch.transform(test_df.channel)),\n        'app': np.array(le_app.transform(test_df.app))\n    }\ny_test = test_df.is_attributed\n\ny_pred = model.predict(X_test)\n# accuracy\ncm = metrics.confusion_matrix(y_test, y_pred > 0.5)\nprint(cm)\n# AUC\nfpr, tpr, thresholds = metrics.roc_curve(y_test.values+1, y_pred, pos_label=2)\nmetrics.auc(fpr, tpr)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"31129e339752a8684d0285093be7230791beef3c"},"cell_type":"code","source":"","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}