{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"%config IPCompleter.greedy=True\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport numpy as np\n\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.decomposition import PCA\n\nfrom sklearn.ensemble import GradientBoostingClassifier\nfrom sklearn.neural_network import MLPClassifier\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.model_selection import GridSearchCV\nfrom sklearn.svm import SVC\n\ndef showNumbers(dataset, labels = None, number = 0):\n    nplots = 10\n    size = 15\n    if number > 0:\n        nplots = 1\n        size = 3\n    fig1, ax1 = plt.subplots(nplots,nplots, figsize=(size,size))\n    \n    if nplots == 1:\n        ax1 = [ax1]\n    else:\n        ax1 = ax1.flatten()\n    for i in range(nplots*nplots):\n        ax1[i].imshow(dataset.values[i+number].reshape((28,28)), cmap=\"gray_r\")\n        ax1[i].axis('off')\n        if (labels is not None):\n            ax1[i].set_title(labels[i+number])\n        else:\n            ax1[i].set_title('True: %s'%dataset.index[i])\n    #fig1.tight_layout()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data = pd.read_csv('../input/Kannada-MNIST/train.csv',index_col='label')\ntest_data = pd.read_csv('../input/Kannada-MNIST/test.csv', index_col='id')\n#!ls ../input/Kannada-MNIST","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_data.describe()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showNumbers(train_data)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def transform_train(dataset):\n    pca = PCA(n_components=50, whiten=True)\n    pca.fit(dataset.values)\n    return pca\ndef transform(dataset, pca):\n    dataset = pd.DataFrame(data=pca.transform(dataset))\n    return dataset\ndef itransform(dataset, pca):\n    columns = ['pixel%i'%i for i in range(28*28)]\n    return pd.DataFrame(data=pca.inverse_transform(dataset), columns=columns)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X = train_data.values\nY = train_data.index\nX_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = 0.05, random_state=1)\npca = transform_train(train_data)\nX_train = transform(X_train, pca)\nX_test = transform(X_test, pca)\n\n#X_train.head(10)\nh = plt.hist(Y)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = SVC(gamma='scale')\n\nmodel.fit(X_train, y_train)\ntrain_score = model.score(X_train, y_train)\ntest_score = model.score(X_test, y_test)\nprint('Train: %.3f test: %0.3f'%(train_score,test_score))\nfig, ax = plt.subplots(1,1, figsize=(5,5))\nр = ax.hist2d(x=model.predict(X_test),y=y_test, cmap=plt.cm.jet)\nax.set_xlabel('Predicted')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showNumbers(itransform(X_test,pca), y_test)#model.predict(X_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"result = pd.DataFrame(data=model.predict(transform(test_data,pca)), columns = ['label'])\nresult.index = test_data.index\nresult.to_csv('submission.csv', index_label='id')\nresult.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"showNumbers(test_data,model.predict(transform(test_data,pca)))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.6"}},"nbformat":4,"nbformat_minor":1}