{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"8bc75087-547f-20d1-1b35-adb1a082e5fa"},"outputs":[],"source":"import pandas as pd\nimport numpy as np\nimport xgboost as xgb\n\nDATA_DIR = \"../input\"\n\nID_COLUMN = 'Id'\nTARGET_COLUMN = 'Response'\n\nSEED = 0\nCHUNKSIZE = 50000\nNROWS = 250000"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"de9054b5-8b42-c15a-1922-27c46f9126be"},"outputs":[],"source":"TRAIN_NUMERIC = \"{0}/train_numeric.csv\".format(DATA_DIR)\nTRAIN_DATE = \"{0}/train_date.csv\".format(DATA_DIR)\n\nTEST_NUMERIC = \"{0}/test_numeric.csv\".format(DATA_DIR)\nTEST_DATE = \"{0}/test_date.csv\".format(DATA_DIR)\n\n\ntrain = pd.read_csv(TRAIN_NUMERIC, usecols=[ID_COLUMN, TARGET_COLUMN], nrows=NROWS)\ntest = pd.read_csv(TEST_NUMERIC, usecols=[ID_COLUMN], nrows=NROWS)\n\ntrain[\"StartTime\"] = -1\ntest[\"StartTime\"] = -1\n\n\nnrows = 0\nfor tr, te in zip(pd.read_csv(TRAIN_DATE, chunksize=CHUNKSIZE), pd.read_csv(TEST_DATE, chunksize=CHUNKSIZE)):\n    feats = np.setdiff1d(tr.columns, [ID_COLUMN])\n\n    stime_tr = tr[feats].min(axis=1).values\n    stime_te = te[feats].min(axis=1).values\n\n    train.loc[train.Id.isin(tr.Id), 'StartTime'] = stime_tr\n    test.loc[test.Id.isin(te.Id), 'StartTime'] = stime_te\n\n    nrows += CHUNKSIZE\n    if nrows >= NROWS:\n        break\n\n\nntrain = train.shape[0]\ntrain_test = pd.concat((train, test)).reset_index(drop=True).reset_index(drop=False)\n\ntrain_test['0_¯\\_(ツ)_/¯_1'] = train_test[ID_COLUMN].diff().fillna(9999999).astype(int)\ntrain_test['0_¯\\_(ツ)_/¯_2'] = train_test[ID_COLUMN].iloc[::-1].diff().fillna(9999999).astype(int)\n\ntrain_test = train_test.sort_values(by=['StartTime', 'Id'], ascending=True)\n\ntrain_test['0_¯\\_(ツ)_/¯_3'] = train_test[ID_COLUMN].diff().fillna(9999999).astype(int)\ntrain_test['0_¯\\_(ツ)_/¯_4'] = train_test[ID_COLUMN].iloc[::-1].diff().fillna(9999999).astype(int)\n\ntrain_test = train_test.sort_values(by=['index']).drop(['index'], axis=1)\ntrain = train_test.iloc[:ntrain, :]\n\nfeatures = np.setdiff1d(list(train.columns), [TARGET_COLUMN, ID_COLUMN])\n\ny = train.Response.ravel()\ntrain = np.array(train[features])\n\nprint('train: {0}'.format(train.shape))\nprior = np.sum(y) / (1.*len(y))\n\nxgb_params = {\n    'seed': 0,\n    'colsample_bytree': 0.7,\n    'silent': 1,\n    'subsample': 0.7,\n    'learning_rate': 0.1,\n    'objective': 'binary:logistic',\n    'max_depth': 4,\n    'num_parallel_tree': 1,\n    'min_child_weight': 2,\n    'eval_metric': 'auc',\n    'base_score': prior\n}\n\n\ndtrain = xgb.DMatrix(train, label=y)\nres = xgb.cv(xgb_params, dtrain, num_boost_round=10, nfold=4, seed=0, stratified=True,\n             early_stopping_rounds=1, verbose_eval=1, show_stdv=True)\n\ncv_mean = res.iloc[-1, 0]\ncv_std = res.iloc[-1, 1]\n\nprint('CV-Mean: {0}+{1}'.format(cv_mean, cv_std))"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"5373fc38-338d-1e87-b499-036d786f0f36"},"outputs":[],"source":"res"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"341b8b8a-23ba-8224-8cb5-532f7f369ba9"},"outputs":[],"source":""}],"metadata":{"_change_revision":0,"_is_fork":false,"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.5.2"}},"nbformat":4,"nbformat_minor":0}