{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 교재 페이지 (149-151) #####"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "6-3) Loading data from file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(25, 3) [[ 73.  80.  75.]\n",
      " [ 93.  88.  93.]\n",
      " [ 89.  91.  90.]\n",
      " [ 96.  98. 100.]\n",
      " [ 73.  66.  70.]\n",
      " [ 53.  46.  55.]\n",
      " [ 69.  74.  77.]\n",
      " [ 47.  56.  60.]\n",
      " [ 87.  79.  90.]\n",
      " [ 79.  70.  88.]\n",
      " [ 69.  70.  73.]\n",
      " [ 70.  65.  74.]\n",
      " [ 93.  95.  91.]\n",
      " [ 79.  80.  73.]\n",
      " [ 70.  73.  78.]\n",
      " [ 93.  89.  96.]\n",
      " [ 78.  75.  68.]\n",
      " [ 81.  90.  93.]\n",
      " [ 88.  92.  86.]\n",
      " [ 78.  83.  77.]\n",
      " [ 82.  86.  90.]\n",
      " [ 86.  82.  89.]\n",
      " [ 78.  83.  85.]\n",
      " [ 76.  83.  71.]\n",
      " [ 96.  93.  95.]] 25\n",
      "(25, 1) [[152.]\n",
      " [185.]\n",
      " [180.]\n",
      " [196.]\n",
      " [142.]\n",
      " [101.]\n",
      " [149.]\n",
      " [115.]\n",
      " [175.]\n",
      " [164.]\n",
      " [141.]\n",
      " [141.]\n",
      " [184.]\n",
      " [152.]\n",
      " [148.]\n",
      " [192.]\n",
      " [147.]\n",
      " [183.]\n",
      " [177.]\n",
      " [159.]\n",
      " [177.]\n",
      " [175.]\n",
      " [175.]\n",
      " [149.]\n",
      " [192.]]\n",
      "WARNING:tensorflow:From C:\\Users\\jsdata00010\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\framework\\op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n",
      "0 Cost:  21027.002 \n",
      "Prediction:\n",
      " [[22.048063 ]\n",
      " [21.619787 ]\n",
      " [24.096693 ]\n",
      " [22.293005 ]\n",
      " [18.633902 ]\n",
      " [ 7.2669735]\n",
      " [12.33103  ]\n",
      " [ 3.150511 ]\n",
      " [14.347944 ]\n",
      " [ 4.2534237]\n",
      " [14.485708 ]\n",
      " [10.678068 ]\n",
      " [28.80464  ]\n",
      " [29.298803 ]\n",
      " [11.237837 ]\n",
      " [18.646544 ]\n",
      " [31.189451 ]\n",
      " [13.344664 ]\n",
      " [28.841742 ]\n",
      " [25.66281  ]\n",
      " [15.084761 ]\n",
      " [16.798368 ]\n",
      " [15.924551 ]\n",
      " [31.36112  ]\n",
      " [24.986364 ]]\n",
      "10000 Cost:  6.3075275 \n",
      "Prediction:\n",
      " [[152.80807]\n",
      " [184.83162]\n",
      " [181.37848]\n",
      " [198.6599 ]\n",
      " [140.42346]\n",
      " [105.59277]\n",
      " [150.19682]\n",
      " [113.35465]\n",
      " [174.4844 ]\n",
      " [164.33716]\n",
      " [143.90251]\n",
      " [142.90082]\n",
      " [186.20119]\n",
      " [153.27995]\n",
      " [151.20258]\n",
      " [188.54863]\n",
      " [144.97618]\n",
      " [180.6047 ]\n",
      " [177.1576 ]\n",
      " [158.63654]\n",
      " [175.818  ]\n",
      " [174.48239]\n",
      " [167.21028]\n",
      " [151.33444]\n",
      " [190.792  ]]\n",
      "20000 Cost:  6.178985 \n",
      "Prediction:\n",
      " [[152.9591  ]\n",
      " [184.57266 ]\n",
      " [181.3407  ]\n",
      " [198.75731 ]\n",
      " [139.99829 ]\n",
      " [105.43419 ]\n",
      " [150.59377 ]\n",
      " [114.116684]\n",
      " [174.30566 ]\n",
      " [164.4335  ]\n",
      " [144.01111 ]\n",
      " [142.86426 ]\n",
      " [186.01385 ]\n",
      " [152.89445 ]\n",
      " [151.55026 ]\n",
      " [188.45798 ]\n",
      " [144.30365 ]\n",
      " [181.27435 ]\n",
      " [177.02472 ]\n",
      " [158.58878 ]\n",
      " [176.17403 ]\n",
      " [174.40085 ]\n",
      " [167.5474  ]\n",
      " [151.1448  ]\n",
      " [190.52899 ]]\n",
      "30000 Cost:  6.1748047 \n",
      "Prediction:\n",
      " [[152.97697]\n",
      " [184.55052]\n",
      " [181.34233]\n",
      " [198.76901]\n",
      " [139.9584 ]\n",
      " [105.40722]\n",
      " [150.62352]\n",
      " [114.17121]\n",
      " [174.28294]\n",
      " [164.42522]\n",
      " [144.01646]\n",
      " [142.85158]\n",
      " [186.00676]\n",
      " [152.8703 ]\n",
      " [151.57408]\n",
      " [188.44809]\n",
      " [144.25496]\n",
      " [181.32999]\n",
      " [177.02306]\n",
      " [158.59196]\n",
      " [176.20236]\n",
      " [174.3901 ]\n",
      " [167.57518]\n",
      " [151.14151]\n",
      " [190.51021]]\n",
      "40000 Cost:  6.171448 \n",
      "Prediction:\n",
      " [[152.97725]\n",
      " [184.55067]\n",
      " [181.34413]\n",
      " [198.77333]\n",
      " [139.95264]\n",
      " [105.39878]\n",
      " [150.62428]\n",
      " [114.17013]\n",
      " [174.28183]\n",
      " [164.42403]\n",
      " [144.01466]\n",
      " [142.8481 ]\n",
      " [186.00845]\n",
      " [152.86736]\n",
      " [151.57442]\n",
      " [188.44954]\n",
      " [144.24924]\n",
      " [181.33589]\n",
      " [177.0243 ]\n",
      " [158.59172]\n",
      " [176.2056 ]\n",
      " [174.39003]\n",
      " [167.57755]\n",
      " [151.14015]\n",
      " [190.5113 ]]\n",
      "50000 Cost:  6.1681185 \n",
      "Prediction:\n",
      " [[152.97597]\n",
      " [184.55261]\n",
      " [181.34586]\n",
      " [198.77707]\n",
      " [139.94954]\n",
      " [105.39211]\n",
      " [150.62294]\n",
      " [114.16508]\n",
      " [174.28273]\n",
      " [164.42409]\n",
      " [144.01239]\n",
      " [142.84563]\n",
      " [186.01054]\n",
      " [152.86565]\n",
      " [151.57318]\n",
      " [188.45204]\n",
      " [144.24638]\n",
      " [181.33815]\n",
      " [177.02544]\n",
      " [158.5909 ]\n",
      " [176.20706]\n",
      " [174.391  ]\n",
      " [167.57805]\n",
      " [151.13837]\n",
      " [190.51387]]\n",
      "60000 Cost:  6.164828 \n",
      "Prediction:\n",
      " [[152.97461]\n",
      " [184.55458]\n",
      " [181.34755]\n",
      " [198.7808 ]\n",
      " [139.94647]\n",
      " [105.3855 ]\n",
      " [150.62161]\n",
      " [114.15999]\n",
      " [174.2837 ]\n",
      " [164.42426]\n",
      " [144.01013]\n",
      " [142.84322]\n",
      " [186.01262]\n",
      " [152.8639 ]\n",
      " [151.57195]\n",
      " [188.45457]\n",
      " [144.24347]\n",
      " [181.34038]\n",
      " [177.02655]\n",
      " [158.59001]\n",
      " [176.20853]\n",
      " [174.392  ]\n",
      " [167.57852]\n",
      " [151.1365 ]\n",
      " [190.51645]]\n",
      "70000 Cost:  6.161523 \n",
      "Prediction:\n",
      " [[152.97318]\n",
      " [184.5566 ]\n",
      " [181.34921]\n",
      " [198.78452]\n",
      " [139.94348]\n",
      " [105.37895]\n",
      " [150.62022]\n",
      " [114.15482]\n",
      " [174.28476]\n",
      " [164.42453]\n",
      " [144.00784]\n",
      " [142.84085]\n",
      " [186.01465]\n",
      " [152.86212]\n",
      " [151.57066]\n",
      " [188.45715]\n",
      " [144.24059]\n",
      " [181.34251]\n",
      " [177.02756]\n",
      " [158.58907]\n",
      " [176.20995]\n",
      " [174.39304]\n",
      " [167.57893]\n",
      " [151.13452]\n",
      " [190.51906]]\n",
      "80000 Cost:  6.1582813 \n",
      "Prediction:\n",
      " [[152.97179]\n",
      " [184.55864]\n",
      " [181.35089]\n",
      " [198.78825]\n",
      " [139.94054]\n",
      " [105.37247]\n",
      " [150.61885]\n",
      " [114.14969]\n",
      " [174.28584]\n",
      " [164.4248 ]\n",
      " [144.00562]\n",
      " [142.83853]\n",
      " [186.01671]\n",
      " [152.86038]\n",
      " [151.56941]\n",
      " [188.45973]\n",
      " [144.23775]\n",
      " [181.34465]\n",
      " [177.02864]\n",
      " [158.58815]\n",
      " [176.21138]\n",
      " [174.39409]\n",
      " [167.57936]\n",
      " [151.13261]\n",
      " [190.52168]]\n",
      "90000 Cost:  6.155053 \n",
      "Prediction:\n",
      " [[152.97038]\n",
      " [184.56062]\n",
      " [181.35254]\n",
      " [198.79192]\n",
      " [139.9376 ]\n",
      " [105.36604]\n",
      " [150.61751]\n",
      " [114.14459]\n",
      " [174.28688]\n",
      " [164.42506]\n",
      " [144.00337]\n",
      " [142.83621]\n",
      " [186.0187 ]\n",
      " [152.85864]\n",
      " [151.56818]\n",
      " [188.4623 ]\n",
      " [144.23494]\n",
      " [181.34676]\n",
      " [177.02966]\n",
      " [158.58723]\n",
      " [176.21278]\n",
      " [174.39513]\n",
      " [167.57979]\n",
      " [151.13069]\n",
      " [190.52426]]\n",
      "100000 Cost:  6.1518464 \n",
      "Prediction:\n",
      " [[152.96898 ]\n",
      " [184.56264 ]\n",
      " [181.35419 ]\n",
      " [198.79558 ]\n",
      " [139.93466 ]\n",
      " [105.35962 ]\n",
      " [150.61613 ]\n",
      " [114.139496]\n",
      " [174.28793 ]\n",
      " [164.42534 ]\n",
      " [144.00114 ]\n",
      " [142.83391 ]\n",
      " [186.02074 ]\n",
      " [152.85692 ]\n",
      " [151.56693 ]\n",
      " [188.46484 ]\n",
      " [144.23213 ]\n",
      " [181.34886 ]\n",
      " [177.03069 ]\n",
      " [158.58632 ]\n",
      " [176.21419 ]\n",
      " [174.39616 ]\n",
      " [167.58022 ]\n",
      " [151.12877 ]\n",
      " [190.52684 ]]\n",
      "110000 Cost:  6.14867 \n",
      "Prediction:\n",
      " [[152.9676 ]\n",
      " [184.56462]\n",
      " [181.35583]\n",
      " [198.79924]\n",
      " [139.93175]\n",
      " [105.35318]\n",
      " [150.61476]\n",
      " [114.1344 ]\n",
      " [174.28897]\n",
      " [164.42558]\n",
      " [143.99892]\n",
      " [142.83159]\n",
      " [186.02275]\n",
      " [152.8552 ]\n",
      " [151.56567]\n",
      " [188.46739]\n",
      " [144.22932]\n",
      " [181.35094]\n",
      " [177.03172]\n",
      " [158.5854 ]\n",
      " [176.21556]\n",
      " [174.39719]\n",
      " [167.58061]\n",
      " [151.12688]\n",
      " [190.52942]]\n",
      "120000 Cost:  6.145499 \n",
      "Prediction:\n",
      " [[152.9662 ]\n",
      " [184.56662]\n",
      " [181.35748]\n",
      " [198.8029 ]\n",
      " [139.92882]\n",
      " [105.34676]\n",
      " [150.61342]\n",
      " [114.12932]\n",
      " [174.29002]\n",
      " [164.42586]\n",
      " [143.99669]\n",
      " [142.82927]\n",
      " [186.02477]\n",
      " [152.85347]\n",
      " [151.56444]\n",
      " [188.46992]\n",
      " [144.2265 ]\n",
      " [181.35304]\n",
      " [177.03276]\n",
      " [158.58449]\n",
      " [176.21696]\n",
      " [174.39822]\n",
      " [167.58104]\n",
      " [151.12495]\n",
      " [190.532  ]]\n",
      "130000 Cost:  6.1423726 \n",
      "Prediction:\n",
      " [[152.96483]\n",
      " [184.56859]\n",
      " [181.35912]\n",
      " [198.8065 ]\n",
      " [139.92592]\n",
      " [105.34042]\n",
      " [150.61208]\n",
      " [114.1243 ]\n",
      " [174.29106]\n",
      " [164.42613]\n",
      " [143.99449]\n",
      " [142.82698]\n",
      " [186.02675]\n",
      " [152.85176]\n",
      " [151.5632 ]\n",
      " [188.47244]\n",
      " [144.22372]\n",
      " [181.35512]\n",
      " [177.03378]\n",
      " [158.5836 ]\n",
      " [176.21835]\n",
      " [174.39925]\n",
      " [167.58145]\n",
      " [151.12308]\n",
      " [190.53455]]\n",
      "140000 Cost:  6.139267 \n",
      "Prediction:\n",
      " [[152.96346]\n",
      " [184.57054]\n",
      " [181.36073]\n",
      " [198.81012]\n",
      " [139.92305]\n",
      " [105.3341 ]\n",
      " [150.61072]\n",
      " [114.11928]\n",
      " [174.29208]\n",
      " [164.42638]\n",
      " [143.99231]\n",
      " [142.82472]\n",
      " [186.02873]\n",
      " [152.85007]\n",
      " [151.56197]\n",
      " [188.47495]\n",
      " [144.22098]\n",
      " [181.3572 ]\n",
      " [177.0348 ]\n",
      " [158.5827 ]\n",
      " [176.21974]\n",
      " [174.40025]\n",
      " [167.58186]\n",
      " [151.1212 ]\n",
      " [190.5371 ]]\n",
      "150000 Cost:  6.136192 \n",
      "Prediction:\n",
      " [[152.96208]\n",
      " [184.57251]\n",
      " [181.36237]\n",
      " [198.81372]\n",
      " [139.92015]\n",
      " [105.3278 ]\n",
      " [150.60938]\n",
      " [114.11429]\n",
      " [174.29312]\n",
      " [164.42664]\n",
      " [143.99011]\n",
      " [142.82243]\n",
      " [186.03072]\n",
      " [152.84836]\n",
      " [151.56075]\n",
      " [188.47745]\n",
      " [144.2182 ]\n",
      " [181.35925]\n",
      " [177.03583]\n",
      " [158.5818 ]\n",
      " [176.2211 ]\n",
      " [174.40128]\n",
      " [167.58228]\n",
      " [151.11932]\n",
      " [190.53961]]\n",
      "160000 Cost:  6.133125 \n",
      "Prediction:\n",
      " [[152.96072 ]\n",
      " [184.57446 ]\n",
      " [181.36397 ]\n",
      " [198.81729 ]\n",
      " [139.9173  ]\n",
      " [105.321495]\n",
      " [150.60803 ]\n",
      " [114.10928 ]\n",
      " [174.29413 ]\n",
      " [164.4269  ]\n",
      " [143.98793 ]\n",
      " [142.82018 ]\n",
      " [186.03268 ]\n",
      " [152.84668 ]\n",
      " [151.55951 ]\n",
      " [188.47993 ]\n",
      " [144.21547 ]\n",
      " [181.3613  ]\n",
      " [177.03683 ]\n",
      " [158.5809  ]\n",
      " [176.22247 ]\n",
      " [174.40228 ]\n",
      " [167.58267 ]\n",
      " [151.11746 ]\n",
      " [190.54214 ]]\n",
      "170000 Cost:  6.1300926 \n",
      "Prediction:\n",
      " [[152.95935]\n",
      " [184.57642]\n",
      " [181.36559]\n",
      " [198.82088]\n",
      " [139.91444]\n",
      " [105.31525]\n",
      " [150.60672]\n",
      " [114.10434]\n",
      " [174.29517]\n",
      " [164.42717]\n",
      " [143.98576]\n",
      " [142.81792]\n",
      " [186.03465]\n",
      " [152.84499]\n",
      " [151.5583 ]\n",
      " [188.48244]\n",
      " [144.21272]\n",
      " [181.36334]\n",
      " [177.03783]\n",
      " [158.58002]\n",
      " [176.22383]\n",
      " [174.40327]\n",
      " [167.58308]\n",
      " [151.11559]\n",
      " [190.54466]]\n",
      "180000 Cost:  6.127075 \n",
      "Prediction:\n",
      " [[152.95801]\n",
      " [184.57835]\n",
      " [181.36719]\n",
      " [198.82442]\n",
      " [139.91159]\n",
      " [105.309  ]\n",
      " [150.6054 ]\n",
      " [114.09938]\n",
      " [174.29617]\n",
      " [164.4274 ]\n",
      " [143.9836 ]\n",
      " [142.81567]\n",
      " [186.03662]\n",
      " [152.84332]\n",
      " [151.5571 ]\n",
      " [188.4849 ]\n",
      " [144.21   ]\n",
      " [181.36539]\n",
      " [177.03885]\n",
      " [158.57915]\n",
      " [176.22519]\n",
      " [174.40428]\n",
      " [167.5835 ]\n",
      " [151.11374]\n",
      " [190.54718]]\n",
      "190000 Cost:  6.1240983 \n",
      "Prediction:\n",
      " [[152.95665]\n",
      " [184.58028]\n",
      " [181.36877]\n",
      " [198.82796]\n",
      " [139.90877]\n",
      " [105.30279]\n",
      " [150.60406]\n",
      " [114.09445]\n",
      " [174.29718]\n",
      " [164.42766]\n",
      " [143.98143]\n",
      " [142.81343]\n",
      " [186.03856]\n",
      " [152.84164]\n",
      " [151.5559 ]\n",
      " [188.48735]\n",
      " [144.20729]\n",
      " [181.3674 ]\n",
      " [177.03986]\n",
      " [158.57826]\n",
      " [176.22653]\n",
      " [174.40529]\n",
      " [167.58388]\n",
      " [151.11191]\n",
      " [190.54967]]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "200000 Cost:  6.121114 \n",
      "Prediction:\n",
      " [[152.9553  ]\n",
      " [184.58221 ]\n",
      " [181.37038 ]\n",
      " [198.8315  ]\n",
      " [139.90593 ]\n",
      " [105.296585]\n",
      " [150.60275 ]\n",
      " [114.089554]\n",
      " [174.2982  ]\n",
      " [164.4279  ]\n",
      " [143.9793  ]\n",
      " [142.81119 ]\n",
      " [186.04051 ]\n",
      " [152.83998 ]\n",
      " [151.55469 ]\n",
      " [188.48982 ]\n",
      " [144.20457 ]\n",
      " [181.36943 ]\n",
      " [177.04085 ]\n",
      " [158.57738 ]\n",
      " [176.22789 ]\n",
      " [174.40627 ]\n",
      " [167.5843  ]\n",
      " [151.11006 ]\n",
      " [190.55215 ]]\n",
      "Your score will be  [[186.54152]]\n",
      "sales amount  will be  [[31.713732]]\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "\n",
    "tf.set_random_seed(777)\n",
    "\n",
    "# for reproducibility\n",
    "xy = np.loadtxt('data-01-test-score.csv', delimiter=',', dtype=np.float32)\n",
    "x_data = xy[:, 0:-1]\n",
    "y_data = xy[:, [-1]]\n",
    "\n",
    "# Make sure the shape and data are OK\n",
    "print(x_data.shape, x_data, len(x_data))\n",
    "print(y_data.shape, y_data)\n",
    "\n",
    "# placeholders for a tensor that will be always fed.\n",
    "X = tf.placeholder(tf.float32, shape=[None, 3])\n",
    "Y = tf.placeholder(tf.float32, shape=[None, 1])\n",
    "W = tf.Variable(tf.random_normal([3, 1]), name='weight')\n",
    "b = tf.Variable(tf.random_normal([1]), name='bias')\n",
    "\n",
    "# Hypothesis\n",
    "hypothesis = tf.matmul(X, W) + b\n",
    "\n",
    "# cost/loss function\n",
    "cost = tf.reduce_mean(tf.square(hypothesis - Y))\n",
    "\n",
    "# Minimize. Need a very small learning rate for this data set\n",
    "optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)\n",
    "train = optimizer.minimize(cost)\n",
    "\n",
    "# Launch the graph in a session.\n",
    "sess = tf.Session()\n",
    "\n",
    "# Initializes global variables in the graph.\n",
    "sess.run(tf.global_variables_initializer())\n",
    "# Set up feed_dict variables inside the loop.\n",
    "for step in range(200001):\n",
    "    cost_val, hy_val, _ = sess.run([cost, hypothesis, train],\n",
    "                                   feed_dict={X: x_data, Y: y_data})\n",
    "    if step % 10000 == 0:\n",
    "        print(step, \"Cost: \", cost_val, \"\\nPrediction:\\n\", hy_val)\n",
    "# Ask my score\n",
    "print(\"Your score will be \", sess.run(hypothesis,\n",
    "                                      feed_dict={X: [[100, 70, 101]]}))\n",
    "# Ask my score\n",
    "print(\"sales amount  will be \", sess.run(hypothesis, \n",
    "                                         feed_dict={X: [[27,18.1,11,]]}))"
   ]
  }
 ],
 "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.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
