{"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)\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\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","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import catboost\nprint('catboost version:', catboost.__version__)\nfrom catboost import CatBoostClassifier \n#!pip install --upgrade scikit-learn\n#!pip install --upgrade scikit-learn\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import cross_validate\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.model_selection import validation_curve\nfrom sklearn.model_selection import learning_curve\nfrom sklearn.model_selection import cross_validate\nfrom sklearn.model_selection import validation_curve\nfrom sklearn.model_selection import learning_curve\nfrom pprint import pprint\nfrom time import time\nimport pickle\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport os\nimport  nbconvert\nfrom sklearn.metrics.pairwise import cosine_similarity\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.model_selection import train_test_split\nfrom sklearn import datasets\nfrom sklearn.metrics import confusion_matrix\nfrom sklearn.metrics import precision_score\nimport math as mat\nfrom sklearn import metrics\nfrom sklearn.datasets import make_classification \nimport random\nfrom sklearn.metrics import roc_curve  \nfrom sklearn.metrics import roc_auc_score  \nimport random as rd\nfrom sklearn import linear_model\nfrom sklearn import model_selection\nfrom sklearn.metrics import classification_report\nfrom sklearn.metrics import precision_score\nimport matplotlib.pyplot as plt\nimport pickle\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport os\nfrom sklearn.metrics import confusion_matrix\nimport  nbconvert\nfrom sklearn.metrics.pairwise import cosine_similarity\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn.metrics import precision_score\nfrom sklearn.cluster import KMeans\nfrom sklearn.metrics import pairwise_distances_argmin_min\nfrom sklearn import svm\nfrom sklearn.model_selection import train_test_split\nfrom sklearn import datasets\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.neighbors import RadiusNeighborsClassifier\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn import datasets\nfrom pandas.api.types import CategoricalDtype\nfrom sklearn.neighbors import RadiusNeighborsClassifier\nfrom sklearn.ensemble import AdaBoostClassifier\nfrom sklearn.datasets import make_classification\nimport pyarrow.parquet as pq\nimport os\nimport pyarrow as pa\nimport math\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.naive_bayes import GaussianNB\nfrom sklearn.metrics import precision_score\nfrom sklearn.naive_bayes import MultinomialNB\nfrom sklearn.datasets import make_hastie_10_2\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn import tree\nfrom sklearn.linear_model import LogisticRegression\nfrom sklearn.svm import SVC\nimport xgboost as xgb\nfrom sklearn.metrics import recall_score\nfrom scipy.cluster import hierarchy as sch\nfrom scipy.spatial import distance_matrix \npd.set_option('max_columns',1000)\nfrom sklearn import model_selection   \n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import log_loss\n\nfrom sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier, VotingClassifier \nfrom xgboost import XGBClassifier\nimport catboost\n\n\nfrom sklearn import ensemble\nfrom sklearn import model_selection\n\n\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ndf_train","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_train_X = df_train[[i for i in df_train.columns.tolist() if i != 'label']]/255\ndf_train_X","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_target = df_train[['label']]\ny_target","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(5,4))\ny_target.label.value_counts(normalize=True).plot(kind='bar')\nplt.xticks(rotation=30)\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### TRAINNING A MODEL","metadata":{}},{"cell_type":"code","source":"X_train, X_test, y_train, y_test =train_test_split(df_train_X,y_target,test_size=.3,random_state =23, stratify= y_target)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# MODEL LIGHTGBM---- BOOSTING","metadata":{}},{"cell_type":"code","source":"# !pip install lightgbm\nfrom lightgbm import LGBMClassifier\n\nclf_lgbm = LGBMClassifier(objective='multiclass', random_state=16, \n                          class_weight ='balanced', learning_rate =0.0885,max_depth=12,n_estimator=10000, n_jobs=-1,\n                         num_leaves =50, reg_lambda =0.075,is_unbalance=True)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%%time\nahuste_lgbm = clf_lgbm.fit(X_train, y_train, eval_set=[(X_test, y_test)], eval_metric='multiclass')","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(classification_report(y_test, ahuste_lgbm.predict(X_test)))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = ahuste_lgbm.predict(X_test)\npred","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_test_pred = y_test.copy()\ny_test_pred['predicted'] = pred\ny_test_pred","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"c=pd.crosstab(index = y_test_pred['label'], columns =  y_test_pred['predicted'], margins=True)\nc","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### TESTING DATA","metadata":{}},{"cell_type":"code","source":"df_test = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')\ndf_test","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_test_X = df_test/255\ndf_test_X","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_test_submi = pd.read_csv('/kaggle/input/digit-recognizer/sample_submission.csv')\n#y_test_submi.set_index('ImageId', inplace=True)\ny_test_submi","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_test_submi_end = y_test_submi[['ImageId']]\ny_test_submi_end","metadata":{"collapsed":true,"jupyter":{"outputs_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### PREDICTIONS...","metadata":{}},{"cell_type":"code","source":"pred_test = ahuste_lgbm.predict(df_test_X)\npred_test","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### FINAL DATA TO SUBMISSION","metadata":{}},{"cell_type":"code","source":"y_test_submi_end['label'] = pred_test\ny_test_submi_end","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### SAVE THE DATA","metadata":{}},{"cell_type":"code","source":"y_test_submi_end.to_csv('digit_submission.csv',index=False)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}