{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 09wk-1: Numpy와 Pandas의 활용\n",
"\n",
"최규빈 \n",
"2023-05-01\n",
"\n",
"
\n",
"\n",
"# 강의영상\n",
"\n",
"> youtube:\n",
"> \n",
"\n",
"# imports"
],
"id": "6f980ee2-b662-4301-8cfa-c4a6bf6c5b08"
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd \n",
"import matplotlib.pyplot as plt \n",
"import urllib.request"
],
"id": "8bc45346-052d-4da4-beb6-aec2d6167161"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 회귀분석\n",
"\n",
"`1--7`.\n",
"\n",
"`1`. $x_i$가 아래와 같이 주어졌다고 가정하자."
],
"id": "7a706cb2-fdf7-4357-93b3-04bcfc590fd0"
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"x = np.array([0.00983, 0.01098, 0.02951, 0.0384 , 0.03973, 0.04178, 0.0533 ,\n",
" 0.058 , 0.09454, 0.1103 , 0.1328 , 0.1412 , 0.1497 , 0.1664 ,\n",
" 0.1906 , 0.1923 , 0.198 , 0.2141 , 0.2393 , 0.2433 , 0.3157 ,\n",
" 0.3228 , 0.3418 , 0.3552 , 0.3918 , 0.3962 , 0.4 , 0.4482 ,\n",
" 0.496 , 0.507 , 0.53 , 0.5654 , 0.582 , 0.5854 , 0.5854 ,\n",
" 0.6606 , 0.7007 , 0.723 , 0.7305 , 0.7383 , 0.7656 , 0.7725 ,\n",
" 0.831 , 0.8896 , 0.9053 , 0.914 , 0.949 , 0.952 , 0.9727 ,\n",
" 0.982 ])"
],
"id": "72bc70cb-964c-4f64-a535-4cf8fd6ab0d5"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"아래의 수식에 따라 $y_i$를 생성하라.\n",
"\n",
"- $y_i = 2+3x_i +\\epsilon_i,\\quad \\epsilon_i \\overset{iid}{\\sim} N(0,1)$\n",
"\n",
"$(x_i,y_i)$를 산점도를 이용하여 시각화하라.\n",
"\n",
"(풀이)"
],
"id": "f3009f11-79c3-406e-bfe2-2be279c42472"
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"y = 2+3*x + np.random.randn(50) "
],
"id": "cc4d9ead-a7fc-4734-9f85-fb1dddb8698b"
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\nSUVORK5CYII=\n"
}
}
],
"source": [
"plt.plot(x,y,'o',label=r'$(x_i,y_i)$')\n",
"plt.legend()"
],
"id": "26a8d9a3-6ee3-4618-aae6-152419e0733d"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`2`. `1`과 같은 자료를 잘 표현할 수 있는 적절한 추세선\n",
"$(x_i, \\hat{y}_i)$를 그리기 위하여 아래의 수식을 고려하자.\n",
"\n",
"- $\\hat{y}_i = ax_i+b$\n",
"\n",
"a,b를 각각 아래의 표에 의하여 선택하였을 경우 추세선을 문제하단에 명시된\n",
"요구사항에 맞추어 시각화하라.\n",
"\n",
"| | $a$ | $b$ |\n",
"|:-----:|:-----:|:---:|\n",
"| \\(a\\) | $1$ | $0$ |\n",
"| \\(b\\) | $2.5$ | $2$ |\n",
"| \\(c\\) | $3$ | $2$ |\n",
"\n",
"**요구사항**\n",
"\n",
"- $(x_i,y_i)$를 산점도로 그리고 각 (a),(b),(c)에 대한\n",
" $(x_i,\\hat{y}_i)$를 lineplot으로 겹쳐그릴 것\n",
"- 범례를 포함할 것"
],
"id": "131e55ea-70e6-4665-b8f4-17f898661eaf"
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n"
}
}
],
"source": [
"plt.plot(x,y,'o',label=r'$(x_i,y_i)$')\n",
"plt.plot(x,1*x+0,'--',label=r'(a) $(x_i,\\hat{y}_i)$')\n",
"plt.plot(x,2.5*x+2,'--',label=r'(b) $(x_i,\\hat{y}_i)$')\n",
"plt.plot(x,3*x+2,'--',label=r'(c) $(x_i,\\hat{y}_i)$')\n",
"plt.legend()"
],
"id": "47a01002-de75-434b-b2a5-681134588bf8"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`3`. 아래를 각각 계산하라.\n",
"\n",
"`(a)` $\\frac{1}{n}\\sum_{i=1}^{n}(y_i-x_i)^2$\n",
"\n",
"`(b)` $\\frac{1}{n}\\sum_{i=1}^{n}(y_i-2-2.5x_i)^2$\n",
"\n",
"`(c)` $\\frac{1}{n}\\sum_{i=1}^{n}(y_i-2-3x_i)^2$\n",
"\n",
"가장 작은 값을 가지는 것은 무엇인가?\n",
"\n",
"(풀이)"
],
"id": "55edf863-5f2a-497c-8a06-4383f44c9607"
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"np.mean((y-(1*x+0))**2), np.mean((y-(2.5*x+2))**2), np.mean((y-(3*x+2))**2)"
],
"id": "258cd06f-aa42-4293-aaee-589d2acd81da"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"가장 작은 값을 가지는 것은 (c)이다.\n",
"\n",
"`4`. 3의 결과를 근거로 (a)-(c)중 가장 적절한 추세선을 판단하고 적절한\n",
"순서대로 나열하라.\n",
"\n",
"`(풀이)`\n",
"\n",
"3-(a),(b),(c)는 각각\n",
"\n",
"- $\\hat{y}_i=x_i$\n",
"- $\\hat{y}_i=2+2.5x_i$\n",
"- $\\hat{y}_i=2+3x_i$\n",
"\n",
"일 경우\n",
"\n",
"$${\\tt mse}({\\boldsymbol y}, \\hat{\\boldsymbol y}) = \\frac{1}{n}\\sum_{i=1}^{n}(y_i -\\hat{y}_i)^2$$\n",
"\n",
"를 계산한 것이라 해석할 수 있다. 그런데\n",
"${\\tt mse}({\\boldsymbol y}, \\hat{\\boldsymbol y})$의 값은\n",
"\n",
"- $y_1 \\approx \\hat{y}_1$\n",
"- $y_2 \\approx \\hat{y}_2$\n",
"- $\\dots$\n",
"- $y_n \\approx \\hat{y}_n$\n",
"\n",
"일수록 작은 값을 가진다. 그리고 위의 조건은 더 적절하게 추세선을\n",
"그렸을때 만족된다. 요약하면\n",
"\n",
"- 적절한 추세선을 그림 $\\Rightarrow$ $y_i \\approx \\hat{y}_i$\n",
" $\\Rightarrow$ ${\\tt mse}({\\boldsymbol y}, \\hat{\\boldsymbol y})$ 값이\n",
" 작아짐\n",
"\n",
"와 같은 관계가 있음을 파악할 수 있다. 따라서\n",
"${\\tt mse}({\\boldsymbol y}, \\hat{\\boldsymbol y})$의 값이 작을수록 적절한\n",
"추세선이라 생각할 수 있다.\n",
"\n",
"`5`. 아래와 같은 수식을 이용하여 $\\hat{\\beta}_0, \\hat{\\beta}_1$ 을\n",
"계산하라.\n",
"\n",
"$$\\begin{bmatrix} \\hat{\\beta}_0 \\\\ \\hat{\\beta}_1 \\end{bmatrix} = ({\\bf X}^T {\\bf X})^{-1}{\\bf X}^T {\\boldsymbol y}, \\quad {\\bf X}=\\begin{bmatrix} 1 & x_1 \\\\ 1 & x_2 \\\\ \\dots \\\\ 1 & x_n \\end{bmatrix}$$\n",
"\n",
"`(풀이)`"
],
"id": "106b038c-371a-42f2-ab67-aad89bdd2673"
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [],
"source": [
"X = np.stack([[1]*50 ,x],axis=1)\n",
"np.linalg.inv(X.T @ X)@X.T@y "
],
"id": "8909caef-073e-4227-842d-f4442e26ac18"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\hat{\\beta}_0=1.97914281$ 이고 $\\hat{\\beta}_1= 2.90834079$ 이다.\n",
"\n",
"`6`. `5`에서 계산된 $\\hat{\\beta}_0, \\hat{\\beta}_1$을 각각\n",
"$b=\\hat{\\beta}_0, a=\\hat{\\beta}_1$으로 생각하고 적절한 추세선\n",
"$(x_i, \\hat{y}_i)$를 그려라. (단, $\\hat{y}_i=ax_i+b$ 이다)\n",
"\n",
"`(풀이)`"
],
"id": "ca74f46d-5761-47e0-b495-63d838a627c7"
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [],
"source": [
"b, a = np.linalg.inv(X.T @ X)@X.T@y \n",
"yhat = a*x +b "
],
"id": "363dd1fc-c037-447c-b5c1-938b29c6e48b"
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAD4CAYAAADFAawfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90\nbGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsT\nAAALEwEAmpwYAAAir0lEQVR4nO3de3hV1Z3/8feXkEC4iVwUCXJXEEEBU28oFlCx2ipFp1OrVatP\nsS1j23G0xRntTzsdpY+Pts6M7fyYai+/emurUlpb8QJqRbSAqKiAAl5IREEkihJICOv3xzohCSbk\nJDl777XP+byeh4ecffY5+W4257vXWfu71jLnHCIiEq5OSQcgIiL7p0QtIhI4JWoRkcApUYuIBE6J\nWkQkcJ2jeNN+/fq5oUOHRvHWIiJ5acWKFe875/o391wkiXro0KEsX748ircWEclLZvZWS8+p60NE\nJHBK1CIigVOiFhEJXCR91M2pra2loqKCnTt3xvUrg9O1a1cGDRpEcXFx0qGISIrElqgrKiro2bMn\nQ4cOxczi+rXBcM6xdetWKioqGDZsWNLhiEiKxJaod+7cWbBJGsDM6Nu3L1u2bEk6FBFpg/krK7l5\n4VreqapmYO9Srp4+ihkTymKNIbZEDRRskq5X6McvkjbzV1ZyzQOrqK6tA6CyqpprHlgFEGuy1s1E\nEZEW3Lxw7d4kXa+6to6bF66NNQ4lahGRFrxTVd2m7VFRohYRacHA3qVt2h6VgkvU1dXVnHLKKdTV\n1bW+czvU1NQwefJkdu/eHcn7i0h8rp4+itLioibbSouLuHr6qFjjCDZRz19ZyaS5ixg25yEmzV3E\n/JWVOXnfO++8k5kzZ1JUVNT6zu1QUlLCtGnTuO+++yJ5fxGJz4wJZdw0cxxlvUsxoKx3KTfNHBd7\n1UdWidrMepvZH8xsjZmtNrMTogyq/k5rZVU1joY7rblI1nfddRfnnHMOAFOmTOHRRx8F4Nprr+WK\nK65o9fUvv/wyJ5544t7Hzz//PNOmTWuyz4wZM7jrrrs6HKuIJG/GhDKWzJnKG3PPYsmcqbEnaci+\nPO824GHn3HlmVgJ0izCm/d5p7cg/Uk1NDRs2bKB+CtYbbriBH/zgB2zevJmVK1eyYMGCVt9jzJgx\nbNiwgbq6OoqKirjyyiu59dZbm+wzduxYli1b1u44RUQaa7VFbWYHAJOBOwCcczXOuaoog4rqTuv7\n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\nCPfNqquoKqUAAAAASUVORK5CYII=\n"
}
}
],
"source": [
"plt.plot(x,y,'o',label=r'$(x_i,y_i)$')\n",
"plt.plot(x,yhat,'--',label=r'$(x_i,\\hat{y}_i)$')\n",
"plt.legend()"
],
"id": "35857d1c-1994-4f15-9abe-d0b12e037211"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`7`. 4의 기준에 따르면, $(a,b)=(3,2)$ 일때 만들어지는 추세선과\n",
"$(a,b)=(\\hat{\\beta}_1,\\hat{\\beta}_0)$ 일때 만들어지는 추세선은 어떤 것이\n",
"더 적절한가?\n",
"\n",
"`(풀이)`"
],
"id": "46b06f67-1db5-41e6-9e15-b62d1334d37d"
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"np.mean((y-(3*x+2))**2), np.mean((y-yhat)**2)"
],
"id": "e4c90c43-3b82-4205-bee8-c45b4d7247ec"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# MNIST data\n",
"\n",
"아래는 0~9가지의 숫자이미지가 저장된 이미지데이터를 불러오는 코드이다."
],
"id": "6c10974b-8666-4a0c-8595-a34946d63f5c"
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"# URL 설정\n",
"url = 'https://github.com/guebin/PP2023/raw/main/posts/02_PY4DS/mnist.npz'\n",
"\n",
"# URL에서 파일 다운로드\n",
"urllib.request.urlretrieve(url, './mnist.npz')\n",
"\n",
"# 데이터 로드\n",
"data = np.load('./mnist.npz')\n",
"xtrain, ytrain, xtest, ytest = data['x_train'], data['y_train'], data['x_test'], data['y_test']"
],
"id": "f7d26003-a978-4cf0-91b2-e36087a2a38d"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"아래는 데이터에 대한 설명이다.\n",
"\n",
"- 전체의 이미지의 수는 70000개이며, 60000개의 이미지 ${\\tt xtrain}$에\n",
" 10000개의 이미지는 ${\\tt xtest}$에 저장되어 있다.\n",
"- 이미지에 대한 라벨은 각각 ${\\tt ytrain}$과 $\\tt ytest$에 저장되어\n",
" 있다. 따라서 $\\tt ytrain$에는 60000개의 이미지에 해당하는 라벨이,\n",
" $\\tt ytest$에는 10000개의 이미지에 해당하는 라벨이 기록되어 있다.\n",
"- 보통 분석에서는 60000개의 이미지를 가지고 라벨을 맞추는 “훈련”을\n",
" 하고 (${\\tt xtrain}$을 이용하여 ${\\tt ytrain}$을 맞추는 방법을\n",
" 학습하고), 그러한 훈련이 잘 되었는지 10000개의 이미지를 이용하여\n",
" “테스트”한다.\n",
"- 위와 같은 의미로 $({\\tt xtrain}, {\\tt ytrain})$ 을 training data\n",
" set, $({\\tt xtest},{\\tt ytest})$ 를 test data set 이라고 부른다.\n",
" (ref:\n",
" [위키참고](https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets))\n",
"\n",
"아래는 이미지자료와 시각화에 대한 설명이다.\n",
"\n",
"- 각 이미지는 (28,28) 픽셀의 흑백이미지이다. 따라서 각 이미지는\n",
" (28,28,3) 이 아니라 (28,28) 의 shape을 가진 텐서로 구성되어있다.\n",
"- 흑백이미지를 시각화 하기 위해서는 `plt.imshow(img, cmap='gray')`를\n",
" 이용한다. 여기에서 ${\\tt img}$은 임의의 2차원 텐서이며 이 예제의\n",
" 경우 (28,28)의 shape을 가진다.\n",
"\n",
"아래는 ${\\tt xtrain}$의 두번째 이미지, 즉 ${\\tt xtrain[1,:,:]}$를\n",
"확인하는 코드의 예시이다."
],
"id": "0e3e1397-bcc6-41c2-b39a-6f60e359c54b"
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n"
}
}
],
"source": [
"# plt.imshow(xtrain[1,:,:],cmap='gray')\n",
"plt.imshow(xtrain[1],cmap='gray') ## 같은코드임"
],
"id": "5d1eb0c2-c7a5-4bbb-b860-408747fd7863"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"이 이미지에 대한 label은 ${\\tt ytrain[1]}$의 값으로 확인가능하다."
],
"id": "8e4d6b7f-a140-4a91-8fb5-31faa93c7270"
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"ytrain[1]"
],
"id": "43f9b361-6543-499c-b060-260bd3819f26"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"이미지와 라벨을 한번에 표현하는 코드는 아래와 같이 작성가능하다."
],
"id": "c087244e-a154-47d2-939e-1c163108ebb1"
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n"
}
}
],
"source": [
"plt.imshow(xtrain[1],cmap='gray')\n",
"plt.title('label={}'.format(ytrain[1]));"
],
"id": "39c31132-a451-4c8b-b979-08628de4923f"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"아래는 10개의 이미지를 라벨과 함께 출력하는 코드의 예시이다."
],
"id": "318146fc-4de9-49c8-9a68-6fe40b674974"
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n5vLpp5/u8uDBg12+4447XL7uuutcfvXVV8s4OgAAmj+eQQYAAAASmCADAAAACUyQAQAAgAQLIVTv\nZGbVO1kFtG7d2uW2bdsWdf94LemPfvQjl7fZZhuXf/3rX7t81VVXuTxgwACXv/nmG5cvv/xyl3/3\nu981fbANCCFYSQdIqd5705idd97Z5SeeeMLlNm3aFHW8L774wuWNN9441bjKhd7Up/3228/lu+++\n2+V99tnH5bfeequs569Fb+hMYRdccIHL8b8prVr559z23Xdfl5966qmKjCvhlRBCj0qfJEZv6l6D\nveEZZAAAACCBCTIAAACQwAQZAAAASGhR+yBvscUWLq+11lou9+rVy+W9997b5Q033NDlo446qnyD\nkzR37lyXr732WpePOOIIl7/88kuXX3vtNZersN4LKeyxxx4u33///S7Ha9vj1wnE3/fly5e7HK85\n7tmzp8vxvsjx/ZHTu3dvl+Ov68SJE6s5nKrbfffdXZ42bVqNRoJaGTp0qMvnnHOOy6tWrSp4/2q+\nxgkoN55BBgAAABKYIAMAAAAJTJABAACAhGa9Brmx/WWL3ce43OL1W/Eek1999ZXL8T6k8+bNc/nz\nzz93udz7kqJp4v2td911V5fvuusulzt16lTU8WfNmuXylVde6fKECRNcfu6551yOe3bZZZcVdf6W\nIt7DtVu3bi43tzXI8R62W265pcudO3d22awm21ujiuLv+TrrrFOjkaCSfvrTn7p83HHHuRzveb79\n9tsXPN6IESNc/uijj1yOX98V/5v40ksvFTx+tfAMMgAAAJDABBkAAABIYIIMAAAAJDTrNcjvv/++\ny59++qnL5V6DHK+bWbRokcs/+9nPXI73n73zzjvLOh7Uxs033+zygAEDynr8eE3z+uuv73K8/3W8\nlnbHHXcs63iaq8GDB7v8wgsv1Ggk1RGvhT/55JNdjtcJvvnmmxUfE6qrT58+Lp9xxhkFbx934OCD\nD3b5448/Ls/AUFbHHnusy2PGjHG5ffv2LsevN3jyySdd7tChg8u///3vC54/Pl58//79+xe8f7Xw\nDDIAAACQwAQZAAAASGCCDAAAACQ06zXIn332mcsjR450OV4v9d///d8uX3vttQWPP336dJf79u3r\n8pIlS1yO9w4cPnx4weOjPuy2224u/+IXv3C5sf1i4zXDDz30kMtXXXWVy/GeknFv4/2wf/7znxc1\nHuTE+wI3d7fcckvBz8f7b6P+xfvR3nbbbS439jqdeK3pnDlzyjMwlGSNNfzUrkePHi7/6U9/cjne\nu//pp592+aKLLnL52WefdXnttdd2+b777nN5//33Lzjel19+ueDna6Vl/QsAAAAANIIJMgAAAJDQ\n6ATZzMaZ2QIzm5H4WDszm2Jms/L/3aiyw0S9oTdIg94gDXqDNOgNCrEQQuEbmPWW9JWkO0IIO+Q/\ndqWkz0IIl5vZKEkbhRDOafRkZoVPVmVt2rRx+csvv3Q53s/2xBNPdDl+v/J77rmnjKPLnhBCkxev\nNufe7Lzzzi4/8cQTLse9ij3yyCMux/skx+97H+9bHK8VXbhwYcHzrVy50uWlS5cWPN+rr75a8HjF\nqpfexF/neN/jBx54wOVBgwYVc/jMe/75513u2bOny7169XL5xRdfrOh4atGbrP2sqbR4LeoJJ5xQ\n8Pbx/rf77bdfuYdUqldCCD0av1lOc+3N0KFDXW7s9QVTpkxxOd4nefHixQXvH8+Fxo8fX/D2H374\nocvxGunG/k2rgAZ70+gzyCGEpyV9Fn34MEm356/fLunwUkeH5oXeIA16gzToDdKgNygk7RrkjiGE\nefnr8yV1LNN40LzRG6RBb5AGvUEa9AaSyrDNWwghFPrzgpkNkzSs1POgeaE3SIPeII1CvaEzWB16\n07KlnSB/bGadQgjzzKyTpAWru2EIYayksVL21uk0tq7miy++KPj5k08+2eV7773X5VWrVqUbWPNV\nl73ZeuutXY730473Cv3kk09cnjdvnsu33367y1999ZXLf/3rXwvmUq277rou/+Y3v3F54MCBZT1f\nGVSlN/369XM5/jo1Nx07+ifGttxyy4K3j9cN1oEm9SZLP2sqrX379i7Ha47jf7MWLVrk8sUXX1yR\ncWVM3fUm3qf4vPPOczl+rdkNN9zg8gUXXOByY3Oj2Pnnn1/U7c8880yXa7DmuEnSLrGYLGlI/voQ\nSZPKMxw0c/QGadAbpEFvkAa9gaSmbfN2j6QXJG1jZnPN7ERJl0vqa2azJPXJZ+B79AZp0BukQW+Q\nBr1BIY0usQghDFjNpzK3vwuyg94gDXqDNOgN0qA3KKTkF+k1Z6NHj3Z5t912czneP7ZPnz4uP/bY\nYxUZFyorfl/5q666yuV4rWq8f/bgwYNdjt9nPmtrW7fYYotaDyETttlmm4Kff/3116s0kuqIex2v\nSX777bddjnuO7OvSpYvL999/f1H3v+6661yeOnVqqUNCGVx44YUux2uOly9f7vKjjz7q8jnn+G2d\nv/7664LnW2eddVzef//9XY7/DTHzW5jHa9cnTaqPVSu81TQAAACQwAQZAAAASGCCDAAAACSwBrmA\nJUuWuBzve/zqq6+6HL+vfbxeK16L+sc//tHleK9C1MYuu+zicrzmOHbYYYe5/NRTT5V9TKi9adOm\n1XoIBbVp08blAw880OXjjjvO5XgdYSzeWzXeExfZF3dgxx13LHj7xx9/3OUxY8aUfUwo3oYbbujy\naaed5nI8d4jXHB9++OFFna9r164u33333S7Hr8eK/fnPf3b5yiuvLOr8WcEzyAAAAEACE2QAAAAg\ngQkyAAAAkMAa5CLMnj3b5aFDh7p82223uTxo0KCCeb311nP5jjvucHnevHlphokSXXPNNS7HezrG\na4yzvua4VSv/e/CqVatqNJL61q5du5Luv9NOO7kc9yreR32zzTZzea211nJ54MCBLsff53hv05de\nesnlZcuWubzGGv6fg1deeUWoL/Fa08svL/wmcM8++6zLQ4YMcfmLL74oy7hQmvj//fbt2xe8/Zln\nnunyP/zDP7h8/PHHu3zooYe6vMMOO7i8/vrruxyveY7zXXfd5XL8eq56wTPIAAAAQAITZAAAACCB\nCTIAAACQwBrkEkycONHlWbNmuRyvZd1vv/1cvvTSS13u3Lmzy5dcconLH374YapxorCDDz7Y5Z13\n3tnleH3V5MmTKz2ksorXHMePZ/r06VUcTXbFa3bjr9NNN93k8nnnnVfU8eM9aOM1yCtWrHB56dKl\nLs+cOdPlcePGuRzvsx6vjf/4449dnjt3rsvrrruuy2+++aaQbV26dHH5/vvvL+r+7777rstxR5AN\ny5cvd3nhwoUud+jQweX//d//dbnY91j46KOPXF68eLHLnTp1cvmTTz5x+aGHHirqfFnFM8gAAABA\nAhNkAAAAIIEJMgAAAJDAGuQymjFjhsvHHHOMy4cccojL8b7Jp5xyisvdunVzuW/fvqUOEQ2I117G\ne04uWLDA5XvvvbfiYyrG2muv7fLo0aML3v6JJ55w+dxzzy33kOrSaaed5vKcOXNc7tWrV0nHf//9\n911+8MEHXX7jjTdcfvHFF0s6X2zYsGEux+sW4/WoyL5zzjnH5WL3OG9sn2Rkw6JFi1yO97v+y1/+\n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\nSBSKYgAAAABJRU5ErkJggg==\n"
}
}
],
"source": [
"fig, ax = plt.subplots(2,5,figsize=(10,5))\n",
"\n",
"ax[0][0].imshow(xtrain[0],cmap='gray'); ax[0][0].set_title('label={}'.format(ytrain[0]));\n",
"ax[0][1].imshow(xtrain[1],cmap='gray'); ax[0][1].set_title('label={}'.format(ytrain[1]));\n",
"ax[0][2].imshow(xtrain[2],cmap='gray'); ax[0][2].set_title('label={}'.format(ytrain[2]));\n",
"ax[0][3].imshow(xtrain[3],cmap='gray'); ax[0][3].set_title('label={}'.format(ytrain[3]));\n",
"ax[0][4].imshow(xtrain[4],cmap='gray'); ax[0][4].set_title('label={}'.format(ytrain[4]));\n",
"\n",
"ax[1][0].imshow(xtrain[5],cmap='gray'); ax[1][0].set_title('label={}'.format(ytrain[5]));\n",
"ax[1][1].imshow(xtrain[6],cmap='gray'); ax[1][1].set_title('label={}'.format(ytrain[6]));\n",
"ax[1][2].imshow(xtrain[7],cmap='gray'); ax[1][2].set_title('label={}'.format(ytrain[7]));\n",
"ax[1][3].imshow(xtrain[8],cmap='gray'); ax[1][3].set_title('label={}'.format(ytrain[8]));\n",
"ax[1][4].imshow(xtrain[9],cmap='gray'); ax[1][4].set_title('label={}'.format(ytrain[9]));\n",
"\n",
"fig.tight_layout()\n"
],
"id": "17405393-3dbc-4771-be5f-b54fdadf21f5"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(1)` 70000개의 이미지중 0~9에 해당하는 이미지는 각각 몇장씩 들어있는가?\n",
"\n",
"(풀이)"
],
"id": "7c5b4328-293c-4d69-99b7-ea0bc3868b20"
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [],
"source": [
"_y = ytrain.tolist()+ytest.tolist()"
],
"id": "827c7a10-385e-47ef-be4d-ca970969dcec"
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"{s:_y.count(s) for s in set(_y)}"
],
"id": "b197d528-afca-4b5f-a2a6-29a36e4f6ed0"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(2)` ${\\tt xtrain}$에서 손글씨 0을 의미하는 이미지만을 모아서 새로운\n",
"텐서 ${\\tt xtrain0}$를 만들어라. 이 텐서에서 처음과 마지막 이미지를\n",
"출력하라.\n",
"\n",
"**hint:** ${\\tt xtrain0}$ 의 shape은 (5923,28,28)이어야 한다.\n",
"\n",
"(풀이)"
],
"id": "7a3daba6-d641-4ca0-a056-b6d9a0f7ba76"
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [],
"source": [
"xtrain0 = xtrain[ytrain==0]\n",
"xtrain0.shape"
],
"id": "3743e66a-7f15-4506-bc5c-f89e0972a897"
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n"
}
}
],
"source": [
"plt.imshow(xtrain0[0],cmap='gray') # 처음이미지"
],
"id": "b5d0fcdc-c46a-4210-b09d-e0602fe6abe9"
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\nTkSuQmCC\n"
}
}
],
"source": [
"plt.imshow(xtrain0[-1],cmap='gray') # 마지막이미지"
],
"id": "4f0b72cf-9a5c-48d1-993a-22de33bda1b8"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(3)` ${\\tt xtrain}$에서 손글씨 0을 의미하는 이미지의 평균을 계산하라.\n",
"즉 아래를 계산하라.\n",
"\n",
"- ${\\tt xtrain0mean} = \\frac{1}{5923}\\sum_{i=1}^{5923} {\\tt xtrain0[i, :, :]}$\n",
"\n",
"계산결과를 출력하라.\n",
"\n",
"(풀이)"
],
"id": "0188cf78-7631-4af0-848e-5f427deb05dc"
},
{
"cell_type": "code",
"execution_count": 131,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "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\n"
}
}
],
"source": [
"plt.imshow(xtrain0.mean(axis=0),cmap='gray')"
],
"id": "0713aaac-51a2-4018-9e8a-9d697eb65892"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(4)` ${\\tt xtrain}$에서 각 라벨에 대한 평균이미지를 계산하고 계산결과를\n",
"${\\tt imgmean}$에 길이가 10인 `list`로 저장하라. 즉 ${\\tt imgmean}$은\n",
"아래와 같은 자료구조를 가지고 있어야 한다.\n",
"\n",
"- ${\\tt imgmean}=\\big[{\\tt imgmean[0]},\\dots, {\\tt imgmean[9]}\\big]$\n",
"- ${\\tt imgmean[0]}, \\dots, {\\tt imgmean[9]}$ 는 각각 (28,28)의\n",
" shape을 가진 numpy array\n",
"- ${\\tt imgmean[0]}, \\dots, {\\tt imgmean[9]}$ 는 각각 숫자 0,1, …, 9의\n",
" 평균이미지를 의미\n",
"\n",
"${\\tt imgmean[0]},\\dots, {\\tt imgmean[9]}$를 시각화 하라.\n",
"\n",
"(풀이)"
],
"id": "b200b920-7bb2-41ef-bfbc-59b302a861f5"
},
{
"cell_type": "code",
"execution_count": 133,
"metadata": {},
"outputs": [],
"source": [
"imgmean = [xtrain[ytrain==i].mean(axis=0) for i in range(10)] "
],
"id": "d9503a9f-1eac-450e-84bf-e9709983eace"
},
{
"cell_type": "code",
"execution_count": 137,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAE5CAYAAACNjdZXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90\nbGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsT\nAAALEwEAmpwYAAA6rUlEQVR4nO3d249dd3n/8edL4oQkdiCxHWdiO7aT2M6JFERKW7V3/JAoN3BV\nwUWVSki5aSWQuCC0/0CuuGpvIoGSSoiqEkjkDqURUlW1BRIKJLZxfD5lbMeHHAg5wvpdeJKu77vj\n/cxaM3vvtWfeL8mKn9kze6+917PX+mb7s54pTdOEJEmSpCs+Mu0NkCRJkobEBbIkSZLU4gJZkiRJ\nanGBLEmSJLW4QJYkSZJaXCBLkiRJLctaIJdSPl9KOVhKOVxKeWylNkqrm32jPuwb9WHfqA/7RqXv\nHORSyjUR8VJEfC4iTkfEzyPiK03T7B/xMw5dnmFN05Tl3od9s/bYN+pjGn1jz8y8C03TbF7undg3\na86ifbOcT5A/ExGHm6Y52jTNuxHxLxHxxWXcn9YG+0Z92Dfqw75ZW06s0P3YN2vLon2znAXy1og4\n1apPL3ytUkp5tJTyXCnluWU8llYP+0Z92DfqI+0be0aLsG8U1477AZqmeSIinojwnyG0dPaN+rBv\n1JU9oz7sm9VvOZ8gn4mI7a1628LXpFHsG/Vh36gP+0Z92Dda1gL55xGxu5Syq5RyXUR8OSKeXpnN\n0ipm36gP+0Z92Dfqw75R/4hF0zTvl1L+LiJ+HBHXRMR3m6bZt2JbplXJvlEf9o36sG/Uh32jiGWM\neev1YOZ0ZtpKjF3qw76ZbfaN+phG39gzM+/5pmkenvSD2jczb9G+GftFepKkiFLKitYZfvjB+g9/\n+MPI2yVpLfNXTUuSJEktLpAlSZKkFhfIkiRJUosZ5BHGnRnMMoJdv98M4WzI+oK3d92v9sFkcD99\n5CP15w3r1q2r6htuuGFkfeONN1b1TTfdNPL7r722Pnxzv7/zzjtV/dvf/raqX3/99ar+3e9+V9Vv\nvfVWVb///vtV/fvf/z40XlmPse56Tup6Tsly656T1qasr7peP5GZVF/5CbIkSZLU4gJZkiRJanGB\nLEmSJLWsqQwyczDXXHNNVTMz+NGPfrSqP/axj1X1rbfeOvJ21swMMiPITODFixer+vLlyyO//+23\n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\nfmIfMivK72cW9OjRo1XNvjPHNx5d369ZhpjXTPD4xbwoZ40yd8jjHb+fxzvOGmUfse+6Zo6z4xOt\nhUwyX6Osp/gacnY1XyPOsz1+/HhVnzt3buT2MQvK++f2sed4LMt6KMsgr9VjWZZB5rHitttuq2oe\nO3jsYQaZc4t57GJfcAb7fffdV9UPPvhgVfPYc/bs2arm82PGmdvD3ymRXa+1UscWP0GWJEmSWlwg\nS5IkSS0ukCVJkqSWmcogM7eyadOmqmbWkzkc5lKyDPKZM2eqmnkv5qmYg2GuiDMlmevh8+HMSc5N\nZsaYmUJmDrm9Whncz9yvzOlxvzLvxRzh/Px8Vb/33ntVvRqzm0PA/CWvCeB+5PGHec077rhjZM3v\nZ82ZuDy+cXv5/udMWh4vmBfl8ZLHLx6P+D7I+nQ15k2zzDFrvgZvv/12VTNDfPDgwarmPmWWM5tN\nzX2YnVM5L5fzd5k15TmWPckeWY09sZisL7jWYc2seva6cY4yM8PMJBP3O49NzESzj7OMcNanPLbx\n+8fFT5AlSZKkFhfIkiRJUosLZEmSJKllpjLInAnJXA3njGaZXeajmJ9i5jjLS2WzDLl9zCDu2LGj\nqpk55PNn/uz8+fNVzZmUzAWpH+af2GecR8vfa8/82MWLF6ua87eZ2zNzPB7Z+5eZ4127dlU1s+Y7\nd+6sar6/me9kzfc/jx/sI846zXKArHl/nEXK589MMh+fs0vZt3z8Wexr9kyWneTtfM58zXhOYm6c\nx4pse7JzKHuY289zFq+3YI8wJ89zLnPv2Vzm1YLPK3tv8HXi72Tge5Xnfr5Xs9eVfcJjIe+Payuu\nRXg9F7ef28v3Ae8/65OV6hs/QZYkSZJaXCBLkiRJLS6QJUmSpJaZyiAzB8Pf953N5WSOhbkeZuiY\nA2L2lDkc5naYGWQGkb/PfM+ePVXNmZTZHGfmejhDk89vtea7Vlq235mz27ZtW1VzP2Z5rdOnT1d1\nNjOStfu1H+YtmetjRph5zb1791Y1Z8Ru3ry5qrteQ8HtY1/wGgnOPWdfcK5z1qc8vr366qtVzWsi\n2Jfcvlm8JoLPifuExwbmurOMMPdRNtu+6/axp7gP2IM8R3If8vmxR/h4fH24fWtF18wxzwn8+SyT\nzP3C/cb9kl1vwT7gfuQs/xdeeKGqjxw5UtWc9X/58uWq5uvBY9u45mf7CbIkSZLU4gJZkiRJanGB\n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\nvlvVb7311sj6nXfeqer3339/5P0PbcEtSdK4+aumJUmSpBYXyJIkSVKLC2RJkiSpxQxyB9nFWFl2\ntev9UZYF5e1ZrcVxv1xzzTVVvW7duqpmhvjGG2+s6vXr11f1xz/+8aretGnTyNv5eL///e+r+o03\n3qjq8+fPV/W5c+eq+vLly1X9u9/9rqrfe++9qjaTLK0N2TnJ977WEj9BliRJklpcIEuSJEktLpAl\nSZKkllWdQe46z5ZZz64159ey5nxcYtaT82lZM4vKebicd8ua379W82VZXzCDzP3KzPGGDRuqeuPG\njVU9NzdX1bfffntVZxnkN998c+T2vfbaa1XNvuP38/l2zcZLGg++N7MZ7Lwe4oYbbqhqHqt4LCOe\nc95+++2RdXaOcea6ZomfIEuSJEktLpAlSZKkFhfIkiRJUsuqyiB3zY7edNNNVX3zzTdXNbOjt956\na1UzK/qxj32sqpn/Yl6M28t8FvNczJ5y/i3n2168eLGqX3nllZG38/HWSh4sy6pzv7GPuJ/ZR7fd\ndltVM4PM23l/3C/M/b366qtV/frrr1c15xwzF8gs+1rZ7yut6xz07OczXfdT1znqGr8sU/zRj360\nqnl9w5YtW6p6x44dVb1z586q3r59e1XzHMfH/+1vf1vVZ86cqepjx45V9YkTJ6r67NmzVX3p0qWq\n9tg0GV2z7Nl1KsQsOWvux2y/8uenxU+QJUmSpBYXyJIkSVKLC2RJkiSpZaYzyMzsMTeT5bc2b95c\n1du2batq5rfuvPPOqmaW9JZbbqlqZlWZ42HOhvkr5r+YMb5w4UJVnz9/vqqZF+Prw2xrNnd5tciy\nnl1zgevXr69q5vo455iZY/ble++9V9XM7Z06dWpkzT5gJpn7PcuDrdXcX3Z8YZ3NRc9uz+5/uRnl\n5c5NZ18607a77LqY7FjCc9J9991X1Q888EBV33333VXNYw+vw+E+5Dno5ZdfrmpmoHldDucu8z3A\ncxivq8mOVWtVNrs/m9XPtcrWrVurmln2O+64o6qzc9a5c+eq+uTJk1XNrDrPWVkfTCqj7CfIkiRJ\nUosLZEmSJKnFBbIkSZLUsqoyyFlWlPko5mp2795d1Xv37q1qZpQ3bdpU1ddff/3I7WV+irkdzoRk\nxo/Ph7ki1ny+nJfL72dWda3IsqZZnouvM3N5zLpzXjYfn7k8ZoyZ55qfn69q5rey2aJrNTu63Bwf\n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\nTkSuQmCC\n"
}
}
],
"source": [
"fig, ax = plt.subplots(2,5,figsize=(10,5))\n",
"\n",
"ax[0][0].imshow(imgmean[0],cmap='gray')\n",
"ax[0][1].imshow(imgmean[1],cmap='gray')\n",
"ax[0][2].imshow(imgmean[2],cmap='gray')\n",
"ax[0][3].imshow(imgmean[3],cmap='gray')\n",
"ax[0][4].imshow(imgmean[4],cmap='gray')\n",
"\n",
"ax[1][0].imshow(imgmean[5],cmap='gray')\n",
"ax[1][1].imshow(imgmean[6],cmap='gray')\n",
"ax[1][2].imshow(imgmean[7],cmap='gray')\n",
"ax[1][3].imshow(imgmean[8],cmap='gray')\n",
"ax[1][4].imshow(imgmean[9],cmap='gray')\n",
"\n",
"fig.tight_layout()\n"
],
"id": "9a4812f4-b5cb-4d5a-b73f-54ef5d261221"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(5)` ${\\tt xtrain}$의 두번째 이미지와 ${\\tt imgmean[0]}$의 차이를\n",
"제곱한 값의 평균을 구하라. 즉 아래를 계산하라.\n",
"\n",
"- $\\frac{1}{28\\times 28} \\sum_{p=0}^{27}\\sum_{q=0}^{27}\\big({\\tt xtrain[1,p,q]}-{\\tt imgmean[0][p,q]}\\big)^2$\n",
"\n",
"(풀이)"
],
"id": "076471c5-5eb2-43a1-8295-c48c3cb17e5e"
},
{
"cell_type": "code",
"execution_count": 151,
"metadata": {},
"outputs": [],
"source": [
"np.mean((xtrain[1,:,:]- imgmean[0])**2)"
],
"id": "33cd18e2-c6d8-43c0-adde-c9129818bab6"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(6)` 모든 $j=0,1,\\dots,9$ 에 대하여 아래를 계산하라.\n",
"\n",
"- $\\frac{1}{28\\times 28} \\sum_{p=0}^{27}\\sum_{q=0}^{27}\\big({\\tt xtrain[1,p,q]}-{\\tt imgmean[j][p,q]}\\big)^2$\n",
"\n",
"계산값이 가장 작게 나오는 $j$는 얼마인가? 위의 계산결과를 토대로\n",
"${\\tt xtrain}$의 두번째 이미지는 어떠한 숫자를 의미한다고 “분류”하는\n",
"것이 타당한가?"
],
"id": "1098fc66-2184-4f03-8c5c-76b79d3c0e16"
},
{
"cell_type": "code",
"execution_count": 152,
"metadata": {},
"outputs": [],
"source": [
"[np.mean((xtrain[1,:,:]- imgmean[i])**2) for i in range(10)]"
],
"id": "11059ad0-e5c7-4ce6-85f6-c7236d932d9c"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(7)` 아래와 같은 numpy array 를 생성하라.\n",
"\n",
"$${\\tt loss}= \n",
"\\begin{bmatrix} \n",
"{\\tt loss[0,0]} & \\dots & {\\tt loss[0,9]} \\\\ \n",
"{\\tt loss[1,0]} & \\dots & {\\tt loss[1,9]} \\\\ \n",
"\\dots & \\dots & \\dots \\\\ \n",
"{\\tt loss[59999,0]}& \\dots &{\\tt loss[59999,9]} \\\\ \n",
"\\end{bmatrix}$$\n",
"\n",
"단,\n",
"${\\tt loss[i,j]} = \\frac{1}{28\\times 28} \\sum_{p=0}^{27}\\sum_{q=0}^{27}\\big({\\tt xtrain[i,p,q]}-{\\tt imgmean[j][p,q]}\\big)^2$\n",
"\n",
"위에서 생성한 ${\\tt loss}$를 이용해 (6)와 같은 방식으로 ${\\tt xtrain}$의\n",
"모든 이미지에 대한 분류를 수행하라.\n",
"\n",
"**hint**: ${\\tt loss}$에서 “최소값을 가지는 원소의 인덱스를 출력”하는\n",
"함수를 각 행별로 적용하면 된다.\n",
"\n",
"(풀이)"
],
"id": "54faf91f-9ea6-4ea6-8c51-ca620b489fe9"
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [],
"source": [
"loss = np.array([[np.mean((xtrain[j,:,:]- imgmean[i])**2) for i in range(10)] for j in range(60000)])"
],
"id": "b440cd25-443c-4e96-bd86-2ff0ce52497a"
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [],
"source": [
"loss.argmin(axis=1)"
],
"id": "d46a617f-6c97-47c2-99c7-5b5a4c54a99c"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(8)` `(7)`에서 수행한 분류결과와 실제 라벨 ${\\tt ytrain}$을 비교하라.\n",
"얼마나 많은 결과가 일치하는지 비율을 계산하라.\n",
"\n",
"(풀이)"
],
"id": "539ff34d-a08b-4811-b961-bd77cf732aed"
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {},
"outputs": [],
"source": [
"np.sum(ytrain == loss.argmin(axis=1)) / 60000"
],
"id": "351ef726-4c04-43de-ad7a-6436c55d935d"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(9)` ${\\tt xtrain}$에서 학습한 평균이미지 ${\\tt imgmean}$를 바탕으로\n",
"${\\tt xtest}$의 이미지를 분류하라. 분류결과를 ${\\tt ytest}$와 비교하라.\n",
"얼마나 많은 결과가 일치하는지 비율을 계산하라.\n",
"\n",
"(풀이)"
],
"id": "2ee2d598-a52d-42ba-ad57-840bef048545"
},
{
"cell_type": "code",
"execution_count": 183,
"metadata": {},
"outputs": [],
"source": [
"est = np.array([[np.mean((xtest[j,:,:]- imgmean[i])**2) for i in range(10)] for j in range(10000)]).argmin(axis=1)"
],
"id": "e58202b3-684b-44e5-9719-2a1792f530fb"
},
{
"cell_type": "code",
"execution_count": 186,
"metadata": {},
"outputs": [],
"source": [
"np.sum(est == ytest)/10000"
],
"id": "251c6cb9-a733-44ae-bf89-6c6ce4b88920"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(10)` `(9)`의 과정에서 잘못분류된 이미지 10개를 선택하여 시각화 하라.\n",
"\n",
"- 실제 라벨과 잘못된 라벨을 구분하여 시각화 할 것"
],
"id": "ee72d599-4a5b-42a0-9f04-acdde723d776"
},
{
"cell_type": "code",
"execution_count": 191,
"metadata": {},
"outputs": [],
"source": [
"_ytest = ytest[est != ytest]\n",
"_xtest = xtest[est != ytest]\n",
"_est = est[est != ytest]"
],
"id": "c7158777-cf48-4ae1-85d9-63b06c9cc149"
},
{
"cell_type": "code",
"execution_count": 196,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"metadata": {},
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAFNCAYAAAAdPpmAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90\nbGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAAsT\nAAALEwEAmpwYAAA5fklEQVR4nO3de/zX8/3/8ftDpa8OFCrJeeQwm5hTM5ZhpcxhhG1f6/t1yByi\nsF85zgrf+Y5y2QyLLDOHyTRFbMgc0xc5j8pGlEKMlER6/v54v7PX4+nT+/15v96n1/vzuV0vly59\n7u/j4+Pz8P48e70fr+fbQggCAAAAkLNWvQsAAAAAsoQFMgAAAJDAAhkAAABIYIEMAAAAJLBABgAA\nABJYIAMAAAAJLJABAACABBbIAAAAQAIL5BKY2d/M7BMzW5r/Mzu6/rdmNtTMBpnZo2b2gZktMrPr\nzKxzvepG/ZnZ0Wb2spktM7N/mNneievONrNLzGxPM7vPzN43s3fNbJKZ9axn3agPM9vezKab2Ydm\n9qqZHRZdv7pnfpR4PVpqZh+bWTCzb9SrdtRXc15rottfkO+Z/WtfLbLEzLbJr3H+EF3+WzMbmv+6\nm5ndnH9t+peZ3VSfaquPBXLpTg0hdMr/2Ta67kBJ0yStJ+kiSRtL2l5SL0m/rG2ZyAozO0DSpZL+\nW1JnSftI+mfiJoOU65uuksZL2kLS5pI+kvS7WtaK+jOztpLulHSXpPUlDZX0BzPrnbjZIEnTQgg3\nJV6POkk6WbnemlXrulF/JbzWrL79VyQNlrSwhmUiu34j6ckmLl+9tpGkOyQtkrSZpO6SLqtNabXX\ntt4FtBRm9nVJH4QQ5ku6OXHVx2Z2raSf16cyZMDPJY0OITyRzwtWX2FmXSX1ljQjhPB58k5mdqWk\nh2pWJbJiO+X+cT0uhBAkTTezxyQdI+n8ZM80cd8hkn6fvx9an2a91iRu/xtJIyVdVbMKkUlmdrSk\nDyQ9LmnrxOVfrG3M7LuSNpXUL/H76pla11orHEEu3f+Y2WIze8zM+iUuHyjp7jXcZx9JL1W7MGSP\nmbWRtKukbvm3yueb2ZVmtk7+Jv0lPRAvjvPoG6xmknbMf91kz5jZ5sr1zO9rXBsyoNTXGjMbLGlF\nCGHaGh4SrYSZrStptKQzmrg6ubbZU9JsSTeY2Xtm9qSZfbtGZdYcC+TSjJS0lXIjE+MlTc2/RSVF\n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\n"
}
}
],
"source": [
"fig, ax = plt.subplots(2,5,figsize=(10,5))\n",
"\n",
"ax[0][0].imshow(_xtest[0],cmap='gray'); ax[0][0].set_title('{}/{}'.format(_ytest[0],_est[0]));\n",
"ax[0][1].imshow(_xtest[1],cmap='gray'); ax[0][1].set_title('{}/{}'.format(_ytest[1],_est[1]));\n",
"ax[0][2].imshow(_xtest[2],cmap='gray'); ax[0][2].set_title('{}/{}'.format(_ytest[2],_est[2]));\n",
"ax[0][3].imshow(_xtest[3],cmap='gray'); ax[0][3].set_title('{}/{}'.format(_ytest[3],_est[3]));\n",
"ax[0][4].imshow(_xtest[4],cmap='gray'); ax[0][4].set_title('{}/{}'.format(_ytest[4],_est[4]));\n",
"\n",
"ax[1][0].imshow(_xtest[5],cmap='gray'); ax[1][0].set_title('{}/{}'.format(_ytest[5],_est[5]));\n",
"ax[1][1].imshow(_xtest[6],cmap='gray'); ax[1][1].set_title('{}/{}'.format(_ytest[6],_est[6]));\n",
"ax[1][2].imshow(_xtest[7],cmap='gray'); ax[1][2].set_title('{}/{}'.format(_ytest[7],_est[7]));\n",
"ax[1][3].imshow(_xtest[8],cmap='gray'); ax[1][3].set_title('{}/{}'.format(_ytest[8],_est[8]));\n",
"ax[1][4].imshow(_xtest[9],cmap='gray'); ax[1][4].set_title('{}/{}'.format(_ytest[9],_est[9]));\n",
"\n",
"fig.tight_layout()"
],
"id": "2a56cf69-230f-4aed-ae66-40e0998e4509"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# FIFA23 자료분석\n",
"\n",
"아래는 FIFA23 자료를 불러오는 코드이다."
],
"id": "00e8982f-fa08-4c94-aaf9-8b51445489da"
},
{
"cell_type": "code",
"execution_count": 201,
"metadata": {},
"outputs": [],
"source": [
"df=pd.read_csv('https://raw.githubusercontent.com/guebin/DV2022/master/posts/FIFA23_official_data.csv').drop(columns=['Loaned From', 'Best Overall Rating']).dropna()\n",
"df.head()"
],
"id": "e3928e66-58bc-43b0-abf9-23a7c21877ba"
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`(1)` 선수들의 평균임금(Wage)을 구하라.\n",
"\n",
"# 삼성전자와 SK하이닉스\n",
"\n",
"아래는 삼성전자와 SK하이닉스의 주가를 load하는 코드이다."
],
"id": "98c7a615-ae50-476f-982a-b58b11a125c5"
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[*********************100%***********************] 2 of 2 completed"
]
}
],
"source": [
"import yfinance as yf\n",
"\n",
"# 삼성전자와 SK하이닉스의 종목 코드\n",
"tickers = [\"005930.KS\", \"017670.KS\"]\n",
"\n",
"# 주가 데이터를 불러올 기간\n",
"start_date = \"2021-01-01\"\n",
"end_date = \"2023-05-02\"\n",
"\n",
"# yfinance를 이용하여 데이터 다운로드\n",
"df = yf.download(tickers, start=start_date, end=end_date)['Adj Close']\n",
"df.columns = pd.Index(['삼성전자','SKT']) \n",
"\n",
"# 데이터 확인\n",
"df"
],
"id": "c1e15c74-5a08-442d-a9d5-a633fb6f1524"
}
],
"nbformat": 4,
"nbformat_minor": 5,
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3 (ipykernel)",
"language": "python"
},
"language_info": {
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": "3"
},
"file_extension": ".py",
"mimetype": "text/x-python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.16"
}
}
}