{"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)\nimport matplotlib.pyplot as plt\nfrom sklearn import metrics \nfrom sklearn import preprocessing\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        \ndf_train= pd.read_csv('../input/cat-in-the-dat-ii/train.csv')\ndf_test=pd.read_csv('../input/cat-in-the-dat-ii/train.csv')\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-07-23T11:43:28.975759Z","iopub.execute_input":"2022-07-23T11:43:28.976208Z","iopub.status.idle":"2022-07-23T11:43:34.530417Z","shell.execute_reply.started":"2022-07-23T11:43:28.976173Z","shell.execute_reply":"2022-07-23T11:43:34.529229Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.head(10)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-23T11:43:34.532364Z","iopub.execute_input":"2022-07-23T11:43:34.532704Z","iopub.status.idle":"2022-07-23T11:43:34.580082Z","shell.execute_reply.started":"2022-07-23T11:43:34.532673Z","shell.execute_reply":"2022-07-23T11:43:34.578686Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.target.sum()/len(df_train.index)","metadata":{"execution":{"iopub.status.busy":"2022-07-23T11:43:34.581600Z","iopub.execute_input":"2022-07-23T11:43:34.582380Z","iopub.status.idle":"2022-07-23T11:43:34.593569Z","shell.execute_reply.started":"2022-07-23T11:43:34.582325Z","shell.execute_reply":"2022-07-23T11:43:34.592228Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"that tells us that only 18% is labled 1 which implies that our model should perform better than 82% or it will be useless ","metadata":{}},{"cell_type":"code","source":"df_train.shape\n","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:05:43.014174Z","iopub.execute_input":"2022-07-23T12:05:43.014949Z","iopub.status.idle":"2022-07-23T12:05:43.021390Z","shell.execute_reply.started":"2022-07-23T12:05:43.014908Z","shell.execute_reply":"2022-07-23T12:05:43.020599Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.describe(include='object')","metadata":{"execution":{"iopub.status.busy":"2022-07-23T11:59:22.231097Z","iopub.execute_input":"2022-07-23T11:59:22.231480Z","iopub.status.idle":"2022-07-23T11:59:24.913289Z","shell.execute_reply.started":"2022-07-23T11:59:22.231448Z","shell.execute_reply":"2022-07-23T11:59:24.912106Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(df_train.ord_1.value_counts())\nprint(df_train.ord_2.value_counts())","metadata":{"execution":{"iopub.status.busy":"2022-07-23T11:43:37.389532Z","iopub.execute_input":"2022-07-23T11:43:37.389956Z","iopub.status.idle":"2022-07-23T11:43:37.599943Z","shell.execute_reply.started":"2022-07-23T11:43:37.389926Z","shell.execute_reply":"2022-07-23T11:43:37.598746Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X= df_train.drop('target', axis=1)\ny= df_train.target\ncombined= [X, df_test]\nfor c in combined:\n    \n# fill na values with unknwon to label it with the model\n    c.ord_2.fillna('unk')\n# initializre the model (notice it can be initialized outside the loop)    \n    le=preprocessing.LabelEncoder()\n    \n    c.ord_2=le.fit_transform(c.ord_2.values)","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:35:50.938611Z","iopub.execute_input":"2022-07-23T12:35:50.939084Z","iopub.status.idle":"2022-07-23T12:35:51.484826Z","shell.execute_reply.started":"2022-07-23T12:35:50.939032Z","shell.execute_reply":"2022-07-23T12:35:51.483812Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X.ord_2.value_counts()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:35:53.727502Z","iopub.execute_input":"2022-07-23T12:35:53.728323Z","iopub.status.idle":"2022-07-23T12:35:53.741088Z","shell.execute_reply.started":"2022-07-23T12:35:53.728273Z","shell.execute_reply":"2022-07-23T12:35:53.739965Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"10075 is the unknown class ","metadata":{}},{"cell_type":"markdown","source":"**let's use another way of encoding using pandas -> get_dummies. the way it works is very similar to one hot encoding as they both expand dimensions but the difference is that dummy encoding use less columns actually less by 1 **\n\n![image.png](attachment:8e69e499-9663-4707-84ec-9c6a8db56cfd.png) \n![image.png](attachment:c65c1ced-e3ff-47d0-983d-ade07349beb5.png)\n\nsource:https://towardsdatascience.com/encoding-categorical-variables-one-hot-vs-dummy-encoding-6d5b9c46e2db\n\n","metadata":{},"attachments":{"8e69e499-9663-4707-84ec-9c6a8db56cfd.png":{"image/png":"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"},"c65c1ced-e3ff-47d0-983d-ade07349beb5.png":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAA0UAAAFWCAIAAAApOKH+AAAgAElEQVR4nO3dfVzN9/8/8Oe7ji4duiDlYicmlcslVgmFRkhmmz5jWMLQNiPGloukmYt9h7lomIttsZmLuRhyuQpRQhKSEhElXel03Tnn/fvjvd9Zq1Mq1fu8T4/7re12vN+v8z7P8/J2zqP3xevFsCxLAAAAACBYWnwXAAAAAACvBXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACEDXkOAAAAQNiQ5wAAAACETcR3AaoxDMN3Cc1FQEDA8uXL+a4CoKnhQwYA6iEsLMzV1ZXvKlRQ0zxHRC4uLurZZZokMDCQ7xIAeIMPmSYQGBiIfm4C6Oemoc5fmuqb51xdXXHcqLGp864J0NjwIdMEAgMD0c9NAP3cNNT5SxPXzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIG/IcAAAAgLAhzwEAAAAIWzPNczKZLCYmZunSpU5OTgzDMAxjY2MzderUM2fOFBcXv/72g4KCGIaZNWtWg2wNAJqnxMTEt956i2GYyMjIGpo9ffp06NCh+MCpt+r6mWXZlJSUit8Uffv2Xbp0aUJCAsuyfFUrXDXsz48fP/7mm2/69u3LMIypqamXl9epU6dKS0t5qVOgml2eY1n28uXLQ4cOffvtt7/55puoqChueWJi4s8//zxixAgXF5fLly/j3yoACIJMJtu9e3dYWBjfhWgamUy2ZcuWt956q+I3RWxs7DfffOPg4LBlyxaZTMZvhZqBZdk///xz8ODBS5cujY2NJaKcnJwDBw6MHDlyxowZL1684LtAwWheeU4mk+3atcvd3f3ixYsSiWTx4sWXLl3KzMzMysq6du1aYGCgiYlJTEzMxIkTL1y4wHexAACvwLLs/v37165dy3chmoZl2X379n3++edSqXTEiBFHjx7NyMjIyMg4evToiBEjpFKpv7///v378Zv/67tw4YKfn19qaqqrq+vJkyczMzNTUlJWrVplYmISEhKyfPnywsJCvmsUhmaU57gPvnnz5kml0smTJ0dFRX3zzTfOzs5t27Y1NTW1t7dftmxZRESEg4NDamrqokWLEhIS+C4ZAKBaLMueOnXK399fKpXyXYumSU1N3bp1KxH5+voeOnTI09OzXbt27dq18/T0PHDgwPTp06VS6caNGx89esR3pcJWWFj4888/p6amjh07dt++fSNHjmzbtm3nzp0XLVq0adMmsVgcEhKiPDgKNWtGeS45OXnjxo1SqXTs2LHfffedubl51TY9e/b89ttvLSwsoqOj9+zZg8PpAKCeZDLZr7/+OmnSpJycHDMzM77L0TS3bt2KjIy0srKaOXOmoaFhxVVisXjGjBnc10R8fDxfFWqGe/funT59mohmzpzZrl075XKGYUaOHOnm5iaVSi9evIjjoLXRXPIcy7J//fVXdHS0hYWFv79/xf2mEmdn5/HjxxPRiRMnHjx40IQ1AgDUyqNHj6ZNm+bt7d2pU6dDhw6NHTuW74o0zdOnT4cMGdKtW7cOHTpUXdu5c+cePXoQEY6Mvqby8vIRI0Z4enp279690io9PT3uF5WMjIySkhI+qhOY5pLnsrOzz549S0Rubm62trY1tNTV1XVzc3N3d/f29tbX16+4qrS09OzZs97e3paWlgzDWFpa/u9//6vTPTgsyyYkJCxdupS7i6dVq1Zubm6bN2/Ozs6u1JK7QzYoKCgnJ2fJkiWWlpaWlpbTp0/HWWAAjVTx/j7uH3tcXJzKlsXFxatXr/711199fHxOnTo1cOBALa3m8kn++mrZz7Nnz/7777+PHz9uampadW1RUVFRUVHjFytgtexnR0fH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"}}},{"cell_type":"code","source":"for i in range(2):\n    \n    g=pd.get_dummies(combined[i].ord_1,dummy_na=True,prefix='ord-1')\n    combined[i]=combined[i].drop('ord_1',axis=1)\n    combined[i]=pd.concat([combined[i],g],axis=1)\n","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:35:56.873563Z","iopub.execute_input":"2022-07-23T12:35:56.874578Z","iopub.status.idle":"2022-07-23T12:35:57.584189Z","shell.execute_reply.started":"2022-07-23T12:35:56.874539Z","shell.execute_reply":"2022-07-23T12:35:57.582976Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"combined[0].head()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:35:59.961949Z","iopub.execute_input":"2022-07-23T12:35:59.962331Z","iopub.status.idle":"2022-07-23T12:35:59.989040Z","shell.execute_reply.started":"2022-07-23T12:35:59.962302Z","shell.execute_reply":"2022-07-23T12:35:59.987891Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"we now handle one hot encoder for the ord_4 column","metadata":{}},{"cell_type":"code","source":"df_train['ord_4'].unique()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:53:17.609689Z","iopub.execute_input":"2022-07-23T12:53:17.610501Z","iopub.status.idle":"2022-07-23T12:53:17.659178Z","shell.execute_reply.started":"2022-07-23T12:53:17.610450Z","shell.execute_reply":"2022-07-23T12:53:17.658069Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"code","source":"ohe=preprocessing.OneHotEncoder()\ndf_train['ord_4'].astype(str).fillna('unk')\ntransformed=ohe.fit_transform(df_train[['ord_4']])\nprint(transformed.toarray())\nprint('-'*40)\nprint('what every row looks in the inside')\ntransformed.toarray()[0]","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:52:06.719600Z","iopub.execute_input":"2022-07-23T12:52:06.720776Z","iopub.status.idle":"2022-07-23T12:52:07.359869Z","shell.execute_reply.started":"2022-07-23T12:52:06.720726Z","shell.execute_reply":"2022-07-23T12:52:07.358808Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"great!\nnow we will try to labelly encode all object columns with one sip!","metadata":{}},{"cell_type":"code","source":"cols_objects= []\nfor col in df_train.columns:\n    if df_train[col].dtypes=='object':\n        cols_objects.append(col)","metadata":{"execution":{"iopub.status.busy":"2022-07-23T12:08:07.148990Z","iopub.execute_input":"2022-07-23T12:08:07.149360Z","iopub.status.idle":"2022-07-23T12:08:07.155422Z","shell.execute_reply.started":"2022-07-23T12:08:07.149330Z","shell.execute_reply":"2022-07-23T12:08:07.154315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":" le=preprocessing.LabelEncoder()\n    \nfor feature in cols_objects:\n    df_train[feature]=le.fit_transform(df_train[feature])\n    df_test[feature]= le.fit_transform(df_test[feature])","metadata":{"execution":{"iopub.status.busy":"2022-07-23T13:05:02.670753Z","iopub.execute_input":"2022-07-23T13:05:02.671216Z","iopub.status.idle":"2022-07-23T13:05:04.282392Z","shell.execute_reply.started":"2022-07-23T13:05:02.671181Z","shell.execute_reply":"2022-07-23T13:05:04.281438Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T13:05:04.957799Z","iopub.execute_input":"2022-07-23T13:05:04.958925Z","iopub.status.idle":"2022-07-23T13:05:04.987916Z","shell.execute_reply.started":"2022-07-23T13:05:04.958882Z","shell.execute_reply":"2022-07-23T13:05:04.987024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"awesome! now you have a meaning of what encoding is and how it is coded. Good luck!","metadata":{}},{"cell_type":"code","source":"\ndf_train=df_train.fillna(df_train.median())\ndf_test=df_test.fillna(df_test.median())\ndf_train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T13:06:19.818049Z","iopub.execute_input":"2022-07-23T13:06:19.818544Z","iopub.status.idle":"2022-07-23T13:06:20.598413Z","shell.execute_reply.started":"2022-07-23T13:06:19.818508Z","shell.execute_reply":"2022-07-23T13:06:20.597464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train.info()","metadata":{"execution":{"iopub.status.busy":"2022-07-23T13:06:41.247939Z","iopub.execute_input":"2022-07-23T13:06:41.248422Z","iopub.status.idle":"2022-07-23T13:06:41.292307Z","shell.execute_reply.started":"2022-07-23T13:06:41.248381Z","shell.execute_reply":"2022-07-23T13:06:41.291491Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"let's see how much accuracy we will get without further feature engineering techniques","metadata":{}},{"cell_type":"code","source":"X= df_train.drop(['id','target'],axis=1)\ny = df_train.target\nxtest= df_test.drop('id',axis=1)\nfrom sklearn import linear_model\nfrom sklearn.model_selection import train_test_split\nxtrain,xval,ytrain,yval= train_test_split(X,y,random_state=42)\nlinear= linear_model.LogisticRegression()\nlinear.fit(xtrain,ytrain)\nprint(linear.score(xval,yval))\n","metadata":{"execution":{"iopub.status.busy":"2022-07-23T13:20:53.696494Z","iopub.execute_input":"2022-07-23T13:20:53.696925Z","iopub.status.idle":"2022-07-23T13:21:01.490690Z","shell.execute_reply.started":"2022-07-23T13:20:53.696879Z","shell.execute_reply":"2022-07-23T13:21:01.489349Z"},"trusted":true},"execution_count":null,"outputs":[]}]}