{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data_dir = '../input/'\ndef load_data(data_dir, train_row):\n    train = pd.read_csv(data_dir + 'train.csv')\n    print(train.shape)\n    #784列, col[0] = 标注, 剩下的是像素\n    X_train = train.values[0:train_row, 1:]#row 0 - 42000,col取下标1 - 784\n    y_train = train.values[0:train_row, 0]#row 0 - 42000,col取下标是0列 label\n    \n    Pred_test = pd.read_csv(data_dir + 'test.csv').values\n    Pred_test = Pred_test[:train_row]\n    return X_train, y_train, Pred_test\ntrain_row = 42000\nOrigin_X_train, Origin_y_train, Origin_X_test = load_data(data_dir, train_row)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(Origin_X_train.shape, Origin_y_train, Origin_X_test.shape)\nprint(Origin_X_train)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#用图像展示数据集"},{"metadata":{"trusted":true},"cell_type":"code","source":"#展示图片是什么样子的\nrow = 3\nprint(Origin_y_train[row])\nplt.imshow(Origin_X_train[row].reshape(28,28))\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"row = 88\nprint(Origin_y_train[row])\nplt.imshow(Origin_X_train[row].reshape(28,28))\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"classes = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\nrows = 4\n\nfor y, cls in enumerate(classes):\n    idxs = np.nonzero([i == y for i in Origin_y_train])\n    idxs = np.random.choice(idxs[0], rows)\n    for i, idx in enumerate(idxs):\n        plt_idx = i * len(classes) + y + 1\n        plt.subplot(rows, len(classes), plt_idx)\n        plt.imshow(Origin_X_train[idx].reshape((28, 28)))\n        plt.axis('off')\n        if(i == 0):\n            plt.title(cls)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_vali, y_train, y_vali = train_test_split(Origin_X_train, Origin_y_train, test_size = 0.2, random_state = 0)\nprint(X_train.shape, X_vali.shape, y_train.shape, y_vali.shape)#20% 验证集 80% 训练集","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import time\nfrom sklearn.metrics import accuracy_score, classification_report, confusion_matrix\nfrom sklearn.neighbors import KNeighborsClassifier\n\nans_k = 0\nk_range = range(1, 8)\nscores = []\nfor k in k_range:\n    print('k = ' + str(k) + 'begin')\n    knn = KNeighborsClassifier(n_neighbors = k)\n    knn.fit(X_train, y_train)\n    y_pred = knn.predict(X_vali)\n    acc = accuracy_score(y_vali, y_pred)\n    scores.append(acc)\n    print(classification_report(y_vali, y_pred))\n    print(confusion_matrix(y_vali, y_pred))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(k_range, scores)\nplt.xlabel('Value of K')\nplt.ylabel('Testing of accuracy')\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"测试"},{"metadata":{"trusted":true},"cell_type":"code","source":"k = 3\nknn = KNeighborsClassifier(n_neighbors = k)\nknn.fit(Origin_X_train, Origin_y_train)\ny_pred = knn.predict(Origin_X_test)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#验证"},{"metadata":{"trusted":true},"cell_type":"code","source":"Origin_X_test.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(y_pred[120])\nplt.imshow(Origin_X_test[120].reshape((28, 28)))\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 输出"},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.DataFrame({\n    \"ImageId\": list(range(1, len(y_pred) + 1)),\n    \"Label\":y_pred\n}).to_csv('../input/Digit_Recognizer.csv', index = False, header = True)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python (tensorflow)","language":"python","name":"tensorflow"},"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.5.4"}},"nbformat":4,"nbformat_minor":1}