{"cells":[{"metadata":{},"cell_type":"markdown","source":"# An easy and generic method to blend kernels\n\n## planning to provide a more thorough approach soon!"},{"metadata":{},"cell_type":"markdown","source":"## imports"},{"metadata":{"trusted":true,"_uuid":"d1aa682c22d68ee5f8ddadd85a2da819f2ff5e44"},"cell_type":"code","source":"import os\nimport sys\nimport time\nimport numpy as np\nimport pandas as pd \nimport seaborn as sns\nfrom math import sqrt\nfrom sklearn import metrics\nimport matplotlib.pyplot as plt\nfrom sklearn.metrics import mean_squared_error","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## getting the data"},{"metadata":{"trusted":true,"_uuid":"9f06b43acba8ad16b0357853e121b200c2715499"},"cell_type":"code","source":"df1 = pd.read_csv(\"../input/elo-blending/3.695.csv\")\ndf2 = pd.read_csv(\"../input/elo-blending/3.696.csv\")\ndf3 = pd.read_csv(\"../input/submit/submit.csv\")\ndf4 = pd.read_csv(\"../input/combined/combining_submission.csv\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## reading several high scores"},{"metadata":{"trusted":true,"_uuid":"29c2ac5baee95163734a6633d0d3ebba8a4ef74e"},"cell_type":"code","source":"df_base0  = pd.read_csv('../input/elo-blending/3.695.csv',      names=[\"card_id\",\"target0\"],  skiprows=[0],header=None)\ndf_base1  = pd.read_csv('../input/elo-blending/3.696.csv',      names=[\"card_id\",\"target1\"],  skiprows=[0],header=None)\ndf_base2  = pd.read_csv('../input/elo-blending/3.6999.csv',     names=[\"card_id\",\"target2\"],  skiprows=[0],header=None)\ndf_base3  = pd.read_csv('../input/elo-blending/3.69991.csv',    names=[\"card_id\",\"target3\"],  skiprows=[0],header=None)\ndf_base4  = pd.read_csv('../input/elo-blending/3.699992.csv',   names=[\"card_id\",\"target4\"],  skiprows=[0],header=None)\ndf_base5  = pd.read_csv('../input/elo-blending/3.70.csv',       names=[\"card_id\",\"target5\"],  skiprows=[0],header=None)\ndf_base6  = pd.read_csv('../input/elo-blending/3.701.csv',      names=[\"card_id\",\"target6\"],  skiprows=[0],header=None)\ndf_base7  = pd.read_csv('../input/elo-blending/3.702.csv',      names=[\"card_id\",\"target7\"],  skiprows=[0],header=None)\ndf_base8  = pd.read_csv('../input/elo-blending/3.703.csv',      names=[\"card_id\",\"target8\"],  skiprows=[0],header=None)\ndf_base9  = pd.read_csv('../input/elo-blending/3.704.csv',      names=[\"card_id\",\"target9\"],  skiprows=[0],header=None)\ndf_base10 = pd.read_csv('../input/elo-blending/Blending.csv',   names=[\"card_id\",\"target10\"], skiprows=[0],header=None)\ndf_base11 = pd.read_csv('../input/elo-blending/BlendingRLS.csv',names=[\"card_id\",\"target11\"], skiprows=[0],header=None)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## merging all the solutions into one"},{"metadata":{"trusted":true,"_uuid":"fbbd092b999a4f444f1cc8a9a2cab03fe406f33b"},"cell_type":"code","source":"df_base = pd.merge(df_base0,df_base1,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base2,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base3,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base4,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base5,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base6,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base7,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base8,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base9,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base10,how='inner',on='card_id')\ndf_base = pd.merge(df_base,df_base11,how='inner',on='card_id')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## creating a heatmap to understand easier"},{"metadata":{"trusted":true,"_uuid":"3762e426d74b24ff567cca750550c2e40c5dd4c9"},"cell_type":"code","source":"plt.figure(figsize=(16,12))\nsns.heatmap(df_base.iloc[:,1:].corr(),annot=True,fmt=\".2f\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## our metric is mse"},{"metadata":{"trusted":true,"_uuid":"810e3383ed510b1aee2d50ff4a5a890c85cea367"},"cell_type":"code","source":"M = np.zeros([df_base.iloc[:,1:].shape[1],df_base.iloc[:,1:].shape[1]])\nfor i in np.arange(M.shape[1]):\n    for j in np.arange(M.shape[1]):\n        M[i,j] = sqrt(metrics.mean_squared_error(df_base.iloc[:,i+1], df_base.iloc[:,j+1]))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## let's find the median"},{"metadata":{"trusted":true,"_uuid":"4754200b6e563ebb53915e507664e1fa825a3117"},"cell_type":"code","source":"df_base_median = df_base.iloc[:,1:].median(axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"df6907a1123f78fc33e79c38796d856fe879ba14","scrolled":false},"cell_type":"code","source":"df_base0  = pd.read_csv('../input/elo-blending/3.695.csv',      names=[\"card_id\",\"target0\"],  skiprows=[0],header=None)\ndf_base1  = pd.read_csv('../input/elo-blending/3.696.csv',      names=[\"card_id\",\"target1\"],  skiprows=[0],header=None)\ndf_base10 = pd.read_csv('../input/elo-blending/Blending.csv',   names=[\"card_id\",\"target10\"], skiprows=[0],header=None)\ndf_base11 = pd.read_csv('../input/elo-blending/BlendingRLS.csv',names=[\"card_id\",\"target11\"], skiprows=[0],header=None)\n\ndf_base = pd.merge(df_base0,df_base1,how='inner',on='card_id')\ndf_base = pd.merge(df_base0,df_base10,how='inner',on='card_id')\ndf_base = pd.merge(df_base0,df_base11,how='inner',on='card_id')\n\nplt.figure(figsize=(12,8))\nsns.heatmap(df_base.iloc[:,1:].corr(),annot=True,fmt=\".2f\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b70be6a4f21afc22153e4cf3dfbe06d77a333976"},"cell_type":"code","source":"M = np.zeros([df_base.iloc[:,1:].shape[1],df_base.iloc[:,1:].shape[1]])\nfor i in np.arange(M.shape[1]):\n    for j in np.arange(M.shape[1]):\n        M[i,j] = sqrt(metrics.mean_squared_error(df_base.iloc[:,i+1], df_base.iloc[:,j+1]))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"0ccbe06be96f60d0fce5e1343c0951376a4af90c"},"cell_type":"code","source":"df_base['target'] = df_base_median\ndf_base['target4'] = df4['target']","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## a tiny post-process trick\n## checking the outliers in train and comparing to test/"},{"metadata":{"trusted":true,"_uuid":"f863e37e640afd2ca1eea3e7dd4fe75a3008990c"},"cell_type":"code","source":"df_final = np.zeros(len(df_base))\na=-10*np.log2(10)\nthresh = -14\n\nfor i in range(len(df3)-1):\n    if df3['target'][i]< thresh:\n        df_final[i]=a\n    else:\n        df_final[i]=df_base['target'][i]\npd.Series(df_final).value_counts().head(1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## kinda normalizing"},{"metadata":{"trusted":true,"_uuid":"5eb1c602ba37855ca73ffee610d6de5d9597d887"},"cell_type":"code","source":"magic = np.median(df_final) - df_final.std()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"63e484fe6e4ee29c586e521079e6fb7d44349cd2"},"cell_type":"code","source":"for i in range(len(df_final)-1):\n    if df_final[i] > magic:\n        df_final[i] =  df_final[i] - abs(np.median(df_final))/8 +0.001","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## and submission"},{"metadata":{"trusted":true,"_uuid":"d12124d312b71b753c842d8384c54a4509e68184"},"cell_type":"code","source":"df_finall=pd.DataFrame(df_base['card_id'])\ndf_finall['target'] = df_final\ndf_finall[['card_id','target']].to_csv(\"good_output.csv\",index=False)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## thank you very much, please upvote if you find it useful!"}],"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}