{"cells":[{"metadata":{},"cell_type":"markdown","source":"### Import Data"},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\ntrain_data = pd.read_csv('/kaggle/input/cat-in-the-dat-ii/train.csv')\ntest_data = pd.read_csv('/kaggle/input/cat-in-the-dat-ii/test.csv')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Explore Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"def resumetable(df):\n    print(f\"Dataset Shape: {df.shape}\")\n    summary = pd.DataFrame(df.dtypes,columns=['dtypes'])\n    summary = summary.reset_index()\n    summary['Name'] = summary['index']\n    summary = summary[['Name','dtypes']]\n    summary['Missing'] = df.isnull().sum().values\n    summary['Total'] = df.count().values   \n    summary['Missing Percentage']=(summary['Missing']/summary['Total'])*100\n    summary['Uniques'] = df.nunique().values\n    summary['Uniques_val'] = [df[col].unique() for col in df.columns]\n    return summary\n\nresumetable(test_data)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Missing Values"},{"metadata":{"trusted":true},"cell_type":"code","source":"def fillna_sample(df):\n    for col in df.columns:\n        df.loc[df[col].isna(),col] = df[col][-df[col].isna()].sample(n= df[col].isna().sum()).values\nfillna_sample(train_data)\nfillna_sample(test_data)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Split label Column & Drop usless"},{"metadata":{"trusted":true},"cell_type":"code","source":"train_label = train_data['target']\ntrain_data.drop(columns=['id', 'target'], axis=1, inplace=True)\ntest_id = test_data['id']\ntest_data.drop(columns=['id'], axis=1, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Convert Ordinals"},{"metadata":{"trusted":true},"cell_type":"code","source":"convert_ord = { \"ord_1\": {\"Novice\":0, \"Contributor\":1, \"Expert\":3, \"Master\":4, \"Grandmaster\":5},\n                \"ord_2\": {\"Freezing\": 0, \"Cold\": 1, \"Warm\":3, \"Hot\":4, \"Lava Hot\":5, \"Boiling Hot\":6} }\ntrain_data.replace(convert_ord, inplace=True)\ntest_data.replace(convert_ord, inplace=True)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Convert Categoricals"},{"metadata":{"trusted":true},"cell_type":"code","source":"need_dummy_cols = [\"nom_0\", \"nom_1\", \"nom_2\", \"nom_3\", \"nom_4\", \"bin_3\", \"bin_4\"]\ntrain_data = pd.get_dummies(train_data, columns=need_dummy_cols, drop_first=True)\ntest_data = pd.get_dummies(test_data, columns=need_dummy_cols, drop_first=True)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### LabelEncoder"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\nlb_bin = LabelEncoder()\ncategorical_cols = train_data.select_dtypes(include=['object']).columns\nfor col in categorical_cols:\n    train_data[col] = lb_bin.fit_transform(train_data[col])\n    test_data[col] = lb_bin.fit_transform(test_data[col])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Scale Data"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import MinMaxScaler\nscaler = MinMaxScaler()\ntrain_data = scaler.fit_transform(train_data)\ntest_data = scaler.fit_transform(test_data)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Fit Model & Predict"},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\nlrclf = LogisticRegression(C=5)\nlrclf.fit(train_data, train_label)\nlrclf_pred = lrclf.predict_proba(test_data)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Export"},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.DataFrame({'id': test_id, 'target': lrclf_pred[:,1]})\nsubmission.to_csv('submission.csv', index=False)","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":1}