{"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(train_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 Categorical Features to Numeric**"},{"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":{"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}