{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"!pip install deepctr --no-deps\nfrom deepctr.utils import SingleFeat\nfrom deepctr.models import DeepFM, FNN, PNN, xDeepFM, NFM, NFFM, AFM\nfrom sklearn.metrics import roc_auc_score\nimport numpy as np\nimport tensorflow.keras.optimizers\nimport tensorflow as tf\nimport gc\n\nfeature_size = 645195\nfield_size = 24\nsize = 100\ntest_size = 100\ntrue_sample_size = int(size * 0.75)\ntrain_xi = []\ntrain_xv = []\ndata_xi = []\ndata_xv = []\nlabel = []\n\ndef auc(y_true, y_pred):\n    return tf.py_func(roc_auc_score, (y_true, y_pred), tf.double)\n\ndef main():\n    gc.collect()\n    global train_xi\n    global train_xv\n    global data_xi\n    global data_xv\n    global label\n    feature_dict =  {'uid':101449, 'day':7, 'hour':24, 'dev': 5, 'devmodel':5925, 'ip':523672,'domain':3487,'cct':4,'sid':3135,'stp':24,'slotp':7, 'iid':4002,\n                    'f0':28,'f1':252,'f2':10, 'f3':67, 'f4':8, 'f5':7, 'f6':426, 'f7':9, 'f8':166, 'f9':4, 'f10':60, 'f11':2417}\n    #feature_dict =  {'uid':101449, 'day':7, 'hour':24, 'dev': 5, 'devmodel':5925,'domain':3487,'cct':4,'sid':3135,'stp':24,'slotp':7, 'iid':4002,\n    #                'f0':28,'f1':252,'f2':10, 'f3':67, 'f4':8, 'f5':7, 'f6':426, 'f7':9, 'f8':166, 'f9':4, 'f10':60, 'f11':2417}\n    feature_base = [0, 101449, 101456, 101480, 101485, 107410, 631082, 634569, 634573, 637708, 637732, 637739, 641741, 641769, 642021, 642031, \n                    642098, 642106, 642113, 642539, 642548, 642714, 642718, 642778]\n    print(len(feature_base))\n    lst = [SingleFeat(k, feature_dict[k]) for k in feature_dict]\n    model = FNN({'sparse':lst},hidden_size=(128, 128), embedding_size=8)\n    model.compile('adam', \"binary_crossentropy\", metrics=[auc])\n    model.summary()\n    with open(\"../input/train.data\") as file:\n    #with open(\"../input/sample/train_sample\") as file:\n        for line in file:\n            line = line.strip()\n            if line != \"\":\n                tmpdidx = []\n                ls = line.split()\n                label.append(int(ls[0]))\n                for i in range(1, len(ls)):\n                    #if i != 6:\n                    res = ls[i].split(\":\")\n                    tmpdidx.append(int(res[0]) - feature_base[i-1])\n                train_xi.append(tmpdidx)\n    model.fit(np.transpose(train_xi).tolist(), label, batch_size = 256, epochs=10, verbose=0, validation_split=0)\n    del lst\n    gc.collect()\n    with open(\"../input/test.data\") as file:\n    #with open(\"../input/sampletest/test_sample\") as file:\n        for line in file:\n            line = line.strip()\n            if line != \"\":\n                tmpdidx = []\n                ls = line.split()\n                for i in range(1, len(ls)):\n                    #if i != 6:\n                    res = ls[i].split(\":\")\n                    tmpdidx.append(int(res[0]) - feature_base[i-1])\n                data_xi.append(tmpdidx)\n    pred = model.predict(np.transpose(data_xi).tolist(), batch_size=512)\n    file = open(\"submitFNN.csv\", \"w\")\n    file.write(\"Id,Predicted\\n\")\n    for i in range(len(pred)):\n        file.write(\"%d,%.10f\\n\" % (i, pred[i]))\n    file.close()\n    gc.collect()\n                \nif __name__=='__main__':\n    main()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}