{"cells":[{"metadata":{"_uuid":"86e7b44482c5adbcc22d3fa8b371109759e95533"},"cell_type":"markdown","source":"Hi everyone! This kernel uses `fastai` to predict the output by using the `Tabular` class. First, we transform the input into some features, then we train a model on the data and finally ensemble the results into a submission. Hope you find it somewhat useful."},{"metadata":{"trusted":true,"_uuid":"4526dbd6c0393d730f200107c1ea3feeb11e1f49"},"cell_type":"code","source":"from fastai.tabular import *\nfrom fastai import *","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d3ab9d3bca84b4c1ae565bed84c084ac02a3e8da"},"cell_type":"code","source":"import datetime","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c1b05a3a3b92c24cacdd41059967fd1777abe717"},"cell_type":"code","source":"path = Path('../input')\npath.ls()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ec4b5a7a28fd809bc7adbe9cff542c76778d90ad"},"cell_type":"code","source":"cur = Path('')\ncur.ls()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0b4008d24147dcedd88c2da29d0215e2b661fdf2"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"19cf1bac0592b721b051ad47df7a355c30241539"},"cell_type":"code","source":"df_train = pd.read_csv(path/'train.csv')\ndf_test = pd.read_csv(path/'test.csv')\ndf_hist_trans = pd.read_csv(path/'historical_transactions.csv')\ndf_new_merchant_trans = pd.read_csv(path/'new_merchant_transactions.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"db2d1d59aaae9ab07b14f010b7888666826d7747"},"cell_type":"code","source":"df_test.head().T","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ce527b0fe5f55757a596aa59eb65c33c5f904618"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1a88f00a884664fa13759e79ce114aabe3251142"},"cell_type":"code","source":"# Preprocess and merge datasets\n# Preprocessing from: https://www.kaggle.com/chauhuynh/my-first-kernel-3-699","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"96015c17e654317bf141cc4fb46c23513fa2706c"},"cell_type":"code","source":"for df in [df_hist_trans,df_new_merchant_trans]:\n    df['category_2'].fillna(1.0,inplace=True)\n    df['category_3'].fillna('A',inplace=True)\n    df['merchant_id'].fillna('M_ID_00a6ca8a8a',inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"aa640a9e2beb87a783e00a54a56ef8a20ec1229e"},"cell_type":"code","source":"def get_new_columns(name,aggs):\n    return [name + '_' + k + '_' + agg for k in aggs.keys() for agg in aggs[k]]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d949d3f6aa1a6d2fe0c8e955e0a58d3b5d160062"},"cell_type":"code","source":"# Fastai version of data preprocessing\n# add_datepart(df_train, 'first_active_month')\n# add_datepart(df_test, 'first_active_month')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"952b87b88462bc84104d5d97dbb99d1e9aec1513"},"cell_type":"code","source":"for df in [df_hist_trans,df_new_merchant_trans]:\n    df['purchase_date'] = pd.to_datetime(df['purchase_date'])\n    df['year'] = df['purchase_date'].dt.year\n    df['weekofyear'] = df['purchase_date'].dt.weekofyear\n    df['month'] = df['purchase_date'].dt.month\n    df['dayofweek'] = df['purchase_date'].dt.dayofweek\n    df['weekend'] = (df.purchase_date.dt.weekday >=5).astype(int)\n    df['hour'] = df['purchase_date'].dt.hour\n    df['authorized_flag'] = df['authorized_flag'].map({'Y':1, 'N':0})\n    df['category_1'] = df['category_1'].map({'Y':1, 'N':0})\n    #https://www.kaggle.com/c/elo-merchant-category-recommendation/discussion/73244\n    df['month_diff'] = ((datetime.datetime.today() - df['purchase_date']).dt.days)//30\n    df['month_diff'] += df['month_lag']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9aff572449023d1ff1539943ec3d50f2a053a59b"},"cell_type":"code","source":"aggs = {}\nfor col in ['month','hour','weekofyear','dayofweek','year','subsector_id','merchant_id','merchant_category_id']:\n    aggs[col] = ['nunique']\n\naggs['purchase_amount'] = ['sum','max','min','mean','var']\naggs['installments'] = ['sum','max','min','mean','var']\naggs['purchase_date'] = ['max','min']\naggs['month_lag'] = ['max','min','mean','var']\naggs['month_diff'] = ['mean']\n# aggs['authorized_flag'] = ['sum']#, 'mean'] # df_train['hist_authorized_flag_mean'] is all NaN; sum is 0\naggs['weekend'] = ['sum', 'mean']\n# aggs['category_1'] = ['sum', 'mean'] # all zeros\naggs['card_id'] = ['size']\n\nfor col in ['category_2','category_3']:\n    df_hist_trans[col+'_mean'] = df_hist_trans.groupby([col])['purchase_amount'].transform('mean')\n    aggs[col+'_mean'] = ['mean']    \n\nnew_columns = get_new_columns('hist',aggs)\ndf_hist_trans_group = df_hist_trans.groupby('card_id').agg(aggs)\ndf_hist_trans_group.columns = new_columns\ndf_hist_trans_group.reset_index(drop=False,inplace=True)\ndf_hist_trans_group['hist_purchase_date_diff'] = (df_hist_trans_group['hist_purchase_date_max'] - df_hist_trans_group['hist_purchase_date_min']).dt.days\ndf_hist_trans_group['hist_purchase_date_average'] = df_hist_trans_group['hist_purchase_date_diff']/df_hist_trans_group['hist_card_id_size']\ndf_hist_trans_group['hist_purchase_date_uptonow'] = (datetime.datetime.today() - df_hist_trans_group['hist_purchase_date_max']).dt.days\ndf_train = df_train.merge(df_hist_trans_group,on='card_id',how='left')\ndf_test = df_test.merge(df_hist_trans_group,on='card_id',how='left')\ndel df_hist_trans_group;gc.collect()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8b89e1b006b68fa28107ff68d7973c8a294444ef"},"cell_type":"code","source":"aggs = {}\nfor col in ['month','hour','weekofyear','dayofweek','year','subsector_id','merchant_id','merchant_category_id']:\n    aggs[col] = ['nunique']\naggs['purchase_amount'] = ['sum','max','min','mean','var']\naggs['installments'] = ['sum','max','min','mean','var']\naggs['purchase_date'] = ['max','min']\naggs['month_lag'] = ['max','min','mean','var']\naggs['month_diff'] = ['mean']\naggs['weekend'] = ['sum', 'mean']\naggs['category_1'] = ['sum', 'mean']\naggs['card_id'] = ['size']\n\nfor col in ['category_2','category_3']:\n    df_new_merchant_trans[col+'_mean'] = df_new_merchant_trans.groupby([col])['purchase_amount'].transform('mean')\n    aggs[col+'_mean'] = ['mean']\n    \nnew_columns = get_new_columns('new_hist',aggs)\ndf_hist_trans_group = df_new_merchant_trans.groupby('card_id').agg(aggs)\ndf_hist_trans_group.columns = new_columns\ndf_hist_trans_group.reset_index(drop=False,inplace=True)\ndf_hist_trans_group['new_hist_purchase_date_diff'] = (df_hist_trans_group['new_hist_purchase_date_max'] - df_hist_trans_group['new_hist_purchase_date_min']).dt.days\ndf_hist_trans_group['new_hist_purchase_date_average'] = df_hist_trans_group['new_hist_purchase_date_diff']/df_hist_trans_group['new_hist_card_id_size']\ndf_hist_trans_group['new_hist_purchase_date_uptonow'] = (datetime.datetime.today() - df_hist_trans_group['new_hist_purchase_date_max']).dt.days\ndf_train = df_train.merge(df_hist_trans_group,on='card_id',how='left')\ndf_test = df_test.merge(df_hist_trans_group,on='card_id',how='left')\ndel df_hist_trans_group;gc.collect()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"145b51a357027de53a1890b10ab45f9f617eba69"},"cell_type":"code","source":"del df_hist_trans;gc.collect()\ndel df_new_merchant_trans;gc.collect()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bbaa499b8853d98c15ad74257c175809fae43d88"},"cell_type":"code","source":"df_train.head(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ca78b769cb093aa8a5e092e6f6e1696a04fdd77b"},"cell_type":"code","source":"df_train['outliers'] = 0\ndf_train.loc[df_train['target'] < -30, 'outliers'] = 1\ndf_train['outliers'].value_counts()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8558f36c6c85335fd07a96a246e82955bd2ea055"},"cell_type":"code","source":"for df in [df_train,df_test]:\n    df['first_active_month'] = pd.to_datetime(df['first_active_month']) # remove active month afterwards?\n    df['dayofweek'] = df['first_active_month'].dt.dayofweek\n    df['weekofyear'] = df['first_active_month'].dt.weekofyear\n    df['month'] = df['first_active_month'].dt.month\n    df['elapsed_time'] = (datetime.datetime.today() - df['first_active_month']).dt.days\n    df['hist_first_buy'] = (df['hist_purchase_date_min'] - df['first_active_month']).dt.days\n    df['new_hist_first_buy'] = (df['new_hist_purchase_date_min'] - df['first_active_month']).dt.days\n    for f in ['hist_purchase_date_max','hist_purchase_date_min','new_hist_purchase_date_max',\\\n                     'new_hist_purchase_date_min']:\n        df[f] = df[f].astype(np.int64) * 1e-9\n    df['card_id_total'] = df['new_hist_card_id_size']+df['hist_card_id_size']\n    df['purchase_amount_total'] = df['new_hist_purchase_amount_sum']+df['hist_purchase_amount_sum']\n\nfor f in ['feature_1','feature_2','feature_3']:\n    order_label = df_train.groupby([f])['outliers'].mean()\n    df_train[f] = df_train[f].map(order_label)\n    df_test[f] = df_test[f].map(order_label)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ffd688827fb9f73fa269335eef57e7ed3555f825"},"cell_type":"code","source":"df_train_columns = [c for c in df_train.columns if c not in ['card_id', 'first_active_month','target','outliers']]\ntarget = df_train['target']\n# del df_train['target']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0519795229a3e954116205032faf5d153def1420"},"cell_type":"code","source":"# remove dates\ndel df_train['first_active_month']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"477c66c6f34b320bbfb474ec00d5df498ac167be"},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ac1838cec4614065802dfb399f3857224a0e7527"},"cell_type":"code","source":"# Save data\ndf_train.to_csv('proc-train-data.csv')\ndf_test.to_csv('proc-test-data.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"79de2a7752b22650bbedf0ad19c86cbd3dfaad72"},"cell_type":"code","source":"# Load Data\ndf_train = pd.read_csv('proc-train-data.csv', index_col=0, header=0)\ndf_test = pd.read_csv('proc-test-data.csv', index_col=0, header=0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"49bd4481efcc6ee74a9831780c1bbf0d8eae6e71"},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"52f78434216149bdb6c62b6eebbe04434446bb7d"},"cell_type":"code","source":"# Create Databunch","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d49fd8dc9ec2e804fa8c1787fab376d7dd89240c"},"cell_type":"code","source":"cat_names = ['card_id', 'feature_1', 'feature_2', 'feature_3', 'hist_month_nunique', 'hist_hour_nunique', 'hist_weekofyear_nunique', \n             'hist_dayofweek_nunique', 'hist_year_nunique', 'hist_subsector_id_nunique', 'hist_merchant_id_nunique', 'hist_merchant_category_id_nunique',\n             'hist_category_2_mean_mean', 'hist_category_3_mean_mean', 'hist_purchase_date_uptonow', 'new_hist_month_nunique', 'new_hist_hour_nunique', \n             'new_hist_weekofyear_nunique', 'new_hist_dayofweek_nunique', 'new_hist_year_nunique', 'new_hist_subsector_id_nunique', 'new_hist_merchant_id_nunique',\n             'new_hist_merchant_category_id_nunique', 'dayofweek', 'weekofyear', 'month' # 'outliers',\n            ]\ncont_names = ['hist_purchase_amount_sum', 'hist_purchase_amount_max', 'hist_purchase_amount_min', 'hist_purchase_amount_mean', \n              'hist_purchase_amount_var', 'hist_installments_sum', 'hist_installments_max', 'hist_installments_min', 'hist_installments_mean',\n              'hist_installments_var', 'hist_purchase_date_max', 'hist_purchase_date_min', 'hist_month_lag_max', 'hist_month_lag_min', 'hist_month_lag_mean', \n              'hist_month_lag_var', 'hist_month_diff_mean', 'hist_weekend_sum', 'hist_weekend_mean', 'hist_card_id_size', 'hist_purchase_date_diff', \n              'hist_purchase_date_average', 'new_hist_purchase_amount_sum', 'new_hist_purchase_amount_max', 'new_hist_purchase_amount_min', \n              'new_hist_purchase_amount_mean', 'new_hist_purchase_amount_var', 'new_hist_installments_sum', 'new_hist_installments_max', 'new_hist_installments_min',\n              'new_hist_installments_mean', 'new_hist_installments_var', 'new_hist_purchase_date_max', 'new_hist_month_lag_max', 'new_hist_month_lag_min', \n              'new_hist_month_lag_mean', 'new_hist_month_lag_var', 'new_hist_month_diff_mean', 'new_hist_weekend_sum', 'new_hist_weekend_mean', \n              'new_hist_category_1_sum', 'new_hist_category_1_mean', 'new_hist_card_id_size', 'new_hist_category_2_mean_mean', 'new_hist_category_3_mean_mean',\n              'new_hist_purchase_date_diff', 'new_hist_purchase_date_average', 'new_hist_purchase_date_uptonow', 'elapsed_time', 'hist_first_buy', 'new_hist_first_buy',\n              'card_id_total', 'purchase_amount_total', 'new_hist_purchase_date_min'\n             ]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2756478e91cded27c0cf4ca883a797f04faf8442"},"cell_type":"code","source":"for cat in df_train.columns:\n    if cat not in cat_names and cat not in cont_names:\n        print(cat)\n        \nfor cat in cat_names:\n    if cat not in df_train.columns:\n        print(cat)\n        \nfor cat in cont_names:\n    if cat not in df_train.columns:\n        print(cat)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e1b2a640e16f9cf276e5975bef8227e8e3400053"},"cell_type":"code","source":"len(df_train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"11cb888935e370bbd74e5d8ea4af0a41bf01a46c"},"cell_type":"code","source":"dep_var = 'target'\nprocs = [FillMissing, Categorify, Normalize]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"fe0247ac996baad62ed48889a29d29715ef276ef"},"cell_type":"code","source":"df_test[cont_names] = df_test[cont_names].fillna(df_test[cont_names].median(axis=0))\ndel df_train['outliers']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a963b6c6b72fa4eb5a3376ba5e4276f498743248"},"cell_type":"code","source":"test_data = TabularList.from_df(df_test, path=\".\", cat_names=cat_names, cont_names=cont_names, procs=procs)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b41be6ef6659271a70461cc3fe20b0bdbd433c39"},"cell_type":"code","source":"data = (TabularList.from_df(df_train, path=\".\", cat_names=cat_names, cont_names=cont_names, procs=procs)\n                           .random_split_by_pct(0.20)\n                           .label_from_df(cols=dep_var)\n                           .add_test(test_data)\n                           .databunch(bs=4096))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d5dfd08bd557bd593d985efcd806e9638bad439f"},"cell_type":"code","source":"data.show_batch(rows=10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1a0486b388ce177efe71413a5d25b90b7e6ac975"},"cell_type":"code","source":"# Create a tabular learner Model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"cf8fb5d29ccf41805771d25f39328bcf493ce672"},"cell_type":"code","source":"y_range = [df_train['target'].min()*1.3, df_train['target'].max()*1.3]\ny_range","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3948d509a4d02801a0b1ba630af9b44a6410fa32"},"cell_type":"code","source":"learn = tabular_learner(data, layers=[1000,500], metrics=rmse, callback_fns=[callbacks.SaveModelCallback],\n                        wd=1, emb_drop=0.1, ps=[5e-3, 5e-2], y_range=y_range)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"75c5e054831dd7376bb4c6e3b070871151f4fbdf"},"cell_type":"code","source":"# Find learning rate\nlearn.lr_find()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a0d8a3426a03e89897c3d1d536f57ddf986970c6"},"cell_type":"code","source":"learn.recorder.plot()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8ba4be13d4d305e2ce569bbe4ba5061a53299b09"},"cell_type":"code","source":"# Train!\nlearn.fit_one_cycle(20,5e-2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1e654b2f696deca83a0b70a906c2eaa08569fde1"},"cell_type":"code","source":"# Grab some predictions for ensembling\npreds_1,tgt_1 = learn.get_preds(DatasetType.Test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f813117b49f5230082b62904779d27e929591083"},"cell_type":"code","source":"# Sometimes you can add this section after initial training\n# learn.callback_fns.append(callbacks.SaveModelCallback)`\n# learn.callback_fns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ec591fdae05209f54f555c2fd0960a5d07d713ac"},"cell_type":"code","source":"learn.fit_one_cycle(10,1e-3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2980ae2a5645016f6f3797d2981f94c608981c4e"},"cell_type":"code","source":"rmse(*learn.get_preds())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2f62eda45b61e02955439c6f5ef55ced78a901fe"},"cell_type":"code","source":"learn.fit_one_cycle(15,1e-4)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f97a9c0f91b26fdf4e5bdf2af7621a30d17897bc"},"cell_type":"code","source":"rmse(*learn.get_preds())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3fe242256e005d51243f47a6b472049e120383b8"},"cell_type":"code","source":"learn.fit_one_cycle(15,1e-5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"656677d6755a030c57af003f06309aeee3fe8850"},"cell_type":"code","source":"learn.fit_one_cycle(20,5e-7)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9db8998f00344978edd48e6a2e0b04378834deb1"},"cell_type":"code","source":"rmse(*learn.get_preds())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8c2f4d39395ca798709ce39d48884db0211e30c0"},"cell_type":"code","source":"learn.recorder.plot_losses()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"8060c51b84b12f42d5eb354762b23b8a5f0e9007"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"93ee89239d8844560b0e30d737dbe955c398a7d4"},"cell_type":"code","source":"# Check sample submission\nsamp = pd.read_csv(path/'sample_submission.csv')\nsamp.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"8d7b9f54b39fd427b860c57f0a23874716d9ab8c"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0ab8ea2f1d8f4c4cf2be55f7590e000eb0056c61"},"cell_type":"code","source":"# Predict on test set\npreds,tgt = learn.get_preds(DatasetType.Test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4c08b0f9601bbb020a89e3e9cc3680830b577a25"},"cell_type":"code","source":"preds.median(), preds.mean(), preds.max(), preds.min()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a7838b26482a38646cf4ff6fd26c35e02bef42d4"},"cell_type":"code","source":"test_reload_subm = pd.read_csv(path/'test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0e0dee09388f1385226b03cb83faceec3c558add"},"cell_type":"code","source":"subm = pd.DataFrame({'card_id': test_reload_subm['card_id'], 'target': preds.squeeze()})\nsubm.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f946dd732747d1115dad02ed66382c23a440457b"},"cell_type":"code","source":"subm2 = pd.DataFrame({'card_id': test_reload_subm['card_id'], 'target': preds_1.squeeze()})\nsubm2.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"bbf6bdd65f9498ac856f129de34afe2b4d607ef0"},"cell_type":"code","source":"# Save multiple predictions so that you can ensemble at the end","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7c02bc4c5ef93da4d9495068391d1d0cf6700a43"},"cell_type":"code","source":"s_n = 1\n# s_n += 1\n# s_n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7bb02e433b058d24fa3a8f98ded4d1f3667703b9"},"cell_type":"code","source":"subm.to_csv(f'subm{s_n}.csv', index=False)\nsubm2.to_csv(f'subm2.csv', index=False) # Comment this out","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"19d24b1e47c37ed1d3c65e9657706aeddd1ac32f"},"cell_type":"code","source":"# Confirm it saved correctly\nc = pd.read_csv(f'subm{s_n}.csv')\nc.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"24cb9200d684ab47ff478e9cd0365941a2fd442c"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"16e170fcf28be26fe6559bbb54e3c215532a4147"},"cell_type":"code","source":"# Download individual results from kaggle kernel\n# from IPython.display import FileLink","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7df3552ff6260e85e8a7c1779d86849805381f87"},"cell_type":"code","source":"# FileLink(f'subm{s_n}.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"6dc97a0088a3fe539ef59a6786c64f820ada30ff"},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"11c0f3faec972b1b6101f88b2ff3c64d6094a2ff"},"cell_type":"code","source":"# Ensemble some predictions","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"12d9d8915c3ff74d22f58e5581ca6b81822265da"},"cell_type":"code","source":"!ls","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"772dca13e325b47cba5c67f3fe9bdc9a02126b68"},"cell_type":"code","source":"s1 = pd.read_csv('subm1.csv')\ns2 = pd.read_csv('subm2.csv')\n# s3 = pd.read_csv('subm3.csv')\n# s4 = pd.read_csv('subm4.csv')\n# s5 = pd.read_csv('subm5.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"11bcac51877801cad7a9d767dba3283e368385ca"},"cell_type":"code","source":"s_all = pd.concat([s1,s2['target']],axis=1) #,s3['target'],s4['target'],s5['target']],axis=1)\ns_all.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f7e8a48fa7f04e50d40478d82a43a104b17097a0"},"cell_type":"code","source":"s_all.describe().T","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"28a85d6fe7b7b34722ea54046651d37f13d37965"},"cell_type":"code","source":"s_all.describe().T.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"458fc0f118df71204d74e42b60f43aa19007f604"},"cell_type":"code","source":"s_all_mean = s_all.mean(axis=1)\ns_all_mean.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0a4ff9768e16c39d60c546eb91bc1abde456ab40"},"cell_type":"code","source":"subm_ens = pd.DataFrame({'card_id': test_reload_subm['card_id'], 'target': s_all_mean})\nsubm_ens.to_csv(f'subm_ens.csv', index=False)","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}