{"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":"import pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport seaborn as sns","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"","metadata":{}},{"cell_type":"markdown","source":"### Importing Data","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv(\"../input/digit-recognizer/train.csv\")\ntest = pd.read_csv(\"../input/digit-recognizer/test.csv\")\ntrain.head(2)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X=train.drop([\"label\"],axis=1).values\nY=train[[\"label\"]].values","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(X[0].reshape([28,28]))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.imshow(X[19].reshape([28,28]))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X=X[:3001]    ### Only select limited observation forn anlaysis\nY=Y[:3001]\nprint(X.shape)\nprint(Y.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X=X/255","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Train and Test Split","metadata":{}},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nx_train, x_test, y_train, y_test = train_test_split(X, Y, test_size = 0.15, random_state = 14)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(x_train.shape)\nprint(y_train.shape)\nprint(x_test.shape)\nprint(y_test.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Decision tree Classifier","metadata":{}},{"cell_type":"code","source":"from sklearn.tree import DecisionTreeClassifier\ndt_classifier = DecisionTreeClassifier(criterion = 'entropy',max_depth = 8, random_state = 14)\ndt_classifier.fit(x_train,y_train)\npred_train = dt_classifier.predict(x_train)\npred_test = dt_classifier.predict(x_test)\nfrom sklearn.metrics import accuracy_score\nprint(\"Training Accuracy :\", accuracy_score(pred_train,y_train))\nprint(\"Testing Accuracy :\", accuracy_score(pred_test,y_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Random Forest","metadata":{}},{"cell_type":"code","source":"from sklearn.ensemble import RandomForestClassifier\nrf_classifier = RandomForestClassifier(n_estimators = 10, criterion = 'entropy',max_depth = 10, random_state =14)\nrf_classifier.fit(x_train, y_train)\npred_train = rf_classifier.predict(x_train)\npred_test = rf_classifier.predict(x_test)\nfrom sklearn.metrics import accuracy_score\nprint(\"Training Accuracy :\", accuracy_score(pred_train,y_train))\nprint(\"Testing Accuracy :\", accuracy_score(pred_test,y_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Xgboost Algorithm","metadata":{}},{"cell_type":"code","source":"import xgboost as xgb\nxg_classifier =xgb.XGBClassifier(n_estimators =5)\nxg_classifier.fit(x_train, y_train)\npred_train = xg_classifier.predict(x_train)\npred_test = xg_classifier.predict(x_test)\nfrom sklearn.metrics import accuracy_score\nprint(\"Training Accuracy :\", accuracy_score(pred_train,y_train))\nprint(\"Testing Accuracy :\", accuracy_score(pred_test,y_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## lightgbm Algorithm","metadata":{}},{"cell_type":"code","source":"import lightgbm as lgb\nlg_classifier=lgb.LGBMClassifier(min_child_samples=10)\nlg_classifier.fit(x_train, y_train)\npred_train = lg_classifier.predict(x_train)\npred_test = lg_classifier.predict(x_test)\nfrom sklearn.metrics import accuracy_score\nprint(\"Training Accuracy :\", accuracy_score(pred_train,y_train))\nprint(\"Testing Accuracy :\", accuracy_score(pred_test,y_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Voting Classifier  (Stacking)","metadata":{}},{"cell_type":"code","source":"from sklearn.ensemble import VotingClassifier\nvt_classifier =VotingClassifier(estimators=[(\"dt\",dt_classifier),(\"rf\",rf_classifier),(\"xgb\",xg_classifier)\n                                           ,(\"lgbm\",lg_classifier)],voting='hard')\nvt_classifier.fit(x_train, y_train)\npred_train = vt_classifier.predict(x_train)\npred_test = vt_classifier.predict(x_test)\nfrom sklearn.metrics import accuracy_score\nprint(\"Training Accuracy :\", accuracy_score(pred_train,y_train))\nprint(\"Testing Accuracy :\", accuracy_score(pred_test,y_test))","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Submission for Test data ","metadata":{}},{"cell_type":"code","source":"pred = lg_classifier.predict(test)\npred_df = pd.DataFrame({'ImageId' : [i for i in range(1, len(pred) + 1)], 'Label' : pred})\npred_df.to_csv('submission.csv', header=True, index=False)","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}