{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"'''Import basic modules'''\nimport pandas as pd\nimport numpy as np\nimport shap\nimport string\nfrom catboost import CatBoostClassifier, Pool, cv, CatBoostRegressor\nfrom sklearn.model_selection import KFold, StratifiedKFold, cross_val_score, ShuffleSplit\nfrom sklearn.metrics import roc_auc_score as auc\nfrom sklearn.linear_model import LogisticRegression\nimport os\n\n'''import visualization'''\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport matplotlib.style as style\nstyle.use('fivethirtyeight')\n\n'''Ignore deprecation and future, and user warnings.'''\nimport warnings as wrn\nwrn.filterwarnings('ignore', category = DeprecationWarning) \nwrn.filterwarnings('ignore', category = FutureWarning) \nwrn.filterwarnings('ignore', category = UserWarning)\n\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"X = pd.read_csv('/kaggle/input/cat-in-the-dat-ii/train.csv')\ntest = pd.read_csv('/kaggle/input/cat-in-the-dat-ii/test.csv')\nprint(X.shape, test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.info() # Checking the datatypes of the Columns available","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(X['target'].unique())\ngp = sns.countplot(X['target'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sns.heatmap(X.corr(), linewidths = 0.1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_test = pd.concat([X, test])\ntrain_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Remove and Fill in certain features in the dataset\ntrain_test.fillna(-1, axis = 1, inplace = True)\ntrain_test.drop(['id'], axis = 1, inplace = True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = train_test.iloc[:X.shape[0], :]\ntest = train_test.iloc[X.shape[0]:, :]\ntest.drop(['target'], axis = 1, inplace = True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.shape # Checking the test set size","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Getting the Categorical features\ncat_features = []\nfor i in X.columns:\n    if X[i].dtype == 'object':\n        cat_features.append(i)\n        \nprint(len(cat_features), ' -- Number of Categorical Features')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X.columns # Names of all the columnar data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Prepare for CatBoost\ntarget = X['target']\ntrain = X.drop(['target'], axis = 1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def print_cv_summary(cv_data):\n    cv_data.head(10)\n\n    best_value = cv_data['test-Logloss-mean'].min()\n    best_iter = cv_data['test-Logloss-mean'].values.argmin()\n\n    print('Best validation Logloss score : {:.4f}±{:.4f} on step {}'.format(\n        best_value,\n        cv_data['test-Logloss-std'][best_iter],\n        best_iter))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Model\ncv_dataset = Pool(data=train, label=target, cat_features=cat_features)\nparams = {\"iterations\": 100, \"depth\": 2, \"loss_function\": \"Logloss\", \"verbose\": False, 'custom_loss': 'AUC', 'learning_rate': 0.01}\nscores = cv(cv_dataset, params, fold_count = 2, plot = \"True\")\n\nprint_cv_summary(scores)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# Initialize CatBoostClassifier\nmodel = CatBoostRegressor(iterations = 500, learning_rate = 0.09, depth = 2)\nmodel.fit(train, target, cat_features)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"shap_values = model.get_feature_importance(Pool(train, label = target, cat_features = cat_features), type=\"ShapValues\")\nshap_values = shap_values[:,:-1]\nshap.summary_plot(shap_values, train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predict = model.predict(test)\nprint(pd.Series(predict).value_counts())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_id = pd.read_csv('/kaggle/input/cat-in-the-dat-ii/test.csv', usecols=['id'])\nsubmission = pd.DataFrame({'id': test_id['id'], 'target': predict})\nsubmission.to_csv(\"submission.csv\", index = False)\nsubmission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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}