{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import seaborn as sns\nimport pandas as pd, numpy as np, textblob as tb, string as stri\nimport math\nimport csv,re\nimport time\nimport os\nimport pylab as pl\nimport random\nfrom sklearn import model_selection, preprocessing, metrics\nfrom sklearn.preprocessing import StandardScaler\nfrom sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA\nfrom sklearn.naive_bayes import GaussianNB as GNB, MultinomialNB as MNB, BernoulliNB as BNB\nfrom sklearn.tree import DecisionTreeClassifier as DTC\nfrom sklearn.decomposition import PCA\nfrom sklearn.mixture import GaussianMixture as GMM\nfrom sklearn.neighbors import KNeighborsClassifier\nfrom sklearn import datasets, svm, metrics\nfrom sklearn.neighbors import KernelDensity\nfrom sklearn import tree\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.impute import KNNImputer\nimport matplotlib.pyplot as plt\nfrom sklearn.linear_model import LogisticRegression\nle = preprocessing.LabelEncoder()       ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"D0 = pd.read_csv('/kaggle/input/digit-recognizer/train.csv', sep=',', encoding='latin-1')\nD0.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"D1 = D0.drop('label', axis = 1)\nD1.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"Applying PCA to Training and Test Data","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"pca_f = PCA(n_components = 9)\nD2 = pd.DataFrame(pca_f.fit_transform(D1.drop(D1.std()[D1.std() == 0.0].index.values, axis = 1)),  columns = [\"PC\"+str(i) for i in range(1,10)])\nD2.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"D2['Label'] = D0['label']\nD2['Label'].unique()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test = pd.read_csv('/kaggle/input/digit-recognizer/test.csv', sep=',', encoding='latin-1')\ntest.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_pca = pd.DataFrame(pca_f.fit_transform(test.drop(test.std()[test.std() == 0.0].index.values, axis = 1)),  columns = [\"PC\"+str(i) for i in range(1,10)])\ntest_pca.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"KNN Classifier on PCA dataset","execution_count":null},{"metadata":{"trusted":true},"cell_type":"code","source":"D1_x_KNN = D2.iloc[:, 0:-1].values\nD1_y_KNN = D2.iloc[:, -1].values\n\ntrainset_x, valset_x, trainset_y, valset_y = train_test_split(D1_x_KNN,D1_y_KNN, test_size=0.3, random_state = 2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"column3 = np.arange(1,13,2)\ndf3 = pd.DataFrame(column3, columns = [\"K\"])\ntrain_accuracy = []\nval_accuracy = []\nfor k in column3:\n    KNN = KNeighborsClassifier(n_neighbors=k)\n    test_fit_knn = KNN.fit(trainset_x, trainset_y)\n    val_pred_knn = test_fit_knn.predict(valset_x)\n    train_pred_knn = test_fit_knn.predict(trainset_x)\n    val_accuracy.append(metrics.accuracy_score(valset_y, val_pred_knn))\n    train_accuracy.append(metrics.accuracy_score(trainset_y, train_pred_knn))\ndf3['train_accuracy'] = train_accuracy\ndf3['val_accuracy'] = val_accuracy\ndf3","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot('K', 'train_accuracy', data=df3, marker='', color='skyblue', linewidth=4)\nplt.plot('K', 'val_accuracy', data=df3, marker='', color='olive', linewidth=4)\nplt.legend()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print('KNN Classifier + PCA:')\ndf3[df3['val_accuracy'] == df3['val_accuracy'].max()].iloc[[-1]]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"KNN = KNeighborsClassifier(n_neighbors=9)\ntest_fit_knn = KNN.fit(trainset_x, trainset_y)\ntest_pred_knn = test_fit_knn.predict(test_pca)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"column4 = np.arange(1,28001,1)\nsubmit = pd.DataFrame(column4, columns = [\"ImageId\"])\nsubmit['Label'] = pd.DataFrame(test_pred_knn)\nsubmit.tail()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"os.chdir(r'/kaggle/working')\nfrom IPython.display import FileLink\nsubmit.to_csv(r'mnist_pca+knn.csv', index = False, header=True)","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":4}