{"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\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\nfrom sklearn.metrics import mean_squared_error\nfrom math import sqrt\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])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data = pd.read_csv('../input/train.csv',index_col='label')\ntest_data = pd.read_csv('../input/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"train_data.describe()","execution_count":null,"outputs":[]},{"metadata":{"scrolled":false,"trusted":false},"cell_type":"code","source":"showNumbers(train_data, train_data.index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"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":false},"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":false},"cell_type":"code","source":"#model = GradientBoostingClassifier(n_estimators=100)\n#model = MLPClassifier(max_iter = 1500, hidden_layer_sizes=(100))\n#model = RandomForestClassifier(n_estimators = 100)\nmodel = SVC()\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":false},"cell_type":"code","source":"#X_test['Prediction'] = model.predict(X_test)\nshowNumbers(itransform(X_test,pca), y_test)#model.predict(X_test))\n#X_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"showNumbers(test_data, model.predict(transform(test_data,pca)))","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"result = pd.DataFrame(data=model.predict(transform(test_data,pca)), columns = ['Label'])\nresult.index = np.arange(1, len(result)+1)\nresult.to_csv('sub4.csv', index_label='ImageId')\nresult.head()","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.6.4"}},"nbformat":4,"nbformat_minor":1}