{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":16017,"databundleVersionId":708189,"sourceType":"competition"}],"dockerImageVersionId":30699,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split, RandomizedSearchCV\nfrom xgboost import XGBClassifier\nfrom sklearn.metrics import accuracy_score\n\ntrain_data = pd.read_csv(\"/kaggle/input/Kannada-MNIST/train.csv\")\ntest_data = pd.read_csv(\"/kaggle/input/Kannada-MNIST/test.csv\")\n\nX_train = train_data.drop(columns=['label']).values\ny_train = train_data['label'].values\nX_test = test_data.drop(columns=['id']).values\n\nX_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)\n\nxgb_base = XGBClassifier(tree_method='hist', device='gpu')\n\nxgb_param_dist1 = {\n    'n_estimators': range(50, 250, 10),\n    'max_depth': range(2, 14, 2)\n    \n}\n\ndef fine_tune_model(model, param_distributions, X_train, y_train):\n    random_search = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5, scoring='accuracy', n_jobs=-1)\n    random_search.fit(X_train, y_train)\n    best_params = random_search.best_params_\n    return best_params\n\n\nxgb_best_params = fine_tune_model(xgb_base, xgb_param_dist1, X_train, y_train)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-06-16T10:26:55.775098Z","iopub.execute_input":"2024-06-16T10:26:55.775394Z","iopub.status.idle":"2024-06-16T10:46:03.810181Z","shell.execute_reply.started":"2024-06-16T10:26:55.775367Z","shell.execute_reply":"2024-06-16T10:46:03.809065Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_best_params","metadata":{"execution":{"iopub.status.busy":"2024-06-16T10:46:32.621538Z","iopub.execute_input":"2024-06-16T10:46:32.621982Z","iopub.status.idle":"2024-06-16T10:46:32.630188Z","shell.execute_reply.started":"2024-06-16T10:46:32.621945Z","shell.execute_reply":"2024-06-16T10:46:32.629324Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_param_dist2 = {\n    'n_estimators': [220,230,240],\n    'max_depth': [5,6,7]\n    \n}\n\ndef fine_tune_model2(model, param_distributions, X_train, y_train):\n    random_search2 = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5, scoring='accuracy', n_jobs=-1)\n    random_search2.fit(X_train, y_train)\n    best_params2 = random_search2.best_params_\n    return best_params2\n\n\nxgb_best_params2 = fine_tune_model2(xgb_base, xgb_param_dist2, X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2024-06-16T10:48:01.604998Z","iopub.execute_input":"2024-06-16T10:48:01.605336Z","iopub.status.idle":"2024-06-16T11:10:16.736033Z","shell.execute_reply.started":"2024-06-16T10:48:01.605312Z","shell.execute_reply":"2024-06-16T11:10:16.734920Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_best_params2","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:10:42.382714Z","iopub.execute_input":"2024-06-16T11:10:42.383370Z","iopub.status.idle":"2024-06-16T11:10:42.389903Z","shell.execute_reply.started":"2024-06-16T11:10:42.383338Z","shell.execute_reply":"2024-06-16T11:10:42.388784Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_param_dist3 = {\n    'n_estimators': [240],\n    'learning_rate': [0.1, 0.2, 0.5, 0.75, 1],\n    'max_depth': [5],\n    'gamma': [0.1, 0.2, 0.5, 0.75, 1],\n    'subsample': [0.1, 0.2, 0.5, 0.75, 1],\n    'colsample_bytree': [0.1, 0.2, 0.5, 0.75, 1],\n    'eta': [0.1, 0.2, 0.5, 0.75, 1],\n    'alpha': [0.1, 0.2, 0.5, 0.75, 1]\n    \n}\n\ndef fine_tune_model3(model, param_distributions, X_train, y_train):\n    random_search3 = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5, scoring='accuracy', n_jobs=-1)\n    random_search3.fit(X_train, y_train)\n    best_params3 = random_search3.best_params_\n    return best_params3\n\n\nxgb_best_params3 = fine_tune_model3(xgb_base, xgb_param_dist3, X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:11:02.775115Z","iopub.execute_input":"2024-06-16T11:11:02.775841Z","iopub.status.idle":"2024-06-16T11:27:01.273097Z","shell.execute_reply.started":"2024-06-16T11:11:02.775803Z","shell.execute_reply":"2024-06-16T11:27:01.272013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_best_params3","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:27:38.515442Z","iopub.execute_input":"2024-06-16T11:27:38.515884Z","iopub.status.idle":"2024-06-16T11:27:38.522581Z","shell.execute_reply.started":"2024-06-16T11:27:38.515831Z","shell.execute_reply":"2024-06-16T11:27:38.521586Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_param_dist4 = {\n    'n_estimators': [240],\n    'learning_rate': [0.05, 0.1, 0.2],\n    'max_depth': [5],\n    'gamma': [0.7, 0.75, 0.8],\n    'subsample': [0.7, 0.75, 0.8],\n    'colsample_bytree': [0.7, 0.75, 0.8],\n    'eta': [0.1, 0.2, 0.3],\n    'alpha': [0.05, 0.1, 0.2]\n    \n}\n\ndef fine_tune_model4(model, param_distributions, X_train, y_train):\n    random_search4 = RandomizedSearchCV(model, param_distributions, n_iter=10, cv=5, scoring='accuracy', n_jobs=-1)\n    random_search4.fit(X_train, y_train)\n    best_params4 = random_search4.best_params_\n    return best_params4\n\n\nxgb_best_params4 = fine_tune_model4(xgb_base, xgb_param_dist4, X_train, y_train)","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:29:12.094154Z","iopub.execute_input":"2024-06-16T11:29:12.094791Z","iopub.status.idle":"2024-06-16T11:49:02.884939Z","shell.execute_reply.started":"2024-06-16T11:29:12.094759Z","shell.execute_reply":"2024-06-16T11:49:02.883917Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"xgb_best_params4","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:50:18.094671Z","iopub.execute_input":"2024-06-16T11:50:18.095104Z","iopub.status.idle":"2024-06-16T11:50:18.101816Z","shell.execute_reply.started":"2024-06-16T11:50:18.095049Z","shell.execute_reply":"2024-06-16T11:50:18.100913Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"final_xgb = XGBClassifier(**xgb_best_params4, tree_method='hist', device='gpu')\nfinal_xgb.fit(X_train, y_train)\n\n\n\nxgb_val_preds = final_xgb.predict(X_val)\nxgb_val_accuracy = accuracy_score(y_val, xgb_val_preds)\n\nprint(\"XGBoost validation accuracy after fine-tuning:\", xgb_val_accuracy)\n\nxgb_test_preds = final_xgb.predict(X_test)\n\nsubmission_df = pd.DataFrame({'id': test_data['id'], 'label': xgb_test_preds})\nsubmission_df.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2024-06-16T11:50:25.515585Z","iopub.execute_input":"2024-06-16T11:50:25.516389Z","iopub.status.idle":"2024-06-16T11:50:50.579910Z","shell.execute_reply.started":"2024-06-16T11:50:25.516355Z","shell.execute_reply":"2024-06-16T11:50:50.578926Z"},"trusted":true},"execution_count":null,"outputs":[]}]}