{"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":"# McNemar's Test\n\nMcNemar’s test can be used when we need to compare the performance of two classifiers when we have matched pairs. The test works well if there are many different predictions between the two classifiers A and B.","metadata":{}},{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\n\nfrom sklearn.model_selection import StratifiedKFold\n\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.compose import ColumnTransformer\nfrom sklearn.impute import SimpleImputer\nfrom sklearn.preprocessing import StandardScaler, OneHotEncoder, FunctionTransformer\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.utils import estimator_html_repr\n\nfrom tqdm.notebook import tqdm\nfrom IPython.core.display import HTML","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-07-28T05:37:11.961994Z","iopub.execute_input":"2022-07-28T05:37:11.962427Z","iopub.status.idle":"2022-07-28T05:37:13.006443Z","shell.execute_reply.started":"2022-07-28T05:37:11.962343Z","shell.execute_reply":"2022-07-28T05:37:13.004967Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Loading the Data","metadata":{}},{"cell_type":"code","source":"df = pd.read_csv('../input/spaceship-titanic/train.csv')\nprint(df.shape)\ndf.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.012243Z","iopub.execute_input":"2022-07-28T05:37:13.013352Z","iopub.status.idle":"2022-07-28T05:37:13.136509Z","shell.execute_reply.started":"2022-07-28T05:37:13.013302Z","shell.execute_reply":"2022-07-28T05:37:13.135393Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_test = pd.read_csv('../input/spaceship-titanic/test.csv')\n\nX = df.drop('Transported', axis=1)\ny = df['Transported'].astype(int)","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.138380Z","iopub.execute_input":"2022-07-28T05:37:13.139154Z","iopub.status.idle":"2022-07-28T05:37:13.249236Z","shell.execute_reply.started":"2022-07-28T05:37:13.139109Z","shell.execute_reply":"2022-07-28T05:37:13.248090Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Building the Model","metadata":{}},{"cell_type":"code","source":"# Some helper functions for feature extraction\n\ndef get_deck_and_side(df):\n    return np.array([[x.split('/')[0], x.split('/')[2]] for x in np.ravel(df)])\n\ndef get_2d_to_1d(df):\n    return df.reshape(-1)\n\n\n# Preprocessing Components\ncomp_1_fn= lambda :Pipeline([\n    ('imputer', SimpleImputer(strategy='median')), ('normalizer', StandardScaler())\n])\ncomp_2_fn = lambda: Pipeline([\n    ('imputer', SimpleImputer(strategy='most_frequent')), \n    ('normalizer', OneHotEncoder(sparse=False, drop='if_binary'))\n])\ncomp_3_fn = lambda: Pipeline([\n    ('imputer', SimpleImputer(strategy='constant', fill_value='missing')), \n    ('normalizer', OneHotEncoder())\n])\ncomp_4_fn = lambda: Pipeline([\n    ('imputer', SimpleImputer(strategy='constant', fill_value='//')), \n    ('function', FunctionTransformer(get_deck_and_side)),\n    ('normalizer', OneHotEncoder())\n])\ncomp_5_fn = lambda: Pipeline([\n    ('imputer', SimpleImputer(strategy='constant', fill_value='')),\n    (\"reshape\", FunctionTransformer(get_2d_to_1d)),\n    ('normalizer', TfidfVectorizer(analyzer='char', ngram_range=(2, 3)))\n])\n\n# Preprocessors\npreprocessor_1_fn = lambda: ColumnTransformer([\n    (\"scaler\", comp_1_fn(), ['Age', 'RoomService', 'FoodCourt', 'ShoppingMall', 'Spa', 'VRDeck']),\n    (\"bin_encoder\", comp_2_fn(), ['CryoSleep', 'VIP']),\n    ('ohe_encoder', comp_3_fn(), ['HomePlanet', 'Destination']),\n])\npreprocessor_2_fn = lambda: ColumnTransformer([\n    (\"scaler\", comp_1_fn(), ['Age', 'RoomService', 'FoodCourt', 'ShoppingMall', 'Spa', 'VRDeck']),\n    (\"bin_encoder\", comp_2_fn(), ['CryoSleep', 'VIP']),\n    ('ohe_encoder', comp_3_fn(), ['HomePlanet', 'Destination']),\n    ('deck', comp_4_fn(), ['Cabin']),\n    ('side', comp_5_fn(), ['Name']),\n])\n\n# Learning Algorithm\nestimator_fn = lambda: LogisticRegression(random_state=0, max_iter=100_000)\n\n# Models\nmodel_1_fn = lambda: Pipeline([('preprocessor', preprocessor_1_fn()), ('estimator', estimator_fn())])\nmodel_2_fn = lambda: Pipeline([('preprocessor', preprocessor_2_fn()), ('estimator', estimator_fn())])","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.256228Z","iopub.execute_input":"2022-07-28T05:37:13.259014Z","iopub.status.idle":"2022-07-28T05:37:13.283825Z","shell.execute_reply.started":"2022-07-28T05:37:13.258969Z","shell.execute_reply":"2022-07-28T05:37:13.282742Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"HTML(estimator_html_repr(model_1_fn()))","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.289224Z","iopub.execute_input":"2022-07-28T05:37:13.292028Z","iopub.status.idle":"2022-07-28T05:37:13.367399Z","shell.execute_reply.started":"2022-07-28T05:37:13.291964Z","shell.execute_reply":"2022-07-28T05:37:13.366384Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"HTML(estimator_html_repr(model_2_fn()))","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.368602Z","iopub.execute_input":"2022-07-28T05:37:13.368930Z","iopub.status.idle":"2022-07-28T05:37:13.510467Z","shell.execute_reply.started":"2022-07-28T05:37:13.368901Z","shell.execute_reply":"2022-07-28T05:37:13.509361Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Training Loop","metadata":{}},{"cell_type":"code","source":"def train_skf(model_fn):\n    oof_preds = y.copy()\n    scores = []\n    preds = []\n\n    for fold, (train_index, valid_index) in tqdm(enumerate(skf.split(X, y))):\n        X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]\n        y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]\n\n        model = model_fn().fit(X_train, y_train)\n        preds.append(model.predict_proba(X_test)[:, 1])\n        oof_preds.iloc[valid_index] = model.predict_proba(X_valid)[:, 1]\n        scores.append(model.score(X_valid, y_valid))\n        \n    preds = np.array(preds).mean(axis=0)\n    \n    return oof_preds, scores, preds","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.512027Z","iopub.execute_input":"2022-07-28T05:37:13.512642Z","iopub.status.idle":"2022-07-28T05:37:13.520867Z","shell.execute_reply.started":"2022-07-28T05:37:13.512609Z","shell.execute_reply":"2022-07-28T05:37:13.520088Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=True)\noof_1, scores_1, preds_1 = train_skf(model_1_fn)\nprint('Model 1 Score:', np.mean(preds_1))\noof_2, scores_2, preds_2 = train_skf(model_2_fn)\nprint('Model 2 Score:', np.mean(preds_2))","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:13.521863Z","iopub.execute_input":"2022-07-28T05:37:13.522815Z","iopub.status.idle":"2022-07-28T05:37:19.009135Z","shell.execute_reply.started":"2022-07-28T05:37:13.522785Z","shell.execute_reply":"2022-07-28T05:37:19.007886Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Comparing Using McNemar's Test\n\nMcNemar’s test is designed to focus mainly on the differences that there are between two classifiers, therefore on the cases that they predicted in a different way. So the first thing we need to do is to go and calculate the following values.\n\n![image.png](attachment:d5129f80-8de1-4cde-bede-4cb7f789b327.png)\n\n* n00: number of items misclassified by both A and B\n* n01: number of items misclassified by A but not by B\n* n10: number of items misclassified by B but not by A\n* n11 : number of items classified correctly by both A and B\n\nNull Hypotesis : n01 = n10, ie A and B have the same error rate.\n\nMcNemar’s test is basically a form of paired chi-square test, so next we need to compute X² value using the following formula.\n\n![image.png](attachment:2117e50c-ae15-44f6-acf6-421c963af5a2.png)\n\nWe can reject the null hypotesis if X² >X²(p) (in a two tailed test).\nwhere p = level of significance","metadata":{},"attachments":{"d5129f80-8de1-4cde-bede-4cb7f789b327.png":{"image/png":"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"},"2117e50c-ae15-44f6-acf6-421c963af5a2.png":{"image/png":"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AkSACBCBrBCww2+0rIhLeYkAESACREApBEjBKaWnSU4iQASIgMIIkIJTWIeTuESACBABpRAgBaeUniY5iQARIAIKI0AKTmEdTuISASJABJRCgBScUnqa5CQCRIAIKIwAKTiFdTiJSwSIABFQCgFScErpaZKTCBABIqAwAqTgFNbhJC4RIAJEQCkESMEppadJTiJABIiAwgiQglNYh5O4RIAIEAGlECAFp5SeJjmJABEgAgojQApOYR1O4hIBIkAElEKAFJxSeprkJAJEgAgojAApOIV1OIlLBIgAEVAKAVJwSulpkpMIEAEioDACpOAU1uEkLhEgAkRAKQRIwSmlp0lOIkAEiIDCCJCCU1iHk7hEgAgQAaUQIAWnlJ4mOYkAESACCiNACk5hHU7iEgEiQASUQoAUnFJ6muQkAkSACCiMACk4hXU4iUsEiAARUAoBUnBK6WmSkwgQASKgMAKk4BTW4SQuESACREApBEjBKaWnSU4iQASIgMIIkIJTWIeTuESACBABpRAgBaeUniY5iQARIAIKI0AKTmEdTuISASJABJRCgBScUnqa5CQCRIAIKIzA/wGYbZ/HZeYgdgAAAABJRU5ErkJggg=="}}},{"cell_type":"code","source":"Y = pd.DataFrame(y.copy())\nY['model_1'] = np.where(oof_1 > 0.5, 1, 0)\nY['model_2'] = np.where(oof_2 > 0.5, 1, 0)\nY.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:19.011070Z","iopub.execute_input":"2022-07-28T05:37:19.011507Z","iopub.status.idle":"2022-07-28T05:37:19.027393Z","shell.execute_reply.started":"2022-07-28T05:37:19.011451Z","shell.execute_reply":"2022-07-28T05:37:19.026599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from statsmodels.stats.contingency_tables import mcnemar\n\ndef get_contingency_table(Y, ground_truth, model_1, model_2):\n    contingency_table = [[0, 0], [0, 0]]\n    Y_ = Y.copy()\n    model_1_correct = Y_.apply(lambda row: int(row[ground_truth] == row[model_1]), axis=1)\n    model_2_correct = Y_.apply(lambda row: int(row[ground_truth] == row[model_2]), axis=1)\n    contingency_table[0][0] = Y_.apply(\n        lambda row: int(row[model_1] == 0 and row[model_2] == 0), axis=1\n    ).sum()\n    contingency_table[0][1] = Y_.apply(\n        lambda row: int(row[model_1] == 0 and row[model_2] == 1), axis=1\n    ).sum()\n    contingency_table[1][0] = Y_.apply(\n        lambda row: int(row[model_1] == 1 and row[model_2] == 0), axis=1\n    ).sum()\n    contingency_table[1][1] = Y_.apply(\n        lambda row: int(row[model_1] == 1 and row[model_2] == 1), axis=1\n    ).sum()\n    return np.array(contingency_table)\n\ndef mcnemar_test(contigency_table, significance=0.05):\n    print(\"Contigency Table\")\n    print(contigency_table)\n    test = mcnemar(contigency_table, exact=False, correction=True)\n    print(\"P value:\", test.pvalue)\n    if test.pvalue > significance:\n        print(\"Reject Null Hypotheis\")\n        print(\"Conclusion: Model have statistically different error rate\")\n    else:\n        print(\"Accept Null Hypotheis\")\n        print(\"Conclusion: Model do not have statistically different error rate\")\n\nmcnemar_test(get_contingency_table(Y, 'Transported', 'model_1', 'model_2'))","metadata":{"execution":{"iopub.status.busy":"2022-07-28T05:37:19.030119Z","iopub.execute_input":"2022-07-28T05:37:19.031025Z","iopub.status.idle":"2022-07-28T05:37:20.013105Z","shell.execute_reply.started":"2022-07-28T05:37:19.030981Z","shell.execute_reply":"2022-07-28T05:37:20.011987Z"},"trusted":true},"execution_count":null,"outputs":[]}]}