{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"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\n\nimport xgboost as xgb\nfrom sklearn.pipeline import make_pipeline\nfrom sklearn.feature_selection import SelectPercentile, chi2\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.preprocessing import StandardScaler\n\n\nprint(os.listdir(\"../input\"))","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"data = pd.concat([\n       pd.read_csv(\"../input/pageviews/pageviews.csv\", parse_dates=[\"FEC_EVENT\"]),\n       pd.read_csv(\"../input/pageviews_complemento/pageviews_complemento.csv\", parse_dates=[\"FEC_EVENT\"])\n])\n#data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_test = []\nfor c in data.drop([\"USER_ID\", \"FEC_EVENT\"], axis=1).columns:\n    print(\"haciendo\", c)\n    temp = pd.crosstab(data.USER_ID, data[c])\n    temp.columns = [c + \"_\" + str(v) for v in temp.columns]\n    X_test.append(temp.apply(lambda x: x / x.sum(), axis=1))\nX_test = pd.concat(X_test, axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data = data[data.FEC_EVENT.dt.month < 10]\nX_train = []\nfor c in data.drop([\"USER_ID\", \"FEC_EVENT\"], axis=1).columns:\n    print(\"haciendo\", c)\n    temp = pd.crosstab(data.USER_ID, data[c])\n    temp.columns = [c + \"_\" + str(v) for v in temp.columns]\n    X_train.append(temp.apply(lambda x: x / x.sum(), axis=1))\nX_train = pd.concat(X_train, axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"features = list(set(X_train.columns).intersection(set(X_test.columns)))\nX_train = X_train[features]\nX_test = X_test[features]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_prev = pd.read_csv(\"../input/conversiones/conversiones.csv\")\ny_train = pd.Series(0, index=X_train.index)\nidx = set(y_prev[y_prev.mes >= 10].USER_ID.unique()).intersection(\n        set(X_train.index))\ny_train.loc[list(idx)] = 1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"params = {\n    'selectpercentile__percentile': [15], \n    'logisticregression__C': np.logspace(-5, 5, 20)\n}\n\npipe_ridge = make_pipeline(SelectPercentile(chi2), \n                           StandardScaler(), \n                           LogisticRegression(solver='sag', n_jobs=-1))\ngrid_ridge = GridSearchCV(pipe_ridge, params, scoring='roc_auc', cv=5, n_jobs=-1)\ngrid_ridge.fit(X_train.values, y_train)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"grid_ridge.best_params_, grid_ridge.best_score_","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"results_ridge = pd.DataFrame(grid_ridge.cv_results_)\nresults_ridge","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ridge_probs = grid_ridge.predict_proba(X_test)[:,0]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"xgb_params = {'eta': 0.05,\n              'gamma': 1.5,\n              'subsample': 0.6,\n              'colsample_bytree': 0.5,\n              'max_depth': 4}\n\ndtrain = xgb.DMatrix(X_train, label=y_train)\ndtest = xgb.DMatrix(X_test)\n\ncvres = xgb.cv(xgb_params, dtrain, num_boost_round=200, nfold=5, metrics=['auc'], stratified=True)\nmdl = xgb.train(xgb_params, dtrain, num_boost_round=200)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"gain = mdl.get_score(fmap='', importance_type='gain')\nimp = pd.DataFrame(list(gain.items()), columns=['var', 'imp'])\nimp.sort_values(\"imp\", ascending=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"xgb_probs = mdl.predict(dtest)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sm = pd.read_csv(\"../input/samplesubmission/sampleSubmission.csv\")\nsm['SCORE'] = ridge_probs * 0.5 + xgb_probs * 0.5\nsm.to_csv(\"submission.csv\", index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"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.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}