{"cells":[{"metadata":{},"cell_type":"markdown","source":"# 1. File Check\n- Check Files and Path for importing dataset.\n- 데이터셋을 불러오기 위한 파일 및 경로 체크를 합니다."},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 2. Import Dataset\n- Import Dataset using previous printed path\n- 앞서 출력된 경로를 바탕으로 데이터셋을 불러옵니다."},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\ntrain_data = pd.read_csv(\"/kaggle/input/digit-recognizer/train.csv\")\ntest_data = pd.read_csv(\"/kaggle/input/digit-recognizer/test.csv\")\nsubmission = pd.read_csv(\"/kaggle/input/digit-recognizer/sample_submission.csv\")","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"- Let's Check that the dataset is imported well\n- 데이터셋이 잘 불러와졌는지 함께 확인해볼까요?"},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data.head(3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_data.head(3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.head(3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_data.info()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"- All Right! They are imported well\n- 좋아요 잘 불러와졌군요"},{"metadata":{},"cell_type":"markdown","source":"# 3. Observe Dataset\n- Let's look at the dataset together\n- 자 그럼 같이 데이터셋을 살펴볼까요?"},{"metadata":{},"cell_type":"markdown","source":"## 0) Split Data\n- First, Split Data into labels and images\n- 일단 데이터를 이미지와 라벨로 먼저 분리합니다.\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"labels = train_data[\"label\"] \nimages = train_data.drop(columns=[\"label\"])","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1) Show Images"},{"metadata":{"trusted":true},"cell_type":"code","source":"from matplotlib import pyplot as plt\nimport numpy as np\n\nfor img in images.to_numpy()[:10]:\n    plt.figure()\n    plt.imshow(np.uint8(img.reshape(28,28)))","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2) Introduce t-SNE\n- t-SNE is basic dimensionality reduction method for visualization\n- t-SNE 는 시각화를 위한 간단한 차원 축소 방법입니다.\n\n* Ref & More : https://bcho.tistory.com/1210\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"labels.head(3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"images.head(3)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3) Use t-SNE"},{"metadata":{},"cell_type":"markdown","source":"- It takes long times, So use only 2000 data\n- 시간이 오래 걸리는 분석이므로 2000개의 데이터만 사용해봅시다."},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.manifold import TSNE\n\nmodel = TSNE(random_state=0)\nresult = model.fit_transform(images[:2000])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import seaborn as sns\n\nsns.scatterplot(\n    x = result[:,0], \n    y = result[:,1], \n    hue = labels[:2000], \n    palette = sns.hls_palette(10), \n    legend = 'full'\n);","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 4. Modeling\n- Let's use Logistic Regression Model.\n- 이진 회귀 모델을 사용해 봅시다."},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.linear_model import LogisticRegression\nlr = LogisticRegression()\nlr.fit(images, labels)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"lr.predict(test_data)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# 5. Submit\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['Label'] = lr.predict(test_data)\nsubmission","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv('submission.csv', index=False)","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}