{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# What is about ?\n\nAnalyse blend of several solutions \n\n","metadata":{}},{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-11-13T15:25:43.001181Z","iopub.execute_input":"2022-11-13T15:25:43.001814Z","iopub.status.idle":"2022-11-13T15:25:43.202719Z","shell.execute_reply.started":"2022-11-13T15:25:43.001702Z","shell.execute_reply":"2022-11-13T15:25:43.201709Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import time\nt0start = time.time()\n\nimport pandas as pd\nimport numpy as np\nimport os\nimport sys\n\nimport matplotlib.pyplot as plt\n#plt.style.use('dark_background')\nimport seaborn as sns","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:25:43.204570Z","iopub.execute_input":"2022-11-13T15:25:43.205241Z","iopub.status.idle":"2022-11-13T15:25:44.593955Z","shell.execute_reply.started":"2022-11-13T15:25:43.205206Z","shell.execute_reply":"2022-11-13T15:25:44.592457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_meta = pd.read_csv('/kaggle/input/data-for-multimodal-singlecell-integration/_citeseq_meta_all_text_also.csv', index_col = 0)\ndf_meta_full = df_meta.copy()\ndf_meta = df_meta.iloc[:70988,:]\ndf_meta","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:25:44.595358Z","iopub.execute_input":"2022-11-13T15:25:44.595746Z","iopub.status.idle":"2022-11-13T15:25:44.983527Z","shell.execute_reply.started":"2022-11-13T15:25:44.595693Z","shell.execute_reply":"2022-11-13T15:25:44.982122Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_Y = pd.read_csv('/kaggle/input/data-for-multimodal-singlecell-integration/CITEseq_targets_rescaled.csv',index_col = 0)\nY_true = df_Y.values\nlist_all_targets = list(df_Y.columns)\nprint(list_all_targets[:10] )\nprint(Y_true.shape)\ndf_Y","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:25:44.985471Z","iopub.execute_input":"2022-11-13T15:25:44.985857Z","iopub.status.idle":"2022-11-13T15:25:48.776708Z","shell.execute_reply.started":"2022-11-13T15:25:44.985822Z","shell.execute_reply":"2022-11-13T15:25:48.775519Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_ho = pd.read_csv('/kaggle/input/data-for-multimodal-singlecell-integration/df_save_hold_out.csv')\nmask_holdout = df_ho['HoldOut'] == 1\nmask_main = df_ho['HoldOut'] == 0\nprint(mask_holdout.sum(), mask_main.sum(), mask_holdout.sum()+ mask_main.sum(),df_ho.shape   )\ndf_ho.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:25:48.780118Z","iopub.execute_input":"2022-11-13T15:25:48.780506Z","iopub.status.idle":"2022-11-13T15:25:48.867904Z","shell.execute_reply.started":"2022-11-13T15:25:48.780472Z","shell.execute_reply":"2022-11-13T15:25:48.866624Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list_f = [\n'/kaggle/input/data-multimodal-singlecell-integration/RidgeNfeat2719_Alpha1e4/RidgeNfeat2719_Alpha1e4_Y_pred_oof_private_like.csv',\n'/kaggle/input/xgb-predictions-for-multimodal-competition/XGB_NFeat2719Y_pred_oof_private_like.csv',  \n'/kaggle/input/data-multimodal-singlecell-integration/MLP2_NFeat651/MLP2_NFeat651Y_pred_oof_private_like.csv',\n'/kaggle/input/mlp-ver6-outputs/MLP_ver6_shevY_pred_oof_private_like.csv',\n'/kaggle/input/lgbm-oofpredictss/LGBMY_pred_oof_private_like.csv',\n'/kaggle/input/krr-2000feat-140tar-05trainsize/KernelRidgeNfeat2000_Alpha0.2_RBF_length10Y_pred_oof_private_like.csv',\n'/kaggle/input/krr-2000feat-140tar-03trainsize/KernelRidgeNfeat2000_Alpha0.2_RBF_length10Y_pred_oof_private_like (1).csv',\n]\n\nrescale_predicts_to_mean0_std1 = True\nn_models = 4\n\ndict_df = {}\nlist_names = ['Ridge2719','XGB','MLP2','KerasMLPV6', 'LGB','KRR05',  'KRR03']\nfor i,f in enumerate(list_f[:n_models]):\n    key_loc = list_names[i]\n    df = pd.read_csv(f,index_col = 0)\n    if rescale_predicts_to_mean0_std1:\n        t = df.values\n        t -= t.mean(axis=1).reshape(-1, 1)\n        t /= t.std(axis=1).reshape(-1, 1)\n        df = pd.DataFrame(t, index = df.index, columns  = df.columns )\n    print(df.shape)\n    display(df.head(2))\n    dict_df[key_loc] = df","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:25:48.869435Z","iopub.execute_input":"2022-11-13T15:25:48.869886Z","iopub.status.idle":"2022-11-13T15:26:03.053898Z","shell.execute_reply.started":"2022-11-13T15:25:48.869854Z","shell.execute_reply":"2022-11-13T15:26:03.052729Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# '/kaggle/input/lgbm-oofpredictss/LGBMY_pred_oof_private_like.csv',\n# /kaggle/input/lgbm-oofpredictss/LGBMY_pred_submission_Kaggle_way.csv\n\ndict_df_submit = {}\nfor i,f in enumerate(list_f[:n_models]):\n    key_loc = list_names[i]\n    f2 = f.replace('oof_private_like','submission_Kaggle_way' )\n    df = pd.read_csv(f2,index_col = 0)\n    if rescale_predicts_to_mean0_std1:\n        t = df.values\n        t -= t.mean(axis=1).reshape(-1, 1)\n        t /= t.std(axis=1).reshape(-1, 1)\n        df = pd.DataFrame(t, index = df.index, columns  = df.columns )\n    print(df.shape)\n    display(df.head(2))\n    dict_df_submit[key_loc] = df","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:26:03.055181Z","iopub.execute_input":"2022-11-13T15:26:03.055502Z","iopub.status.idle":"2022-11-13T15:26:17.723149Z","shell.execute_reply.started":"2022-11-13T15:26:03.055473Z","shell.execute_reply":"2022-11-13T15:26:17.721953Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Correlation Scoring Function","metadata":{}},{"cell_type":"code","source":"import gc\nrescale_Y_to_mean0_std1 = True\n\ndef correlation_score(y_true, y_pred):\n    \"\"\"Scores the predictions according to the competition rules. \n    \n    It is assumed that the predictions are not constant.\n    \n    Returns the average of each sample's Pearson correlation coefficient\"\"\"\n    \n    # Input should be matrices - does not make sense for vectors \n    if  len(y_pred.shape)< 2: return -10 # Some result to inform for incorrect input\n    if  y_pred.shape[1] < 2: return -10 # Some result to inform for incorrect input\n\n    y2 = y_pred.copy()\n    y2 -= y2.mean(axis=1).reshape(-1, 1);    y2 /= y2.std(axis=1).reshape(-1, 1)    \n    if rescale_Y_to_mean0_std1:\n        y1 = y_true # Already rescaled \n    else:\n        y1 = y_true.copy(); \n        y1 -= y1.mean(axis=1).reshape(-1, 1);    y1 /= y1.std(axis=1).reshape(-1, 1) \n        \n    c = (y1*y2).mean().mean()# Correlation for rescaled matrices is just matrix product and average \n    \n    c = (y1*y2).mean().mean()# Correlation for rescaled matrices is just matrix product and average \n    \n    # Memory control:\n    if not rescale_Y_to_mean0_std1:\n        del y1\n    del y2\n    gc.collect()\n    \n    return c\n\n    # Slow way:\n    \n    if type(y_true) == pd.DataFrame: y_true = y_true.values\n    if type(y_pred) == pd.DataFrame: y_pred = y_pred.values\n    corrsum = 0\n    for i in range(len(y_true)):\n        corrsum += np.corrcoef(y_true[i], y_pred[i])[1, 0]\n    return corrsum / len(y_true)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:26:17.725185Z","iopub.execute_input":"2022-11-13T15:26:17.725543Z","iopub.status.idle":"2022-11-13T15:26:17.737244Z","shell.execute_reply.started":"2022-11-13T15:26:17.725511Z","shell.execute_reply":"2022-11-13T15:26:17.736067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Correlation scores before blend","metadata":{"execution":{"iopub.status.busy":"2022-11-11T17:25:31.52457Z","iopub.execute_input":"2022-11-11T17:25:31.525081Z","iopub.status.idle":"2022-11-11T17:25:31.530934Z","shell.execute_reply.started":"2022-11-11T17:25:31.525042Z","shell.execute_reply":"2022-11-11T17:25:31.529366Z"}}},{"cell_type":"code","source":"%%time\nfrom sklearn.metrics import mean_squared_error\nfrom sklearn.metrics import r2_score\n\ndf_stat = pd.DataFrame()\nIX = 0\nfor i,key_loc in enumerate(list( dict_df.keys())  ):\n    key_loc = list_names[i]\n    df = dict_df[key_loc]\n    print(key_loc, df.shape)\n    #display(df.head(2))\n    s = correlation_score(Y_true,df.values)\n    df_stat.loc[IX,'Model'] = key_loc\n    df_stat.loc[IX,'Corr'] = s\n    df_stat.loc[IX,'r2'] = r2_score(Y_true,df.values)\n    df_stat.loc[IX,'MSE'] = mean_squared_error(Y_true,df.values)\n    \n    m = mask_holdout; postfix = ' HO'\n    df_stat.loc[IX,'Corr'+ postfix] = correlation_score(Y_true[m],df[m].values)\n    df_stat.loc[IX,'r2'+ postfix] = r2_score(Y_true[m],df[m].values)\n    df_stat.loc[IX,'MSE'+ postfix] = mean_squared_error(Y_true[m],df[m].values)\n    m = mask_main;  postfix = ' Main'\n    df_stat.loc[IX,'Corr'+postfix] = correlation_score(Y_true[m],df[m].values)\n    df_stat.loc[IX,'r2'+postfix] = r2_score(Y_true[m],df[m].values)\n    df_stat.loc[IX,'MSE'+postfix] = mean_squared_error(Y_true[m],df[m].values)\n    \n    IX += 1\n    \ndisplay(df_stat)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:26:17.738808Z","iopub.execute_input":"2022-11-13T15:26:17.739435Z","iopub.status.idle":"2022-11-13T15:26:24.236963Z","shell.execute_reply.started":"2022-11-13T15:26:17.739399Z","shell.execute_reply":"2022-11-13T15:26:24.235666Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import seaborn as sn\nimport matplotlib.pyplot as plt\n\ncorr_matrixes = []\n\nfor idx, col in enumerate(dict_df['Ridge2719'].columns):\n    first_target = [dict_df[key][col] for key in dict_df.keys()]\n\n    corr_matrix = pd.DataFrame(first_target).T.corr()\n    corr_matrixes.append(corr_matrix)\n    \n","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:26:24.238600Z","iopub.execute_input":"2022-11-13T15:26:24.239513Z","iopub.status.idle":"2022-11-13T15:28:43.189090Z","shell.execute_reply.started":"2022-11-13T15:26:24.239474Z","shell.execute_reply":"2022-11-13T15:28:43.187741Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"corr_matrix_ = np.mean(corr_matrixes, axis=0)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:28:43.190955Z","iopub.execute_input":"2022-11-13T15:28:43.191336Z","iopub.status.idle":"2022-11-13T15:28:43.199211Z","shell.execute_reply.started":"2022-11-13T15:28:43.191300Z","shell.execute_reply":"2022-11-13T15:28:43.197918Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"f, ax = plt.subplots(7, figsize = (35, 100))\nfor idx, (corr_matrix , collname) in enumerate(zip(corr_matrixes, dict_df['Ridge2719'].columns)):\n    sn.heatmap(corr_matrix, annot=True, ax = ax[idx % 7])\n    if idx > 7:\n        break","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:28:43.201124Z","iopub.execute_input":"2022-11-13T15:28:43.201625Z","iopub.status.idle":"2022-11-13T15:28:48.447745Z","shell.execute_reply.started":"2022-11-13T15:28:43.201583Z","shell.execute_reply":"2022-11-13T15:28:48.446780Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Blend","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\n#sklearn.linear_model.LinearRegression\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.linear_model import Lasso, Ridge\n# reg = LinearRegression()\n#reg = Lasso(alpha = 0.01)\n\nlist_keys4blend = list( dict_df.keys())\nprint(list_keys4blend )\n\nmask_day = (df_meta['day']!=4).values\nmask4blend = (mask_day) & (~mask_main) # mask_main - excludes Holdout\nprint(mask4blend.sum())\nalpha_res = []\nparams = [10e-4, 10e-3,10e-2, 10e-1, 10e0, 10e1, 10e2]\nfor alpha in params:\n    df_blend = pd.DataFrame(np.zeros(Y_true.shape), columns = list_all_targets, index = df_Y.index)\n    df_submit_blend = pd.DataFrame(dict_df_submit['Ridge2719'])\n    df_tmp = pd.DataFrame()\n    df_tmp2 = pd.DataFrame()\n\n    regs = []\n    for i_col, col in enumerate(list_all_targets):\n        reg = Ridge(alpha = alpha)\n\n        for i,key_loc in enumerate( list_keys4blend  ):\n            df_tmp[key_loc] = dict_df[key_loc][col]\n\n        for i,key_loc in enumerate( list_keys4blend  ):\n            df_tmp2[key_loc] = dict_df_submit[key_loc][col]\n\n        m = mask4blend\n        m_ = m.copy()\n        m_.index = df_blend.index\n        reg.fit(df_tmp.values[m], Y_true[m,i_col]); \n\n        df_blend[col] = reg.predict(df_tmp.values)\n        df_submit_blend[col] = reg.predict(df_tmp2.values)\n        regs.append(reg)\n    alpha_res.append(correlation_score(Y_true[m_], df_blend[m_].values))\n        #print(i_col,  col ,reg.coef_,  r2_score(Y_true[:,i_col], df_blend[col] ),  mean_squared_error(Y_true[:,i_col], df_blend[col] ),  )\n\ndf_blend    ","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:28:48.449025Z","iopub.execute_input":"2022-11-13T15:28:48.449552Z","iopub.status.idle":"2022-11-13T15:29:05.098977Z","shell.execute_reply.started":"2022-11-13T15:28:48.449521Z","shell.execute_reply":"2022-11-13T15:29:05.097769Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.plot(np.log10(params), alpha_res)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:29:05.103577Z","iopub.execute_input":"2022-11-13T15:29:05.104705Z","iopub.status.idle":"2022-11-13T15:29:05.278786Z","shell.execute_reply.started":"2022-11-13T15:29:05.104635Z","shell.execute_reply":"2022-11-13T15:29:05.277625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\n# feature_params = ('monomes', 'divs', 'square', 'original', 'log')\n# features_ways = [feat_set for L in range(1, len(feature_params)+1) for feat_set in combinations(feature_params, L)]","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:29:05.280287Z","iopub.execute_input":"2022-11-13T15:29:05.280634Z","iopub.status.idle":"2022-11-13T15:29:05.286421Z","shell.execute_reply.started":"2022-11-13T15:29:05.280603Z","shell.execute_reply":"2022-11-13T15:29:05.285035Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# features_ways","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:29:05.287865Z","iopub.execute_input":"2022-11-13T15:29:05.288264Z","iopub.status.idle":"2022-11-13T15:29:05.297645Z","shell.execute_reply.started":"2022-11-13T15:29:05.288232Z","shell.execute_reply":"2022-11-13T15:29:05.296254Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tqdm","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:33:32.813931Z","iopub.execute_input":"2022-11-13T15:33:32.814374Z","iopub.status.idle":"2022-11-13T15:33:32.820178Z","shell.execute_reply.started":"2022-11-13T15:33:32.814341Z","shell.execute_reply":"2022-11-13T15:33:32.818818Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\n#sklearn.linear_model.LinearRegression\nfrom sklearn.linear_model import LinearRegression\nfrom sklearn.linear_model import Lasso, Ridge\nfrom sklearn.decomposition import PCA\n# reg = LinearRegression()\n#reg = Lasso(alpha = 0.01)\n\nlist_keys4blend = list( dict_df.keys())\nprint(list_keys4blend )\n\nmask_day = (df_meta['day']!=4).values\nmask4blend = (mask_day) & (~mask_main) # mask_main - excludes Holdout\nprint(mask4blend.sum())\n\nfrom itertools import combinations\n\neps = 10e-5\ndef minimax_norm(Y):\n    return (Y - Y.min() + eps) / (Y.max() - Y.min() + eps)\n\ndef monomes_(df):\n    new_df = pd.DataFrame()\n    for col1, col2 in combinations(df.columns, 2):\n        key_loc = col1 + '_mul_' + col2\n        new_df[key_loc] = minimax_norm(df[col1]) * minimax_norm(df[col2])\n    return new_df\n\ndef divs_(df):\n    new_df = pd.DataFrame()\n    for col1, col2 in combinations(df.columns, 2):\n        key_loc = col1 + '_div_' + col2\n        new_df[key_loc] = minimax_norm(df[col1]) / minimax_norm(df[col2])\n    return new_df\n\ndef squares_(df):\n    new_df = pd.DataFrame()\n    for col1 in df.columns:\n        key_loc = col1 + '_square'\n        new_df[key_loc] = minimax_norm(df[col1]) ** 2\n    return new_df\n\ndef log_(df):\n    new_df = pd.DataFrame()\n    for col1 in df.columns:\n        key_loc = col1 + '_log'\n        new_df[key_loc] = np.log10(minimax_norm(df[col1]))\n    return new_df\n\ndef features(df, monomes=False, divs=False, square=False, original=False, log=False):\n    concat_list = []\n    if original:\n        concat_list.append(df.copy())\n    if monomes:\n        concat_list.append(monomes_(df.copy()))\n    \n    if divs:\n        concat_list.append(divs_(df.copy()))\n        \n    if log:\n        concat_list.append(log_(df.copy()))\n        \n    if square:\n        concat_list.append(squares_(df.copy()))\n    return pd.concat(concat_list, axis=1)\nparams = [10e-4, 10e-3,10e-2]\n\nparams_alphas = {}\n# for param in tqdm.tqdm(features_ways):\n# alpha_res_features = []\n# param = ('monomes', 'divs', 'square', 'original', 'log')\nparam = ('monomes',)\n\n# for alpha in params:\nalpha = 10e-4\ndf_blend = pd.DataFrame(np.zeros(Y_true.shape), columns = list_all_targets, index = df_Y.index)\ndf_submit_blend = pd.DataFrame(dict_df_submit['Ridge2719'])\ndf_tmp = pd.DataFrame()\ndf_tmp2 = pd.DataFrame()\n\nN_comp = 3\n\nregs = []\nfor i_col, col in enumerate(list_all_targets):\n    reg = Ridge(alpha = alpha)\n\n\n    for i,key_loc in enumerate( list_keys4blend  ):\n        df_tmp[key_loc] = dict_df[key_loc][col]\n\n    for i,key_loc in enumerate( list_keys4blend  ):\n        df_tmp2[key_loc] = dict_df_submit[key_loc][col]\n\n    feat_params_set = {f:True for f in param}\n    df_tmp_features = features(df_tmp.copy(), **feat_params_set)\n    df_tmp_features2 = features(df_tmp2.copy(), **feat_params_set)\n    \n    pca_ = PCA()\n    \n    df_tmp_features_transformed = pca_.fit_transform(df_tmp_features)[:,:3]\n    df_tmp_features_transformed2 = pca_.transform(df_tmp_features2)[:,:3]\n    \n\n    m = mask4blend\n    m_ = m.copy()\n    m_.index = df_blend.index\n    reg.fit(df_tmp_features_transformed[m], Y_true[m,i_col]); \n\n    df_blend[col] = reg.predict(df_tmp_features_transformed)\n    df_submit_blend[col] = reg.predict(df_tmp_features_transformed2)\n    regs.append(reg)\n#     alpha_res_features.append(correlation_score(Y_true[m_], df_blend[m_].values))\n            #print(i_col,  col ,reg.coef_,  r2_score(Y_true[:,i_col], df_blend[col] ),  mean_squared_error(Y_true[:,i_col], df_blend[col] ),  )\n#     params_alphas[param] = alpha_res_features\ndf_blend    ","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:43:42.981756Z","iopub.execute_input":"2022-11-13T15:43:42.982347Z","iopub.status.idle":"2022-11-13T15:44:08.115517Z","shell.execute_reply.started":"2022-11-13T15:43:42.982302Z","shell.execute_reply":"2022-11-13T15:44:08.114231Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#params_alphas\n\n# {('monomes',): [0.8992349328387549, 0.8991325073944758, 0.8989685931936595],\n#  ('divs',): [0.8511434859102648, 0.851140361161328, 0.8510502391643293],\n#  ('square',): [0.8989326722032798, 0.898930465550808, 0.8989076361062517],\n#  ('original',): [0.900475300353763, 0.900475272237858, 0.9004748900559072],\n#  ('log',): [0.895778883982035, 0.8957788020469353, 0.895777238679036],\n#  ('monomes', 'divs'): [0.900181404392453,\n#   0.9000754307901659,\n#   0.8999288759327547],\n#  ('monomes', 'square'): [0.8996768893679965,\n#   0.8994821786319889,\n#   0.8990991686368215],\n#  ('monomes', 'original'): [0.9012371997706349,\n#   0.9011350161974795,\n#   0.900962305547587],\n#  ('monomes', 'log'): [0.9010666540540238,\n#   0.9009700426096798,\n#   0.9008254658091392],\n#  ('divs', 'square'): [0.8999815417893321,\n#   0.8999765669289035,\n#   0.899928566636148],\n#  ('divs', 'original'): [0.9009613954646548,\n#   0.9009604404388133,\n#   0.9009438110769811],\n#  ('divs', 'log'): [0.8970820625454662, 0.8970700540119998, 0.896944496905334],\n#  ('square', 'original'): [0.9010347456740196,\n#   0.9010241240740097,\n#   0.9009618366640293],\n#  ('square', 'log'): [0.9008429440160841,\n#   0.9008388927682688,\n#   0.900804589318792],\n#  ('original', 'log'): [0.9009305233896323,\n#   0.9009294539846056,\n#   0.9009119508441772],\n#  ('monomes', 'divs', 'square'): [0.9005638876685786,\n#   0.9003460126533039,\n#   0.9000440795009648],\n#  ('monomes', 'divs', 'original'): [0.901540186313101,\n#   0.9014225458261546,\n#   0.9012509187571013],\n#  ('monomes', 'divs', 'log'): [0.9013599319667197,\n#   0.9012535753155696,\n#   0.9010945048023961],\n#  ('monomes', 'square', 'original'): [0.9015191205246272,\n#   0.901363184338524,\n#   0.9010886345675359],\n#  ('monomes', 'square', 'log'): [0.9013740985639207,\n#   0.9012128554084,\n#   0.900937088637915],\n#  ('monomes', 'original', 'log'): [0.9014802096056584,\n#   0.9013698228742298,\n#   0.9011738247787996],\n#  ('divs', 'square', 'original'): [0.9013851640631976,\n#   0.9013626366111093,\n#   0.9012708112130629],\n#  ('divs', 'square', 'log'): [0.9011858901927532,\n#   0.9011712392189635,\n#   0.9010883060488573],\n#  ('divs', 'original', 'log'): [0.9012445832749181,\n#   0.9012322177263,\n#   0.9011723898360181],\n#  ('square', 'original', 'log'): [0.9013336030232182,\n#   0.9012918462058299,\n#   0.9011751619129729],\n#  ('monomes', 'divs', 'square', 'original'): [0.9018101352845037,\n#   0.9016107387224773,\n#   0.9013501140187533],\n#  ('monomes', 'divs', 'square', 'log'): [0.9016348064426649,\n#   0.9014272843193619,\n#   0.9011670327830821],\n#  ('monomes', 'divs', 'original', 'log'): [0.9017372851882196,\n#   0.9015971582261055,\n#   0.9013853375991459],\n#  ('monomes', 'square', 'original', 'log'): [0.901783917947208,\n#   0.901605754228032,\n#   0.9012944661802706],\n#  ('divs', 'square', 'original', 'log'): [0.9016265196476828,\n#   0.9015685415550333,\n#   0.9014104508911083],\n#  ('monomes', 'divs', 'square', 'original', 'log'): [0.9019923944832573,\n#   0.9017715870379516,\n#   0.9014765286967946]}","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:08:48.061741Z","iopub.execute_input":"2022-11-12T23:08:48.062582Z","iopub.status.idle":"2022-11-12T23:08:48.071895Z","shell.execute_reply.started":"2022-11-12T23:08:48.062527Z","shell.execute_reply":"2022-11-12T23:08:48.070577Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# pd.Series(params_alphas.values(), index=[\"_\".join(key) for key in params_alphas]).apply(lambda x: x[0]).sort_values(ascending=False)\n# monomes_divs_square_original_log    0.901992\n# monomes_divs_square_original        0.901810\n# monomes_square_original_log         0.901784\n# monomes_divs_original_log           0.901737\n# monomes_divs_square_log             0.901635\n# divs_square_original_log            0.901627\n# monomes_divs_original               0.901540\n# monomes_square_original             0.901519\n# monomes_original_log                0.901480\n# divs_square_original                0.901385\n# monomes_square_log                  0.901374\n# monomes_divs_log                    0.901360\n# square_original_log                 0.901334\n# divs_original_log                   0.901245\n# monomes_original                    0.901237\n# divs_square_log                     0.901186\n# monomes_log                         0.901067\n# square_original                     0.901035\n# divs_original                       0.900961\n# original_log                        0.900931\n# square_log                          0.900843\n# monomes_divs_square                 0.900564\n# original                            0.900475\n# monomes_divs                        0.900181\n# divs_square                         0.899982\n# monomes_square                      0.899677\n# monomes                             0.899235\n# square                              0.898933\n# divs_log                            0.897082\n# log                                 0.895779\n# divs                                0.851143","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:08:48.073529Z","iopub.execute_input":"2022-11-12T23:08:48.074665Z","iopub.status.idle":"2022-11-12T23:08:48.088224Z","shell.execute_reply.started":"2022-11-12T23:08:48.074613Z","shell.execute_reply":"2022-11-12T23:08:48.087139Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_blend_just_average = pd.DataFrame(np.zeros(Y_true.shape), columns = list_all_targets, index = df_Y.index)\nfor i,key_loc in enumerate( list_keys4blend  ):\n    df_blend_just_average += dict_df[key_loc].values\ndf_blend_just_average /= (i+1)","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:45:24.243282Z","iopub.execute_input":"2022-11-13T15:45:24.243762Z","iopub.status.idle":"2022-11-13T15:45:24.388354Z","shell.execute_reply.started":"2022-11-13T15:45:24.243723Z","shell.execute_reply":"2022-11-13T15:45:24.386607Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ndf_stat_blend = pd.DataFrame()\nIX = 0\nfor i, key_loc in enumerate([-2, -1] + list( dict_df.keys())  ):\n    if key_loc == -2:\n        df_loc = df_blend_just_average\n        nm_loc = 'Blend Average'\n    elif key_loc == -1:\n        df_loc = df_blend\n        nm_loc = 'Blend'\n    else:\n        #key_loc = list_names[i]\n        df_loc = dict_df[key_loc]\n        nm_loc = key_loc\n        \n    df_stat_blend.loc[IX,'Model'] = nm_loc\n    \n    \n    print(key_loc, nm_loc, df_loc.shape)\n    \n    m = (~mask4blend); postfix = ' Tst'\n    df_stat_blend.loc[IX,'Corr'+ postfix] = correlation_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'r2'+ postfix] = r2_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'MSE'+ postfix] = mean_squared_error(Y_true[m],df_loc.values[m])\n    \n    m = (mask4blend); postfix = ' Tr'\n    df_stat_blend.loc[IX,'Corr'+ postfix] = correlation_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'r2'+ postfix] = r2_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'MSE'+ postfix] = mean_squared_error(Y_true[m],df_loc.values[m])\n    \n    df_stat_blend.loc[IX,'Corr'] = correlation_score(Y_true,df_loc.values)\n    df_stat_blend.loc[IX,'r2'] = r2_score(Y_true,df_loc.values)\n    df_stat_blend.loc[IX,'MSE'] = mean_squared_error(Y_true,df_loc.values)\n\n    \n    m = mask_holdout; postfix = ' HO'\n    df_stat_blend.loc[IX,'Corr'+ postfix] = correlation_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'r2'+ postfix] = r2_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'MSE'+ postfix] = mean_squared_error(Y_true[m],df_loc.values[m])\n    m = mask_main;  postfix = ' Main'\n    df_stat_blend.loc[IX,'Corr'+postfix] = correlation_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'r2'+postfix] = r2_score(Y_true[m],df_loc.values[m])\n    df_stat_blend.loc[IX,'MSE'+postfix] = mean_squared_error(Y_true[m],df_loc.values[m])\n    \n    IX += 1\ndf_stat_blend    ","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:45:26.214638Z","iopub.execute_input":"2022-11-13T15:45:26.215859Z","iopub.status.idle":"2022-11-13T15:45:42.317365Z","shell.execute_reply.started":"2022-11-13T15:45:26.215804Z","shell.execute_reply":"2022-11-13T15:45:42.316067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# %%time\n# df_blend_just_average_submit = pd.DataFrame(np.zeros( (48663,140)) , columns = list_all_targets, )\n# for i,(key_loc, coef) in enumerate( zip(list_keys4blend , reg.coef_.tolist() )):\n#     df_blend_just_average_submit += dict_df_submit[key_loc].values * coef\n# df_blend_just_average_submit /= (i+1)\n# df_blend_just_average_submit","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:45:42.319145Z","iopub.execute_input":"2022-11-13T15:45:42.319509Z","iopub.status.idle":"2022-11-13T15:45:42.448075Z","shell.execute_reply.started":"2022-11-13T15:45:42.319478Z","shell.execute_reply":"2022-11-13T15:45:42.447190Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ndf_blend_just_average_submit = pd.DataFrame(np.zeros( (48663,140)) , columns = list_all_targets, )\nfor i, key_loc in enumerate(list_keys4blend):\n    df_blend_just_average_submit += 1 / dict_df_submit[key_loc].values ","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:49:40.240342Z","iopub.execute_input":"2022-11-13T15:49:40.240776Z","iopub.status.idle":"2022-11-13T15:49:40.406482Z","shell.execute_reply.started":"2022-11-13T15:49:40.240744Z","shell.execute_reply":"2022-11-13T15:49:40.404916Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_blend_just_average_submit = 1 / (df_blend_just_average_submit * 1/len(list_keys4blend))","metadata":{"execution":{"iopub.status.busy":"2022-11-13T15:50:38.913118Z","iopub.execute_input":"2022-11-13T15:50:38.913931Z","iopub.status.idle":"2022-11-13T15:50:38.973283Z","shell.execute_reply.started":"2022-11-13T15:50:38.913865Z","shell.execute_reply":"2022-11-13T15:50:38.971925Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\ndf_blend_just_average_submit.to_csv('submit_hormmean4models.csv')","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:09:08.703212Z","iopub.execute_input":"2022-11-12T23:09:08.703534Z","iopub.status.idle":"2022-11-12T23:09:18.644062Z","shell.execute_reply.started":"2022-11-12T23:09:08.703504Z","shell.execute_reply":"2022-11-12T23:09:18.642872Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"len(df_blend_just_average_submit.values.flatten())","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:09:18.645765Z","iopub.execute_input":"2022-11-12T23:09:18.646955Z","iopub.status.idle":"2022-11-12T23:09:18.679380Z","shell.execute_reply.started":"2022-11-12T23:09:18.646912Z","shell.execute_reply":"2022-11-12T23:09:18.678232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_ = pd.read_csv(\"/kaggle/input/mlp-ver6-outputs/submission_MLP_ver6_shev.csv\", index_col = 0)","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:09:18.680585Z","iopub.execute_input":"2022-11-12T23:09:18.680896Z","iopub.status.idle":"2022-11-12T23:10:30.894489Z","shell.execute_reply.started":"2022-11-12T23:09:18.680867Z","shell.execute_reply":"2022-11-12T23:10:30.893020Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_['target'].iloc[:6_812_820] = df_blend_just_average_submit.values.flatten()","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:10:30.899496Z","iopub.execute_input":"2022-11-12T23:10:30.899846Z","iopub.status.idle":"2022-11-12T23:10:30.945102Z","shell.execute_reply.started":"2022-11-12T23:10:30.899814Z","shell.execute_reply":"2022-11-12T23:10:30.943997Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_.to_csv('submission_'+'_blend_' +'.csv')","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:10:30.946582Z","iopub.execute_input":"2022-11-12T23:10:30.947084Z","iopub.status.idle":"2022-11-12T23:12:44.379441Z","shell.execute_reply.started":"2022-11-12T23:10:30.947029Z","shell.execute_reply":"2022-11-12T23:12:44.378224Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print('%.1f seconds passed total '%(time.time()-t0start) )","metadata":{"execution":{"iopub.status.busy":"2022-11-12T23:12:44.380810Z","iopub.execute_input":"2022-11-12T23:12:44.381186Z","iopub.status.idle":"2022-11-12T23:12:44.386718Z","shell.execute_reply.started":"2022-11-12T23:12:44.381139Z","shell.execute_reply":"2022-11-12T23:12:44.385624Z"},"trusted":true},"execution_count":null,"outputs":[]}]}