# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load in 

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the "../input/" directory.
# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory

import os
print(os.listdir("../input"))

# Any results you write to the current directory are saved as output.
print("Reading the data...\n")
df1 = pd.read_csv('../input/talkingdata-wordbatch-fm-ftrl-lb-0-9769/wordbatch_fm_ftrl.csv')
df2 = pd.read_csv('../input/talkingdata-added-new-features-in-lightgbm/sub_it7.csv')
df3 = pd.read_csv('../input/krishna-s-lgbm-to-catboost-undrsmpl-1-1/Krishna_s_CatBoost_1_1_CB_1_1.csv')
df4 = pd.read_csv('../input/log-and-harmonic-mean-lets-go/submission_avg.csv')
df5 = pd.read_csv('../input/if-you-run-on-entire-dataset-lb-0-9798/sub_it6.csv')

models = {
            'df1' : {'name':'wordbatch_fm_ftrl',
                    'score':97.69,
                    'df':df1 },
            #'df2' : {'name':'sub_it7',
            #        'score':96.33,
            #        'df':df2 },
            'df3' : {'name':'Krishna_s_CatBoost_1_1_CB_1_1',
                    'score':97.33,
                    'df':df3 },
            'df4' : {'name':'submission_avg',
                    'score':97.87,
                    'df':df4 },
            'df5' : {'name':'sub_it6',
                    'score':97.98,
                    'df':df5 },
         }

# Placeholders for mean of our models
isa_hm = 0  # harmonic
isa_am = 0  # arithmetic
isa_gm = 1  # geometric

print("Blending...\n")
for df in models.keys() : 
    isa_hm += 1/(models[df]['df'].is_attributed)
    isa_am += models[df]['df'].is_attributed
    isa_gm *= models[df]['df'].is_attributed

num_models = len(models)

isa_hm = num_models/isa_hm
isa_am = isa_am/num_models
isa_gm = (isa_gm)**(1/num_models)

print("Isa harmo\n")
print(isa_hm[:5])
print()
print("Isa arith\n")
print(isa_am[:5])
print()
print("Isa geom\n")
print(isa_gm[:5])

# Average the mean values
isa_fin = (isa_hm + isa_am + isa_gm)/3
print('fin min', isa_fin.min())
print('fin max', isa_fin.max())

sub_fin = pd.DataFrame()
sub_fin['click_id'] = df1['click_id']
sub_fin['is_attributed'] = np.clip(isa_fin, 0., 1.)

print("Writing...")
sub_fin.to_csv('submission.csv', index=False, float_format='%.9f')
