Format: application/octet-stream
⬇ Download File (42.8 KB)
   1  {
   2   "cells": [
   3    {
   4     "cell_type": "code",
   5     "execution_count": 1,
   6     "id": "4cdc08f7",
   7     "metadata": {},
   8     "outputs": [
   9      {
  10       "name": "stderr",
  11       "output_type": "stream",
  12       "text": [
  13        "UsageError: Line magic function `%tensorflow_version` not found.\n"
  14       ]
  15      }
  16     ],
  17     "source": [
  18      "from __future__ import absolute_import, division, print_function, unicode_literals\n",
  19      "\n",
  20      "import numpy as np\n",
  21      "import pandas as pd\n",
  22      "import matplotlib.pyplot as plt\n",
  23      "from IPython.display import clear_output\n",
  24      "from six.moves import urllib\n",
  25      "\n",
  26      "import tensorflow.compat.v2.feature_column as fc\n",
  27      "\n",
  28      "import tensorflow as tf\n",
  29      "%tensorflow_version x.x  # this line is not required unless you are in a notebook"
  30     ]
  31    },
  32    {
  33     "cell_type": "code",
  34     "execution_count": 2,
  35     "id": "d184869a",
  36     "metadata": {},
  37     "outputs": [],
  38     "source": [
  39      "dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv') # training data\n",
  40      "dfeval = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv') # testing data\n",
  41      "y_train = dftrain.pop('survived')\n",
  42      "y_eval = dfeval.pop('survived')"
  43     ]
  44    },
  45    {
  46     "cell_type": "code",
  47     "execution_count": 3,
  48     "id": "ae3f17fc",
  49     "metadata": {},
  50     "outputs": [
  51      {
  52       "data": {
  53        "text/html": [
  54         "<div>\n",
  55         "<style scoped>\n",
  56         "    .dataframe tbody tr th:only-of-type {\n",
  57         "        vertical-align: middle;\n",
  58         "    }\n",
  59         "\n",
  60         "    .dataframe tbody tr th {\n",
  61         "        vertical-align: top;\n",
  62         "    }\n",
  63         "\n",
  64         "    .dataframe thead th {\n",
  65         "        text-align: right;\n",
  66         "    }\n",
  67         "</style>\n",
  68         "<table border=\"1\" class=\"dataframe\">\n",
  69         "  <thead>\n",
  70         "    <tr style=\"text-align: right;\">\n",
  71         "      <th></th>\n",
  72         "      <th>sex</th>\n",
  73         "      <th>age</th>\n",
  74         "      <th>n_siblings_spouses</th>\n",
  75         "      <th>parch</th>\n",
  76         "      <th>fare</th>\n",
  77         "      <th>class</th>\n",
  78         "      <th>deck</th>\n",
  79         "      <th>embark_town</th>\n",
  80         "      <th>alone</th>\n",
  81         "    </tr>\n",
  82         "  </thead>\n",
  83         "  <tbody>\n",
  84         "    <tr>\n",
  85         "      <th>0</th>\n",
  86         "      <td>male</td>\n",
  87         "      <td>22.0</td>\n",
  88         "      <td>1</td>\n",
  89         "      <td>0</td>\n",
  90         "      <td>7.2500</td>\n",
  91         "      <td>Third</td>\n",
  92         "      <td>unknown</td>\n",
  93         "      <td>Southampton</td>\n",
  94         "      <td>n</td>\n",
  95         "    </tr>\n",
  96         "    <tr>\n",
  97         "      <th>1</th>\n",
  98         "      <td>female</td>\n",
  99         "      <td>38.0</td>\n",
 100         "      <td>1</td>\n",
 101         "      <td>0</td>\n",
 102         "      <td>71.2833</td>\n",
 103         "      <td>First</td>\n",
 104         "      <td>C</td>\n",
 105         "      <td>Cherbourg</td>\n",
 106         "      <td>n</td>\n",
 107         "    </tr>\n",
 108         "    <tr>\n",
 109         "      <th>2</th>\n",
 110         "      <td>female</td>\n",
 111         "      <td>26.0</td>\n",
 112         "      <td>0</td>\n",
 113         "      <td>0</td>\n",
 114         "      <td>7.9250</td>\n",
 115         "      <td>Third</td>\n",
 116         "      <td>unknown</td>\n",
 117         "      <td>Southampton</td>\n",
 118         "      <td>y</td>\n",
 119         "    </tr>\n",
 120         "    <tr>\n",
 121         "      <th>3</th>\n",
 122         "      <td>female</td>\n",
 123         "      <td>35.0</td>\n",
 124         "      <td>1</td>\n",
 125         "      <td>0</td>\n",
 126         "      <td>53.1000</td>\n",
 127         "      <td>First</td>\n",
 128         "      <td>C</td>\n",
 129         "      <td>Southampton</td>\n",
 130         "      <td>n</td>\n",
 131         "    </tr>\n",
 132         "    <tr>\n",
 133         "      <th>4</th>\n",
 134         "      <td>male</td>\n",
 135         "      <td>28.0</td>\n",
 136         "      <td>0</td>\n",
 137         "      <td>0</td>\n",
 138         "      <td>8.4583</td>\n",
 139         "      <td>Third</td>\n",
 140         "      <td>unknown</td>\n",
 141         "      <td>Queenstown</td>\n",
 142         "      <td>y</td>\n",
 143         "    </tr>\n",
 144         "  </tbody>\n",
 145         "</table>\n",
 146         "</div>"
 147        ],
 148        "text/plain": [
 149         "      sex   age  n_siblings_spouses  parch     fare  class     deck  \\\n",
 150         "0    male  22.0                   1      0   7.2500  Third  unknown   \n",
 151         "1  female  38.0                   1      0  71.2833  First        C   \n",
 152         "2  female  26.0                   0      0   7.9250  Third  unknown   \n",
 153         "3  female  35.0                   1      0  53.1000  First        C   \n",
 154         "4    male  28.0                   0      0   8.4583  Third  unknown   \n",
 155         "\n",
 156         "   embark_town alone  \n",
 157         "0  Southampton     n  \n",
 158         "1    Cherbourg     n  \n",
 159         "2  Southampton     y  \n",
 160         "3  Southampton     n  \n",
 161         "4   Queenstown     y  "
 162        ]
 163       },
 164       "execution_count": 3,
 165       "metadata": {},
 166       "output_type": "execute_result"
 167      }
 168     ],
 169     "source": [
 170      "dftrain.head()"
 171     ]
 172    },
 173    {
 174     "cell_type": "code",
 175     "execution_count": 4,
 176     "id": "969206ef",
 177     "metadata": {},
 178     "outputs": [
 179      {
 180       "data": {
 181        "text/html": [
 182         "<div>\n",
 183         "<style scoped>\n",
 184         "    .dataframe tbody tr th:only-of-type {\n",
 185         "        vertical-align: middle;\n",
 186         "    }\n",
 187         "\n",
 188         "    .dataframe tbody tr th {\n",
 189         "        vertical-align: top;\n",
 190         "    }\n",
 191         "\n",
 192         "    .dataframe thead th {\n",
 193         "        text-align: right;\n",
 194         "    }\n",
 195         "</style>\n",
 196         "<table border=\"1\" class=\"dataframe\">\n",
 197         "  <thead>\n",
 198         "    <tr style=\"text-align: right;\">\n",
 199         "      <th></th>\n",
 200         "      <th>age</th>\n",
 201         "      <th>n_siblings_spouses</th>\n",
 202         "      <th>parch</th>\n",
 203         "      <th>fare</th>\n",
 204         "    </tr>\n",
 205         "  </thead>\n",
 206         "  <tbody>\n",
 207         "    <tr>\n",
 208         "      <th>count</th>\n",
 209         "      <td>627.000000</td>\n",
 210         "      <td>627.000000</td>\n",
 211         "      <td>627.000000</td>\n",
 212         "      <td>627.000000</td>\n",
 213         "    </tr>\n",
 214         "    <tr>\n",
 215         "      <th>mean</th>\n",
 216         "      <td>29.631308</td>\n",
 217         "      <td>0.545455</td>\n",
 218         "      <td>0.379585</td>\n",
 219         "      <td>34.385399</td>\n",
 220         "    </tr>\n",
 221         "    <tr>\n",
 222         "      <th>std</th>\n",
 223         "      <td>12.511818</td>\n",
 224         "      <td>1.151090</td>\n",
 225         "      <td>0.792999</td>\n",
 226         "      <td>54.597730</td>\n",
 227         "    </tr>\n",
 228         "    <tr>\n",
 229         "      <th>min</th>\n",
 230         "      <td>0.750000</td>\n",
 231         "      <td>0.000000</td>\n",
 232         "      <td>0.000000</td>\n",
 233         "      <td>0.000000</td>\n",
 234         "    </tr>\n",
 235         "    <tr>\n",
 236         "      <th>25%</th>\n",
 237         "      <td>23.000000</td>\n",
 238         "      <td>0.000000</td>\n",
 239         "      <td>0.000000</td>\n",
 240         "      <td>7.895800</td>\n",
 241         "    </tr>\n",
 242         "    <tr>\n",
 243         "      <th>50%</th>\n",
 244         "      <td>28.000000</td>\n",
 245         "      <td>0.000000</td>\n",
 246         "      <td>0.000000</td>\n",
 247         "      <td>15.045800</td>\n",
 248         "    </tr>\n",
 249         "    <tr>\n",
 250         "      <th>75%</th>\n",
 251         "      <td>35.000000</td>\n",
 252         "      <td>1.000000</td>\n",
 253         "      <td>0.000000</td>\n",
 254         "      <td>31.387500</td>\n",
 255         "    </tr>\n",
 256         "    <tr>\n",
 257         "      <th>max</th>\n",
 258         "      <td>80.000000</td>\n",
 259         "      <td>8.000000</td>\n",
 260         "      <td>5.000000</td>\n",
 261         "      <td>512.329200</td>\n",
 262         "    </tr>\n",
 263         "  </tbody>\n",
 264         "</table>\n",
 265         "</div>"
 266        ],
 267        "text/plain": [
 268         "              age  n_siblings_spouses       parch        fare\n",
 269         "count  627.000000          627.000000  627.000000  627.000000\n",
 270         "mean    29.631308            0.545455    0.379585   34.385399\n",
 271         "std     12.511818            1.151090    0.792999   54.597730\n",
 272         "min      0.750000            0.000000    0.000000    0.000000\n",
 273         "25%     23.000000            0.000000    0.000000    7.895800\n",
 274         "50%     28.000000            0.000000    0.000000   15.045800\n",
 275         "75%     35.000000            1.000000    0.000000   31.387500\n",
 276         "max     80.000000            8.000000    5.000000  512.329200"
 277        ]
 278       },
 279       "execution_count": 4,
 280       "metadata": {},
 281       "output_type": "execute_result"
 282      }
 283     ],
 284     "source": [
 285      "dftrain.describe()"
 286     ]
 287    },
 288    {
 289     "cell_type": "code",
 290     "execution_count": 5,
 291     "id": "6518dc41",
 292     "metadata": {},
 293     "outputs": [
 294      {
 295       "data": {
 296        "text/plain": [
 297         "(627, 9)"
 298        ]
 299       },
 300       "execution_count": 5,
 301       "metadata": {},
 302       "output_type": "execute_result"
 303      }
 304     ],
 305     "source": [
 306      "dftrain.shape"
 307     ]
 308    },
 309    {
 310     "cell_type": "code",
 311     "execution_count": 6,
 312     "id": "46a3d5fd",
 313     "metadata": {},
 314     "outputs": [
 315      {
 316       "data": {
 317        "text/plain": [
 318         "(627,)"
 319        ]
 320       },
 321       "execution_count": 6,
 322       "metadata": {},
 323       "output_type": "execute_result"
 324      }
 325     ],
 326     "source": [
 327      "y_train.shape"
 328     ]
 329    },
 330    {
 331     "cell_type": "code",
 332     "execution_count": 7,
 333     "id": "c9db13d1",
 334     "metadata": {},
 335     "outputs": [
 336      {
 337       "data": {
 338        "text/plain": [
 339         "<AxesSubplot:>"
 340        ]
 341       },
 342       "execution_count": 7,
 343       "metadata": {},
 344       "output_type": "execute_result"
 345      },
 346      {
 347       "data": {
 348        "image/png": "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\n",
 349        "text/plain": [
 350         "<Figure size 432x288 with 1 Axes>"
 351        ]
 352       },
 353       "metadata": {
 354        "needs_background": "light"
 355       },
 356       "output_type": "display_data"
 357      }
 358     ],
 359     "source": [
 360      "dftrain.age.hist(bins=25)"
 361     ]
 362    },
 363    {
 364     "cell_type": "code",
 365     "execution_count": 8,
 366     "id": "995c3f20",
 367     "metadata": {},
 368     "outputs": [
 369      {
 370       "data": {
 371        "text/plain": [
 372         "<AxesSubplot:>"
 373        ]
 374       },
 375       "execution_count": 8,
 376       "metadata": {},
 377       "output_type": "execute_result"
 378      },
 379      {
 380       "data": {
 381        "image/png": "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\n",
 382        "text/plain": [
 383         "<Figure size 432x288 with 1 Axes>"
 384        ]
 385       },
 386       "metadata": {
 387        "needs_background": "light"
 388       },
 389       "output_type": "display_data"
 390      }
 391     ],
 392     "source": [
 393      "dftrain.sex.value_counts().plot(kind='barh')  # bar for simple horizontal bar"
 394     ]
 395    },
 396    {
 397     "cell_type": "code",
 398     "execution_count": 9,
 399     "id": "8c0ea7cd",
 400     "metadata": {
 401      "scrolled": true
 402     },
 403     "outputs": [
 404      {
 405       "data": {
 406        "text/plain": [
 407         "<AxesSubplot:>"
 408        ]
 409       },
 410       "execution_count": 9,
 411       "metadata": {},
 412       "output_type": "execute_result"
 413      },
 414      {
 415       "data": {
 416        "image/png": "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\n",
 417        "text/plain": [
 418         "<Figure size 432x288 with 1 Axes>"
 419        ]
 420       },
 421       "metadata": {
 422        "needs_background": "light"
 423       },
 424       "output_type": "display_data"
 425      }
 426     ],
 427     "source": [
 428      "dftrain['class'].value_counts().plot(kind= 'bar')"
 429     ]
 430    },
 431    {
 432     "cell_type": "code",
 433     "execution_count": null,
 434     "id": "2ed6208d",
 435     "metadata": {},
 436     "outputs": [],
 437     "source": []
 438    },
 439    {
 440     "cell_type": "code",
 441     "execution_count": 23,
 442     "id": "6af2acc9",
 443     "metadata": {},
 444     "outputs": [
 445      {
 446       "data": {
 447        "text/plain": [
 448         "Text(0.5, 0, 'survived%')"
 449        ]
 450       },
 451       "execution_count": 23,
 452       "metadata": {},
 453       "output_type": "execute_result"
 454      },
 455      {
 456       "data": {
 457        "image/png": "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\n",
 458        "text/plain": [
 459         "<Figure size 432x288 with 1 Axes>"
 460        ]
 461       },
 462       "metadata": {
 463        "needs_background": "light"
 464       },
 465       "output_type": "display_data"
 466      }
 467     ],
 468     "source": [
 469      "pd.concat([dftrain, y_train], axis=1).groupby('sex').survived.mean().\\\n",
 470      "plot(kind='barh').set_xlabel('survived%')"
 471     ]
 472    },
 473    {
 474     "cell_type": "code",
 475     "execution_count": null,
 476     "id": "388de869",
 477     "metadata": {},
 478     "outputs": [],
 479     "source": []
 480    },
 481    {
 482     "cell_type": "code",
 483     "execution_count": 14,
 484     "id": "334f4367",
 485     "metadata": {},
 486     "outputs": [],
 487     "source": [
 488      "CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck',\n",
 489      "                       'embark_town', 'alone']\n",
 490      "NUMERIC_COLUMNS = ['age', 'fare']\n",
 491      "\n",
 492      "feature_columns = []\n",
 493      "for feature_name in CATEGORICAL_COLUMNS:\n",
 494      "    vocabulary = dftrain[feature_name].unique()  # gets a list of all unique values from given feature column\n",
 495      "    feature_columns.\\\n",
 496      "    append(tf.feature_column.\\\n",
 497      "    categorical_column_with_vocabulary_list(feature_name, vocabulary))\n",
 498      "\n",
 499      "for feature_name in NUMERIC_COLUMNS:\n",
 500      "    feature_columns.append(tf.feature_column.numeric_column(feature_name, dtype=tf.float32))\n"
 501     ]
 502    },
 503    {
 504     "cell_type": "code",
 505     "execution_count": 20,
 506     "id": "6f2b6447",
 507     "metadata": {},
 508     "outputs": [
 509      {
 510       "name": "stdout",
 511       "output_type": "stream",
 512       "text": [
 513        "\n",
 514        " VocabularyListCategoricalColumn(key='sex', vocabulary_list=('male', 'female'), dtype=tf.string, default_value=-1, num_oov_buckets=0)\n",
 515        "\n",
 516        " VocabularyListCategoricalColumn(key='n_siblings_spouses', vocabulary_list=(1, 0, 3, 4, 2, 5, 8), dtype=tf.int64, default_value=-1, num_oov_buckets=0)\n",
 517        "\n",
 518        " VocabularyListCategoricalColumn(key='parch', vocabulary_list=(0, 1, 2, 5, 3, 4), dtype=tf.int64, default_value=-1, num_oov_buckets=0)\n",
 519        "\n",
 520        " VocabularyListCategoricalColumn(key='class', vocabulary_list=('Third', 'First', 'Second'), dtype=tf.string, default_value=-1, num_oov_buckets=0)\n",
 521        "\n",
 522        " VocabularyListCategoricalColumn(key='deck', vocabulary_list=('unknown', 'C', 'G', 'A', 'B', 'D', 'F', 'E'), dtype=tf.string, default_value=-1, num_oov_buckets=0)\n",
 523        "\n",
 524        " VocabularyListCategoricalColumn(key='embark_town', vocabulary_list=('Southampton', 'Cherbourg', 'Queenstown', 'unknown'), dtype=tf.string, default_value=-1, num_oov_buckets=0)\n",
 525        "\n",
 526        " VocabularyListCategoricalColumn(key='alone', vocabulary_list=('n', 'y'), dtype=tf.string, default_value=-1, num_oov_buckets=0)\n",
 527        "\n",
 528        " NumericColumn(key='age', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None)\n",
 529        "\n",
 530        " NumericColumn(key='fare', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None)\n"
 531       ]
 532      }
 533     ],
 534     "source": [
 535      "for i in feature_columns:\n",
 536      "    print('\\n',i)"
 537     ]
 538    },
 539    {
 540     "cell_type": "code",
 541     "execution_count": null,
 542     "id": "79e7395c",
 543     "metadata": {},
 544     "outputs": [],
 545     "source": []
 546    },
 547    {
 548     "cell_type": "code",
 549     "execution_count": null,
 550     "id": "29be228c",
 551     "metadata": {},
 552     "outputs": [],
 553     "source": []
 554    },
 555    {
 556     "cell_type": "code",
 557     "execution_count": 43,
 558     "id": "d96f7f50",
 559     "metadata": {},
 560     "outputs": [],
 561     "source": [
 562      "def make_input_fn(data_df, label_df, num_epochs=10, shuffle=True, batch_size=30):\n",
 563      "    def input_function():  # inner function, this will be returned\n",
 564      "        ds = tf.data.Dataset.from_tensor_slices((dict(data_df), label_df))  # create tf.data.Dataset object with data and its label\n",
 565      "        if shuffle:\n",
 566      "              ds = ds.shuffle(1000)  # randomize order of data\n",
 567      "        ds = ds.batch(batch_size).repeat(num_epochs)  # split dataset into batches of 32 and repeat process for number of epochs\n",
 568      "        return ds  # return a batch of the dataset\n",
 569      "    return input_function  # return a function object for use\n",
 570      "\n",
 571      "train_input_fn = make_input_fn(dftrain, y_train)  # here we will call the input_function that was returned to us to get a dataset object we can feed to the model\n",
 572      "eval_input_fn = make_input_fn(dfeval, y_eval, num_epochs=1, shuffle=False)\n"
 573     ]
 574    },
 575    {
 576     "cell_type": "code",
 577     "execution_count": 44,
 578     "id": "3e71a7df",
 579     "metadata": {},
 580     "outputs": [
 581      {
 582       "name": "stdout",
 583       "output_type": "stream",
 584       "text": [
 585        "INFO:tensorflow:Using default config.\n",
 586        "WARNING:tensorflow:Using temporary folder as model directory: C:\\Users\\PC\\AppData\\Local\\Temp\\tmpnkh_gdr8\n",
 587        "INFO:tensorflow:Using config: {'_model_dir': 'C:\\\\Users\\\\PC\\\\AppData\\\\Local\\\\Temp\\\\tmpnkh_gdr8', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true\n",
 588        "graph_options {\n",
 589        "  rewrite_options {\n",
 590        "    meta_optimizer_iterations: ONE\n",
 591        "  }\n",
 592        "}\n",
 593        ", '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}\n"
 594       ]
 595      }
 596     ],
 597     "source": [
 598      "linear_est = tf.estimator.LinearClassifier(feature_columns=feature_columns)\n",
 599      "# We create a linear estimtor by passing the feature columns we created earlier"
 600     ]
 601    },
 602    {
 603     "cell_type": "code",
 604     "execution_count": 45,
 605     "id": "94430458",
 606     "metadata": {},
 607     "outputs": [
 608      {
 609       "name": "stdout",
 610       "output_type": "stream",
 611       "text": [
 612        "0.7462121\n"
 613       ]
 614      }
 615     ],
 616     "source": [
 617      "linear_est.train(train_input_fn)  # train\n",
 618      "result = linear_est.evaluate(eval_input_fn)  # get model metrics/stats by testing on tetsing data\n",
 619      "\n",
 620      "clear_output()  # clears consoke output\n",
 621      "print(result['accuracy'])  # the result variable is simply a dict of stats about our model"
 622     ]
 623    },
 624    {
 625     "cell_type": "code",
 626     "execution_count": 48,
 627     "id": "931ea121",
 628     "metadata": {},
 629     "outputs": [
 630      {
 631       "name": "stdout",
 632       "output_type": "stream",
 633       "text": [
 634        "INFO:tensorflow:Calling model_fn.\n"
 635       ]
 636      },
 637      {
 638       "name": "stderr",
 639       "output_type": "stream",
 640       "text": [
 641        "C:\\Users\\PC\\anaconda3\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\base_layer_v1.py:1700: UserWarning: `layer.add_variable` is deprecated and will be removed in a future version. Please use `layer.add_weight` method instead.\n",
 642        "  warnings.warn('`layer.add_variable` is deprecated and '\n"
 643       ]
 644      },
 645      {
 646       "name": "stdout",
 647       "output_type": "stream",
 648       "text": [
 649        "INFO:tensorflow:Done calling model_fn.\n",
 650        "INFO:tensorflow:Graph was finalized.\n",
 651        "INFO:tensorflow:Restoring parameters from C:\\Users\\PC\\AppData\\Local\\Temp\\tmpnkh_gdr8\\model.ckpt-210\n",
 652        "INFO:tensorflow:Running local_init_op.\n",
 653        "INFO:tensorflow:Done running local_init_op.\n",
 654        "{'logits': array([-2.2115405], dtype=float32), 'logistic': array([0.09871891], dtype=float32), 'probabilities': array([0.9012811 , 0.09871893], dtype=float32), 'class_ids': array([0], dtype=int64), 'classes': array([b'0'], dtype=object), 'all_class_ids': array([0, 1]), 'all_classes': array([b'0', b'1'], dtype=object)}\n"
 655       ]
 656      }
 657     ],
 658     "source": [
 659      "res=list(linear_est.predict(eval_input_fn))\n"
 660     ]
 661    },
 662    {
 663     "cell_type": "code",
 664     "execution_count": 50,
 665     "id": "97d6c402",
 666     "metadata": {},
 667     "outputs": [
 668      {
 669       "name": "stdout",
 670       "output_type": "stream",
 671       "text": [
 672        "[0.9012811  0.09871893]\n"
 673       ]
 674      }
 675     ],
 676     "source": [
 677      "print(res[0]['probabilities'])"
 678     ]
 679    },
 680    {
 681     "cell_type": "code",
 682     "execution_count": null,
 683     "id": "5bdb63be",
 684     "metadata": {},
 685     "outputs": [],
 686     "source": []
 687    }
 688   ],
 689   "metadata": {
 690    "kernelspec": {
 691     "display_name": "Python 3",
 692     "language": "python",
 693     "name": "python3"
 694    },
 695    "language_info": {
 696     "codemirror_mode": {
 697      "name": "ipython",
 698      "version": 3
 699     },
 700     "file_extension": ".py",
 701     "mimetype": "text/x-python",
 702     "name": "python",
 703     "nbconvert_exporter": "python",
 704     "pygments_lexer": "ipython3",
 705     "version": "3.8.8"
 706    }
 707   },
 708   "nbformat": 4,
 709   "nbformat_minor": 5
 710  }
 711