{"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":"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","_kg_hide-input":true,"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:30:13.841838Z","iopub.execute_input":"2022-08-05T19:30:13.842800Z","iopub.status.idle":"2022-08-05T19:30:13.856824Z","shell.execute_reply.started":"2022-08-05T19:30:13.842685Z","shell.execute_reply":"2022-08-05T19:30:13.855948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTLrQMbBUz_f7WnzZh5xwPi62NT_7nIOV8Oq6qoN8EazQrGTOnleLQoWUWGYLjNK5fA-xg&usqp=CAU)github.com","metadata":{}},{"cell_type":"markdown","source":"#All script by Gaurav Dutta https://www.kaggle.com/code/gauravduttakiit/failure-prediction-lazypredict\n\n#Vote Gaurav's Prediction. Not Lazy since he has more than 2000 Kaggle Notebooks!","metadata":{}},{"cell_type":"markdown","source":"#ImportError: cannot import name 'TableFormatter' from 'pandas.io.formats.format' (/opt/conda/lib/python3.7/site-packages/pandas/io/formats/format.py)\n\n#Train comes first than LazyPredict! To avoid the error above","metadata":{}},{"cell_type":"code","source":"train=pd.read_csv('../input/tabular-playground-series-aug-2022/train.csv')\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:30:19.485161Z","iopub.execute_input":"2022-08-05T19:30:19.485624Z","iopub.status.idle":"2022-08-05T19:30:19.605390Z","shell.execute_reply.started":"2022-08-05T19:30:19.485584Z","shell.execute_reply":"2022-08-05T19:30:19.603956Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install lazypredict","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:30:25.203222Z","iopub.execute_input":"2022-08-05T19:30:25.203660Z","iopub.status.idle":"2022-08-05T19:30:36.012058Z","shell.execute_reply.started":"2022-08-05T19:30:25.203623Z","shell.execute_reply":"2022-08-05T19:30:36.010532Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=pd.read_csv('../input/tabular-playground-series-aug-2022/test.csv')\ntest.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:30:45.844657Z","iopub.execute_input":"2022-08-05T19:30:45.845141Z","iopub.status.idle":"2022-08-05T19:30:45.943380Z","shell.execute_reply.started":"2022-08-05T19:30:45.845100Z","shell.execute_reply":"2022-08-05T19:30:45.942095Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Drop ID ??!","metadata":{}},{"cell_type":"code","source":"train=train.drop(['id'],axis=1)\ntrain.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:30:51.039303Z","iopub.execute_input":"2022-08-05T19:30:51.039719Z","iopub.status.idle":"2022-08-05T19:30:51.074017Z","shell.execute_reply.started":"2022-08-05T19:30:51.039688Z","shell.execute_reply":"2022-08-05T19:30:51.073191Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=test.drop(['id'],axis=1)\ntest.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:30:55.501612Z","iopub.execute_input":"2022-08-05T19:30:55.502062Z","iopub.status.idle":"2022-08-05T19:30:55.536622Z","shell.execute_reply.started":"2022-08-05T19:30:55.502024Z","shell.execute_reply":"2022-08-05T19:30:55.535748Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Gaurav dropped attribute_1, I have No clue why since he made no explanation.\n\nOn LGBM Imputer we got KeyError: \"['attribute_1__material_8'] not in index\"","metadata":{}},{"cell_type":"code","source":"train=train.drop(['attribute_1','product_code'],axis=1)\ntrain.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:00.478722Z","iopub.execute_input":"2022-08-05T19:31:00.479943Z","iopub.status.idle":"2022-08-05T19:31:00.513514Z","shell.execute_reply.started":"2022-08-05T19:31:00.479855Z","shell.execute_reply":"2022-08-05T19:31:00.511888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=test.drop(['attribute_1','product_code'],axis=1)\ntest.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:05.140979Z","iopub.execute_input":"2022-08-05T19:31:05.142017Z","iopub.status.idle":"2022-08-05T19:31:05.174681Z","shell.execute_reply.started":"2022-08-05T19:31:05.141973Z","shell.execute_reply":"2022-08-05T19:31:05.173783Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"round(train.isnull().sum()*100/len(train),2).sort_values(ascending=False)","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:31:10.071040Z","iopub.execute_input":"2022-08-05T19:31:10.071717Z","iopub.status.idle":"2022-08-05T19:31:10.095357Z","shell.execute_reply.started":"2022-08-05T19:31:10.071666Z","shell.execute_reply":"2022-08-05T19:31:10.094431Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"round(test.isnull().sum()*100/len(test),2).sort_values(ascending=False)","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:31:19.898455Z","iopub.execute_input":"2022-08-05T19:31:19.898917Z","iopub.status.idle":"2022-08-05T19:31:19.916592Z","shell.execute_reply.started":"2022-08-05T19:31:19.898864Z","shell.execute_reply":"2022-08-05T19:31:19.915682Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:27.865449Z","iopub.execute_input":"2022-08-05T19:31:27.866595Z","iopub.status.idle":"2022-08-05T19:31:27.894610Z","shell.execute_reply.started":"2022-08-05T19:31:27.866553Z","shell.execute_reply":"2022-08-05T19:31:27.893227Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"round(train.failure.value_counts()*100/len(train),2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:32.936700Z","iopub.execute_input":"2022-08-05T19:31:32.937667Z","iopub.status.idle":"2022-08-05T19:31:32.950570Z","shell.execute_reply.started":"2022-08-05T19:31:32.937622Z","shell.execute_reply":"2022-08-05T19:31:32.949293Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=pd.get_dummies(train,prefix_sep='__')\ntrain.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:37.425436Z","iopub.execute_input":"2022-08-05T19:31:37.425851Z","iopub.status.idle":"2022-08-05T19:31:37.472889Z","shell.execute_reply.started":"2022-08-05T19:31:37.425820Z","shell.execute_reply":"2022-08-05T19:31:37.471926Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=pd.get_dummies(test,prefix_sep='__')\ntest.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:31:41.820528Z","iopub.execute_input":"2022-08-05T19:31:41.821346Z","iopub.status.idle":"2022-08-05T19:31:41.860169Z","shell.execute_reply.started":"2022-08-05T19:31:41.821305Z","shell.execute_reply":"2022-08-05T19:31:41.859170Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#What is Kuma utils tool?\n\nhttps://github.com/analokmaus/kuma_utils/blob/master/examples/Exploratory_data_analysis.ipynb","metadata":{}},{"cell_type":"code","source":"# !rm -r kuma_utils\n!git clone https://github.com/analokmaus/kuma_utils.git","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:31:47.065693Z","iopub.execute_input":"2022-08-05T19:31:47.067078Z","iopub.status.idle":"2022-08-05T19:31:48.217488Z","shell.execute_reply.started":"2022-08-05T19:31:47.067035Z","shell.execute_reply":"2022-08-05T19:31:48.216218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import sys\nsys.path.append(\"kuma_utils/\")\nfrom kuma_utils.preprocessing.imputer import LGBMImputer","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:32:05.980053Z","iopub.execute_input":"2022-08-05T19:32:05.980522Z","iopub.status.idle":"2022-08-05T19:32:06.589728Z","shell.execute_reply.started":"2022-08-05T19:32:05.980474Z","shell.execute_reply":"2022-08-05T19:32:06.588693Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"col=train.columns.tolist()\ncol.remove('failure')\ncol[:5]","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:32:19.668862Z","iopub.execute_input":"2022-08-05T19:32:19.669314Z","iopub.status.idle":"2022-08-05T19:32:19.678540Z","shell.execute_reply.started":"2022-08-05T19:32:19.669280Z","shell.execute_reply":"2022-08-05T19:32:19.677226Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\nlgbm_imtr = LGBMImputer(n_iter=500)\n\ntrain_iterimp = lgbm_imtr.fit_transform(train[col])\ntest_iterimp = lgbm_imtr.transform(test[col])\n\n# Create train test imputed dataframe\ntrain_ = pd.DataFrame(train_iterimp, columns=col)\ntest = pd.DataFrame(test_iterimp, columns=col)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:32:26.216970Z","iopub.execute_input":"2022-08-05T19:32:26.217391Z","iopub.status.idle":"2022-08-05T19:33:04.675553Z","shell.execute_reply.started":"2022-08-05T19:32:26.217359Z","shell.execute_reply":"2022-08-05T19:33:04.674478Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_['failure'] = train['failure']\ntrain_.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:33:52.203841Z","iopub.execute_input":"2022-08-05T19:33:52.204307Z","iopub.status.idle":"2022-08-05T19:33:52.233998Z","shell.execute_reply.started":"2022-08-05T19:33:52.204273Z","shell.execute_reply":"2022-08-05T19:33:52.231757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Why Undummify.  Reverse a get_dummies encoding in pandas\n\n\"The following function collapses a \"dummified\" dataframe while keeping the order of columns:\"\n\nhttps://newbedev.com/reverse-a-get-dummies-encoding-in-pandas","metadata":{}},{"cell_type":"code","source":"def undummify(df, prefix_sep=\"__\"):\n    cols2collapse = {\n        item.split(prefix_sep)[0]: (prefix_sep in item) for item in df.columns\n    }\n    series_list = []\n    for col, needs_to_collapse in cols2collapse.items():\n        if needs_to_collapse:\n            undummified = (\n                df.filter(like=col)\n                .idxmax(axis=1)\n                .apply(lambda x: x.split(prefix_sep, maxsplit=1)[1])\n                .rename(col)\n            )\n            series_list.append(undummified)\n        else:\n            series_list.append(df[col])\n    undummified_df = pd.concat(series_list, axis=1)\n    return undummified_df","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:33:20.387596Z","iopub.execute_input":"2022-08-05T19:33:20.388037Z","iopub.status.idle":"2022-08-05T19:33:20.396891Z","shell.execute_reply.started":"2022-08-05T19:33:20.388003Z","shell.execute_reply":"2022-08-05T19:33:20.395599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train=undummify(train_)\ntrain.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:34:02.415601Z","iopub.execute_input":"2022-08-05T19:34:02.416045Z","iopub.status.idle":"2022-08-05T19:34:02.501864Z","shell.execute_reply.started":"2022-08-05T19:34:02.416013Z","shell.execute_reply":"2022-08-05T19:34:02.500974Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test=undummify(test)\ntest.head(2)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:34:22.152364Z","iopub.execute_input":"2022-08-05T19:34:22.152822Z","iopub.status.idle":"2022-08-05T19:34:22.221273Z","shell.execute_reply.started":"2022-08-05T19:34:22.152785Z","shell.execute_reply":"2022-08-05T19:34:22.220119Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Reduce Memory Usage","metadata":{}},{"cell_type":"code","source":"def reduce_mem_usage(props):\n    start_mem_usg = props.memory_usage().sum() / 1024**2 \n    print(\"Memory usage of properties dataframe is :\",start_mem_usg,\" MB\")\n    NAlist = [] # Keeps track of columns that have missing values filled in. \n    for col in props.columns:\n        if props[col].dtype != object:  # Exclude strings\n            \n            # Print current column type\n            print(\"******************************\")\n            print(\"Column: \",col)\n            print(\"dtype before: \",props[col].dtype)\n            \n            # make variables for Int, max and min\n            IsInt = False\n            mx = props[col].max()\n            mn = props[col].min()\n            \n            # Integer does not support NA, therefore, NA needs to be filled\n            if not np.isfinite(props[col]).all(): \n                NAlist.append(col)\n                props[col].fillna(mn-1,inplace=True)  \n                   \n            # test if column can be converted to an integer\n            asint = props[col].fillna(0).astype(np.int64)\n            result = (props[col] - asint)\n            result = result.sum()\n            if result > -0.01 and result < 0.01:\n                IsInt = True\n\n            \n            # Make Integer/unsigned Integer datatypes\n            if IsInt:\n                if mn >= 0:\n                    if mx < 255:\n                        props[col] = props[col].astype(np.uint8)\n                    elif mx < 65535:\n                        props[col] = props[col].astype(np.uint16)\n                    elif mx < 4294967295:\n                        props[col] = props[col].astype(np.uint32)\n                    else:\n                        props[col] = props[col].astype(np.uint64)\n                else:\n                    if mn > np.iinfo(np.int8).min and mx < np.iinfo(np.int8).max:\n                        props[col] = props[col].astype(np.int8)\n                    elif mn > np.iinfo(np.int16).min and mx < np.iinfo(np.int16).max:\n                        props[col] = props[col].astype(np.int16)\n                    elif mn > np.iinfo(np.int32).min and mx < np.iinfo(np.int32).max:\n                        props[col] = props[col].astype(np.int32)\n                    elif mn > np.iinfo(np.int64).min and mx < np.iinfo(np.int64).max:\n                        props[col] = props[col].astype(np.int64)    \n            \n            # Make float datatypes 32 bit\n            else:\n                props[col] = props[col].astype(np.float32)\n            \n            # Print new column type\n            print(\"dtype after: \",props[col].dtype)\n            print(\"******************************\")\n    \n    # Print final result\n    print(\"___MEMORY USAGE AFTER COMPLETION:___\")\n    mem_usg = props.memory_usage().sum() / 1024**2 \n    print(\"Memory usage is: \",mem_usg,\" MB\")\n    print(\"This is \",100*mem_usg/start_mem_usg,\"% of the initial size\")\n    return props, NAlist","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:35:26.000975Z","iopub.execute_input":"2022-08-05T19:35:26.001460Z","iopub.status.idle":"2022-08-05T19:35:26.023424Z","shell.execute_reply.started":"2022-08-05T19:35:26.001411Z","shell.execute_reply":"2022-08-05T19:35:26.022369Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\ntrain, NAlist = reduce_mem_usage(train)\nprint(\"_________________\")\nprint(\"\")\nprint(\"Warning: the following columns have missing values filled with 'df['column_name'].min() -1': \")\nprint(\"_________________\")\nprint(\"\")\nprint(NAlist)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:35:45.168942Z","iopub.execute_input":"2022-08-05T19:35:45.169369Z","iopub.status.idle":"2022-08-05T19:35:45.247554Z","shell.execute_reply.started":"2022-08-05T19:35:45.169337Z","shell.execute_reply":"2022-08-05T19:35:45.246191Z"},"_kg_hide-output":true,"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test, NAlist = reduce_mem_usage(test)\nprint(\"_________________\")\nprint(\"\")\nprint(\"Warning: the following columns have missing values filled with 'df['column_name'].min() -1': \")\nprint(\"_________________\")\nprint(\"\")\nprint(NAlist)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:36:14.730822Z","iopub.execute_input":"2022-08-05T19:36:14.731586Z","iopub.status.idle":"2022-08-05T19:36:14.797520Z","shell.execute_reply.started":"2022-08-05T19:36:14.731536Z","shell.execute_reply":"2022-08-05T19:36:14.796192Z"},"_kg_hide-output":true,"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Ignore warnings\nimport warnings\nwarnings.filterwarnings('ignore')","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:38:25.540638Z","iopub.execute_input":"2022-08-05T19:38:25.541147Z","iopub.status.idle":"2022-08-05T19:38:25.546973Z","shell.execute_reply.started":"2022-08-05T19:38:25.541105Z","shell.execute_reply":"2022-08-05T19:38:25.545717Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from lazypredict.Supervised import LazyClassifier","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:38:29.991795Z","iopub.execute_input":"2022-08-05T19:38:29.992286Z","iopub.status.idle":"2022-08-05T19:38:29.998342Z","shell.execute_reply.started":"2022-08-05T19:38:29.992248Z","shell.execute_reply":"2022-08-05T19:38:29.997001Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = train.pop('failure')\nX = train","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:37:21.383610Z","iopub.execute_input":"2022-08-05T19:37:21.384129Z","iopub.status.idle":"2022-08-05T19:37:21.390464Z","shell.execute_reply.started":"2022-08-05T19:37:21.384084Z","shell.execute_reply":"2022-08-05T19:37:21.389086Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=42,shuffle=True, stratify=y)","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:37:35.220117Z","iopub.execute_input":"2022-08-05T19:37:35.220541Z","iopub.status.idle":"2022-08-05T19:37:35.253473Z","shell.execute_reply.started":"2022-08-05T19:37:35.220508Z","shell.execute_reply":"2022-08-05T19:37:35.252401Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"clf = LazyClassifier(verbose=0,predictions=True)\nmodels,predictions = clf.fit(X_train, X_test, y_train, y_test)\nmodels","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:38:52.000871Z","iopub.execute_input":"2022-08-05T19:38:52.001347Z","iopub.status.idle":"2022-08-05T19:42:05.043962Z","shell.execute_reply.started":"2022-08-05T19:38:52.001308Z","shell.execute_reply":"2022-08-05T19:42:05.042738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions.head()","metadata":{"execution":{"iopub.status.busy":"2022-08-05T19:44:40.109934Z","iopub.execute_input":"2022-08-05T19:44:40.110517Z","iopub.status.idle":"2022-08-05T19:44:40.136857Z","shell.execute_reply.started":"2022-08-05T19:44:40.110481Z","shell.execute_reply":"2022-08-05T19:44:40.135457Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import classification_report\nfor i in predictions.columns.tolist():\n    print('\\t\\t',i,'\\n')\n    print(classification_report(y_test, predictions[i]),'\\n')","metadata":{"_kg_hide-output":true,"execution":{"iopub.status.busy":"2022-08-05T19:44:44.800681Z","iopub.execute_input":"2022-08-05T19:44:44.801153Z","iopub.status.idle":"2022-08-05T19:44:45.069419Z","shell.execute_reply.started":"2022-08-05T19:44:44.801112Z","shell.execute_reply":"2022-08-05T19:44:45.068188Z"},"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#Acknowledgements:\n\nGaurav Dutta https://www.kaggle.com/code/gauravduttakiit/failure-prediction-lazypredict\n\nhttps://github.com/analokmaus/kuma_utils/blob/master/examples/Exploratory_data_analysis.ipynb\n\nhttps://lazypredict.readthedocs.io/en/latest/","metadata":{}},{"cell_type":"markdown","source":"![](https://pbs.twimg.com/media/FP1mCFQX0AA8krN.jpg)https://mobile.twitter.com/rechi_danilo","metadata":{}}]}