{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Fusion Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data Example" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
data_image_1data_image_2agegendersubset
0[15.063944284167968, 7.682054964381019, 59.023...[0.6938266507355754, 0.33012221842269274, 0.74...63FTRAIN_VALIDATE
1[3.434402959993343, 3.538154489514688, 23.9200...[0.5269370477097022, 0.5903021383156715, 0.517...45FTRAIN_VALIDATE
2[2.81218605232154, 0.12835273944489112, 31.237...[0.04859035434840109, 0.12056269747039472, 0.8...34MTRAIN_VALIDATE
3[15.861637079166698, 7.165088327887514, 27.786...[0.5628110412578916, 0.5864291501407077, 0.679...40FTRAIN_VALIDATE
4[6.950717959847797, 15.698030827427083, 16.615...[0.74255727915812, 0.5960530457020161, 0.25688...55MTRAIN_VALIDATE
..................
495[70.61214057454309, 1.8685573666984343, 59.460...[0.2039033864463896, 0.3145371848607098, 0.046...71MTEST
496[60.37547452707624, 37.95228651809741, 53.5548...[0.18674565141973776, 0.6019158128829427, 0.18...64FTEST
497[32.1526225126884, 33.922010372801886, 24.8319...[0.10718371637388646, 0.4830662921155866, 0.69...40FTEST
498[45.90474661033698, 66.17473294569139, 40.4195...[0.002235769261409337, 0.6293545349958005, 0.1...77FTEST
499[18.881702811342475, 4.597565571065492, 21.388...[0.9938089200338339, 0.14282083382245703, 0.17...56FTEST
\n", "

500 rows × 5 columns

\n", "
" ], "text/plain": [ " data_image_1 \\\n", "0 [15.063944284167968, 7.682054964381019, 59.023... \n", "1 [3.434402959993343, 3.538154489514688, 23.9200... \n", "2 [2.81218605232154, 0.12835273944489112, 31.237... \n", "3 [15.861637079166698, 7.165088327887514, 27.786... \n", "4 [6.950717959847797, 15.698030827427083, 16.615... \n", ".. ... \n", "495 [70.61214057454309, 1.8685573666984343, 59.460... \n", "496 [60.37547452707624, 37.95228651809741, 53.5548... \n", "497 [32.1526225126884, 33.922010372801886, 24.8319... \n", "498 [45.90474661033698, 66.17473294569139, 40.4195... \n", "499 [18.881702811342475, 4.597565571065492, 21.388... \n", "\n", " data_image_2 age gender \\\n", "0 [0.6938266507355754, 0.33012221842269274, 0.74... 63 F \n", "1 [0.5269370477097022, 0.5903021383156715, 0.517... 45 F \n", "2 [0.04859035434840109, 0.12056269747039472, 0.8... 34 M \n", "3 [0.5628110412578916, 0.5864291501407077, 0.679... 40 F \n", "4 [0.74255727915812, 0.5960530457020161, 0.25688... 55 M \n", ".. ... ... ... \n", "495 [0.2039033864463896, 0.3145371848607098, 0.046... 71 M \n", "496 [0.18674565141973776, 0.6019158128829427, 0.18... 64 F \n", "497 [0.10718371637388646, 0.4830662921155866, 0.69... 40 F \n", "498 [0.002235769261409337, 0.6293545349958005, 0.1... 77 F \n", "499 [0.9938089200338339, 0.14282083382245703, 0.17... 56 F \n", "\n", " subset \n", "0 TRAIN_VALIDATE \n", "1 TRAIN_VALIDATE \n", "2 TRAIN_VALIDATE \n", "3 TRAIN_VALIDATE \n", "4 TRAIN_VALIDATE \n", ".. ... \n", "495 TEST \n", "496 TEST \n", "497 TEST \n", "498 TEST \n", "499 TEST \n", "\n", "[500 rows x 5 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from models import ModalityPredictorPCA, MODELTYPE\n", "from generate_random_input import generate_fusion_image_input\n", "\n", "\n", "df = generate_fusion_image_input()\n", "df[\"subset\"] = [\"TRAIN_VALIDATE\"]*int(df.shape[0]/2) + [\"TEST\"]*int(df.shape[0]/2)\n", "\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false }, "pycharm": { "name": "#%%\n" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "text/html": [ "
StackingRegressor(estimators=[('regressor_data_image_1',\n",
       "                               Pipeline(steps=[('preprocessor',\n",
       "                                                ColumnTransformer(transformers=[('dimensionality_reduction',\n",
       "                                                                                 Pipeline(steps=[('flatten',\n",
       "                                                                                                  FlattenNestedArray()),\n",
       "                                                                                                 ('dimensionality_reduction',\n",
       "                                                                                                  PCA(n_components=2,\n",
       "                                                                                                      svd_solver='full')),\n",
       "                                                                                                 ('scaler_pre',\n",
       "                                                                                                  StandardScaler())]),\n",
       "                                                                                 'data_image_1'),\n",
       "                                                                                ('gender_and_site_encoded',\n",
       "                                                                                 OneHotEnc...\n",
       "                                                ColumnTransformer(transformers=[('dimensionality_reduction',\n",
       "                                                                                 Pipeline(steps=[('flatten',\n",
       "                                                                                                  FlattenNestedArray()),\n",
       "                                                                                                 ('dimensionality_reduction',\n",
       "                                                                                                  PCA(n_components=2,\n",
       "                                                                                                      svd_solver='full')),\n",
       "                                                                                                 ('scaler_pre',\n",
       "                                                                                                  StandardScaler())]),\n",
       "                                                                                 'data_image_2'),\n",
       "                                                                                ('gender_and_site_encoded',\n",
       "                                                                                 OneHotEncoder(handle_unknown='ignore'),\n",
       "                                                                                 ['gender'])])),\n",
       "                                               ('regressor', EMRVR())]))],\n",
       "                  final_estimator=LinearRegression())
Please rerun this cell to show the HTML repr or trust the notebook.
" ], "text/plain": [ "StackingRegressor(estimators=[('regressor_data_image_1',\n", " Pipeline(steps=[('preprocessor',\n", " ColumnTransformer(transformers=[('dimensionality_reduction',\n", " Pipeline(steps=[('flatten',\n", " FlattenNestedArray()),\n", " ('dimensionality_reduction',\n", " PCA(n_components=2,\n", " svd_solver='full')),\n", " ('scaler_pre',\n", " StandardScaler())]),\n", " 'data_image_1'),\n", " ('gender_and_site_encoded',\n", " OneHotEnc...\n", " ColumnTransformer(transformers=[('dimensionality_reduction',\n", " Pipeline(steps=[('flatten',\n", " FlattenNestedArray()),\n", " ('dimensionality_reduction',\n", " PCA(n_components=2,\n", " svd_solver='full')),\n", " ('scaler_pre',\n", " StandardScaler())]),\n", " 'data_image_2'),\n", " ('gender_and_site_encoded',\n", " OneHotEncoder(handle_unknown='ignore'),\n", " ['gender'])])),\n", " ('regressor', EMRVR())]))],\n", " final_estimator=LinearRegression())" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn import set_config\n", "set_config(display=\"diagram\")\n", "\n", "number_components = 2\n", "predictor = ModalityPredictorPCA(df, [\"data_image_1\", \"data_image_2\"], MODELTYPE.FUSION, 5)\n", "\n", "model = predictor.get_fusion_at_model_level(number_components)\n", "model" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.12" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }