{"cells":[{"metadata":{"_cell_guid":"1d42dc1c-d83a-8809-abec-e191e67873fe","_uuid":"e523c4956e13699036ddc9c7c93061b8f9cdbbde","trusted":false},"cell_type":"code","source":"# THis is a simple SGD classifier example\n# for details of SGD go to http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html#sklearn.linear_model.SGDClassifier\nimport numpy as np\nfrom sklearn import linear_model\nimport pandas as pd\nX = np.array([[-1, -1], [-2, -1], [1, 1], [2, 1]])\nY = np.array([1, 1, 2, 2])\nlinear_model.SGDClassifier(alpha=0.0001, average=False, class_weight=None, epsilon=0.1,\n        eta0=0.0, fit_intercept=True, l1_ratio=0.15,\n        learning_rate='optimal', loss='log', n_iter=5, n_jobs=1,\n        penalty='l2', power_t=0.5, random_state=None, shuffle=True,\n        verbose=0, warm_start=False)\n\nclf.fit(X, Y)\n\nprint(clf.predict([[0.8, 1]]))\nprint(clf.predict([[-0.8, -1]]))","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"4eed53ae-844b-b9f0-7de9-098b825dece5","_uuid":"430ff41d7a10d8c878ad511dc05f2bf3df4f3789","trusted":false},"cell_type":"code","source":"#This cell proves that all displayid in ClickTrain are in Events\ndf_ct = pd.read_csv('~/outbrain_data/clicks_train.csv',usecols=['display_id'] )\ndf_events = pd.read_csv('~/outbrain_data/events.csv' ,usecols=['display_id']  )\n\nX= pd.DataFrame(df_ct.display_id.unique())\nY= pd.DataFrame(df_events.display_id.unique())\nZ= pd.DataFrame(X.isin(Y))\nZ[0].unique()\n","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"1a541b3d-7c48-ee61-7b8b-41b8b7aa6dd7","_uuid":"4739c8c1c9e2840ccfedb6801666ffe7dc26e85d","trusted":false},"cell_type":"code","source":"#This is a code from someone on Kaggle for a weak learner  to make prediction and create file in format for kaggle submission\n#The algorithm doesnt does not use any standard ML algorithm, just how often a particular ad was clicked\nimport pandas as pd\nimport numpy as np\n\ndtypes = {'ad_id': np.float32, 'clicked': np.int8}\n\ntrain = pd.read_csv(\"~/outbrain_data/clicks_train.csv\", usecols=['ad_id','clicked'], dtype=dtypes )\n\nad_likelihood = train.groupby('ad_id').clicked.agg(['count','sum','mean']).reset_index()\nM = train.clicked.mean()\nprint(M)\ndel train\n\nad_likelihood['likelihood'] = (ad_likelihood['sum'] + 12*M) / (12 + ad_likelihood['count'])\n\ntest = pd.read_csv(\"~/outbrain_data/clicks_test.csv\")\ntest = test.merge(ad_likelihood, how='left')\ntest.likelihood.fillna(M, inplace=True)\n\ntest.sort_values(['display_id','likelihood'], inplace=True, ascending=False)\nsubm = test.groupby('display_id').ad_id.apply(lambda x: \" \".join(map(str,x))).reset_index()\n\nsubm.to_csv(\"subm.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"ee2fb1e6-b86f-4f9a-f07d-869f12b13191","_uuid":"e1bd08c85838f1e0a3337b4b571fbe442ac804de","trusted":false},"cell_type":"code","source":"import numpy as np\nimport gc\nfrom sklearn import linear_model\nimport pandas as pd\npc=pd.read_csv('~/outbrain_data/promoted_content.csv')\ndf_ct = pd.read_csv('~/outbrain_data/clicks_train.csv')\nprint(df_ct.size)\nprint((pd.DataFrame(pc['document_id'].unique())).count())\nprint(pc.size)\nM = df_ct.clicked.mean()\npc.groupby('document_id',as_index=False).count()['advertiser_id'].unique()\n\ndf_mrg=df_ct.merge(pc,on='ad_id' ,how='left')\n\ndf_cmpg= df_mrg.groupby('campaign_id').clicked.agg(['count' ,'sum']).reset_index()\ndf_cmpg['cmpg_Score']= (df_cmpg['sum'] + M) / (1 + df_cmpg['count'])\ndf_cmpg=df_cmpg.drop('count',1)\ndf_cmpg=df_cmpg.drop('sum',1)\n\ndf_adv= df_mrg.groupby('advertiser_id').clicked.agg(['count' ,'sum']).reset_index()\ndf_adv['adv_Score']= (df_adv['sum'] + M) / (1 + df_adv['count'])\ndf_adv=df_adv.drop('count',1)\ndf_adv=df_adv.drop('sum',1)\ndf_adv\n\npc=pc.merge(df_adv).merge(df_cmpg)\npc=pc.drop('campaign_id',1)\npc=pc.drop('advertiser_id',1)\npc=pc.drop('document_id',1)\n\nX=df_ct.merge(pc)\n\nY=np.array(X['clicked'])\nX= X.drop('clicked',1)\nX= X.drop('display_id',1)\nX= X.drop('ad_id',1)\nX=np.array (X)\n\nfrom sklearn import datasets\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.linear_model import SGDClassifier\nimport numpy as np\nimport pandas as pd\nfrom sklearn.cross_validation import KFold\nfrom sklearn.metrics import accuracy_score\nimport matplotlib.pyplot as plt\n%matplotlib inline\n\nX_test= pd.read_csv('~/outbrain_data/clicks_test.csv' )\nX_test=X_test.merge(pc,how='left')\nadv_score_mean = pc.adv_Score.mean()\ncmpg_score_mean = pc.cmpg_Score.mean()\nX_test.adv_Score.fillna(adv_score_mean, inplace=True)\nX_test.cmpg_Score.fillna(cmpg_score_mean, inplace=True)\nX_test= X_test.drop('display_id',1)\nX_test= X_test.drop('ad_id',1)\nX_test=np.array (X_test)\n\nreg=SGDClassifier(loss= 'log', penalty= 'l2')\nreg.fit(X,Y)\na=accuracy_score(Y, reg.predict(X))\nprint(a)\noutput= reg.decision_function(X_test)\nplt.hist(output)   \nplt.show()\n\noutput=pd.read_csv('~/outbrain_data/clicks_test.csv').merge(pd.DataFrame(output,columns=['prediction']), left_index=True,right_index=True)\noutput.sort_values(['display_id','prediction'], inplace=True, ascending=False)\nsubm = output.groupby('display_id').ad_id.apply(lambda x: \" \".join(map(str,x))).reset_index()\n\nsubm.to_csv(\"subm_22_11_2016_21_45.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"5bac780c-d421-f0ed-67f3-24e38bf3d6ad","_uuid":"20331ec3f2b5989b4394e2095b41f6098bc62450","trusted":false},"cell_type":"code","source":"print(reg.coef_)\nprint(reg.intercept_)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"7a47b71b-c07b-8e8a-7170-b0cdc82c8869","_uuid":"87e5b538d8aee8d8defb7554960e780b12a811ee","trusted":false},"cell_type":"code","source":"output= reg.decision_function(X_test)\n\noutput=pd.read_csv('clicks_test.csv').merge(pd.DataFrame(output,columns=['prediction']), left_index=True,right_index=True)\noutput.sort_values(['display_id','prediction'], inplace=True, ascending=False)\nsubm = output.groupby('display_id').ad_id.apply(lambda x: \" \".join(map(str,x))).reset_index()\nsubm.to_csv(\"subm2.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"e658150f-3006-3916-6ddb-db365aeeca3c","_uuid":"7fa98c147a6a0592ee0113a392a68dffe6582d2e","trusted":false},"cell_type":"code","source":"\nX_test_orig= pd.read_csv('clicks_test.csv' )\nprint(X_test_orig.size)\n\nX_test=X_test_orig.join(pc ,how='left',lsuffix='_left',rsuffix='_right')\nprint(X_test.size)\n\nX_test= X_test.drop('display_id',1)\nX_test=X_test.drop('ad_id_left',1)\nX_test=X_test.drop('ad_id_right',1)\nprint(X_test.size)\n\nX_test=np.array (X_test)\n\noutput= reg.decision_function(X_test)\noutput=pd.DataFrame(output,columns=['prediction'])\nprint(output.size)\n\n\noutput2=X_test_orig.join(output)\nprint(output2.size)","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"154ad0d1-6ae5-64fb-3e28-c185e334ddb5","_uuid":"376d16db94b4f2b3aa36d1b7678cbbebced77529","trusted":false},"cell_type":"code","source":"numFolds = 10\nkf = KFold(len(X), numFolds, shuffle=True)\n\n# These are \"Class objects\". For each Class, find the AUC through\n# 10 fold cross validation.\nModels = [LogisticRegression, SGDClassifier]\nparams = [{}, {\"loss\": \"log\", \"penalty\": \"l2\"}]\nfor param, Model in zip(params, Models):\n    total = 0\n    for train_indices, test_indices in kf:\n\n        train_X = X[train_indices, :]; train_Y = Y[train_indices]\n        test_X = X[test_indices, :]; test_Y = Y[test_indices]\n\n        reg = Model(**param)\n        reg.fit(train_X, train_Y)\n        predictions = reg.predict(test_X)\n        total += accuracy_score(test_Y, predictions)\n    accuracy = total / numFolds\n    print (\"Accuracy score of {0}: {1}\".format(Model.__name__, accuracy))\n","execution_count":null,"outputs":[]}],"metadata":{"_change_revision":0,"_is_fork":false,"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}