Оценщики проверяют набор данных Titanic с помощью Python

Зачем изучать Python Программирование и разработка

TensorFlow Estimator API — это высокоуровневый интерфейс, упрощающий процесс обучения и оценки моделей машинного обучения в TensorFlow. Он предоставляет готовые архитектуры моделей и алгоритмы оптимизации, а также инструменты для предварительной обработки, оценки и обслуживания входных данных.

Чтобы использовать Estimator API, сначала необходимо определить архитектуру модели и функции ввода и вывода. Архитектура модели определяется с помощью столбцов функций, которые определяют тип и форму входных данных. Функция ввода отвечает за чтение и предварительную обработку данных обучения или оценки, а функция вывода отвечает за определение функции потерь и метрик оценки.

После определения модели и функций ввода/вывода вы можете использовать Estimator API для обучения и оценки модели. Обучение модели включает предоставление входной функции методу train() и указание количества шагов обучения. Оценка включает в себя предоставление входных и выходных функций методу Assessment() и указание количества шагов оценки.

Estimator API также предоставляет инструменты для прогнозирования новых данных, такие как метод predict(), который позволяет передавать тестовый набор данных в модель и получать прогнозы для каждого примера.

В целом, TensorFlow Estimator API — это мощный и удобный инструмент для обучения и оценки моделей машинного обучения в TensorFlow. Он предоставляет простой высокоуровневый интерфейс, в котором обрабатываются многие низкоуровневые детали обучения и оценки модели, что упрощает сосредоточение внимания на основных задачах машинного обучения.

Библиотеки Python позволяют нам очень легко обрабатывать данные и выполнять типичные и сложные задачи с помощью одной строки кода.

  • Pandas— эта библиотека помогает загружать фрейм данных в формате 2D-массива и имеет несколько функций для выполнения задач анализа за один раз.
  • Matplotlib— эта библиотека используется для рисования визуализаций.
  • TensorFlow— это библиотека с открытым исходным кодом, которая используется для машинного обучения и искусственного интеллекта и предоставляет ряд функций для реализации сложных функций с помощью отдельных строк кода.

Python3

import tensorflow as tf
import pandas as pd
from tensorflow import estimator

В этом блоке кода библиотека TensorFlow импортируется и получает псевдоним tf. Библиотека панды также импортируется и получает псевдоним pd. Класс LinearClassifier импортируется из модуля оценки TensorFlow.

Читайте также:  Flash или HTML5: все, что вам нужно знать

Python3

# Read the Titanic dataset into a Pandas dataframe
data = pd.read_csv("titanic.csv")
 
# preprocess the dataset
data = data[data.Age.notnull()]
data = data[data.Sex.notnull()]
data = data[data.Embarked.notnull()]
data = data.drop('Cabin', axis=1)

В этом блоке кода набор данных Titanic считывается во фрейм данных Pandas с помощью функции read_csv. Затем данные предварительно обрабатываются путем удаления строк с отсутствующими значениями в столбцах «Возраст», «Пол» и «Посадка» с использованием метода not null и путем удаления столбца «Каюта» с помощью метода удаления.

Python3

# Define a LinearClassifier Estimator
feature_columns = [tf.feature_column.numeric_column(key="Age"),
                   tf.feature_column.numeric_column(key="Fare")]
 
model = tf.estimator.LinearClassifier(feature_columns=feature_columns)

В этом блоке кода оценщик LinearClassifier определяется с использованием класса LinearClassifier из TensorFlow. Параметр feature_columns указывает входные функции, которые модель должна использовать для обучения. В этом случае входными функциями являются столбцы данных Age и Fare.

Python3

def input_fn(data):
    return tf.compat.v1.estimator.inputs.pandas_input_fn(
        x=data[["Age", "Fare"]],
        y=data["Survived"],
        batch_size=100,
        num_epochs=None,
        shuffle=True)

Функция input_fn определена для возврата функции ввода, которую можно использовать для подачи данных в модель для обучения. Он принимает данные в качестве аргумента и возвращает функцию ввода, которая перемешивает данные с помощью параметра shuffle и делит их на пакеты размером batch_size с помощью функции pandas_input_fn из TensorFlow. Параметр num_epochs указывает, сколько раз данные должны повторяться во время обучения, а None указывает, что данные должны повторяться бесконечно.

Python3

model.train(input_fn=input_fn(data),
            steps=1000)

Метод обучения модели вызывается с входной функцией и количеством шагов для обучения в качестве аргументов. Функция ввода создается путем вызова функции input_fn с данными в качестве аргумента. Параметр steps указывает количество шагов обучения. В этом случае модель будет обучена на 1000 шагов.

Python3

def input_fn_predict(data):
  return tf.compat.v1.estimator.inputs.pandas_input_fn(
      x=data[["Age", "Fare"]],
      y=None,
      batch_size=100,
      num_epochs=1,
      shuffle=False)

Функция input_fn_predict определена для возврата входной функции, которую можно использовать для подачи данных в модель для создания прогнозов. Она похожа на функцию input_fn, но не включает метки (столбец Survived) и не перемешивает данные с помощью параметра shuffle. Параметр num_epochs указывает, сколько раз данные должны повторяться во время прогнозирования, а значение 1 указывает, что данные будут повторяться один раз.

Python3

predictions = model.predict(input_fn\
                            =input_fn_predict(data))
 
# Print the predictions
for prediction in predictions:
    print(prediction)

Метод прогнозирования модели называется входной функцией для создания прогнозов в качестве аргумента, а полученные прогнозы сохраняются в переменной, называемой прогнозами. Затем прогнозы печатаются с использованием цикла.

Прогноз:

{'logits': array([-0.6641928], dtype=float32),
 'logistic': array([0.3397984], dtype=float32),
 'probabilities': array([0.6602016 , 0.33979842], 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)}

Предсказание — это словарь со следующими ключами:

  1. logits: значение с плавающей запятой, представляющее необработанный ненормализованный прогноз, сделанный моделью.
  2. logistic: значение с плавающей запятой, представляющее прогнозируемое логистическое значение. Это значение является результатом сигмовидной функции, примененной к предсказанию модели, и может быть интерпретировано как вероятность, которую модель присваивает положительному классу (т. е. классу, соответствующему выживанию).
  3. probabilities: список значений с плавающей запятой, представляющих предсказанные вероятности класса. Список будет состоять из двух элементов, соответствующих вероятностям, присвоенным положительным и отрицательным классам. Первым элементом будет вероятность выживания, а вторым элементом будет вероятность невыживания.
  4. class_ids: список целых чисел, представляющих предсказанные метки класса. Список будет состоять из одного элемента, так как это проблема бинарной классификации. Элемент будет равен 1, если модель предсказывает, что пассажир выжил, или 0, если модель предсказывает, что пассажир не выжил.
  5. classes: список строк, представляющих предсказанные метки классов. Список будет состоять из одного элемента, который будет равен «1», если модель предсказывает, что пассажир выжил, или «0», если модель предсказывает, что пассажир не выжил.
  6. all_class_ids: список целых чисел, представляющих все возможные метки классов.
  7. all_classes: список строк, представляющих все возможные метки классов.

На основе этого прогноза модель предсказывает, что пассажир не выжил (класс 0) с вероятностью 0,3397984.

Вот несколько примеров того, как вы можете использовать API tf.estimator TensorFlow для обучения модели нейронной сети на титаническом наборе данных с использованием Python:

  • Вы можете использовать класс tf.estimator.DNNClassifier для обучения глубокой нейронной сетис несколькими скрытыми слоями в титаническом наборе данных. Это позволит вам построить модель, которая может изучать сложные закономерности в данных и делать более точные прогнозы.
  • Вы можете использовать класс estimator.LinearClassifierдля обучения модели логистической регрессии на титаническом наборе данных. Это позволит вам построить простую и эффективную модель, которую можно использовать для задач бинарной классификации.
  • Вы можете использовать класс tf.estimator.BoostedTreesClassifier для обучения модели деревьев с градиентным усилением на титаническом наборе данных. Это позволит вам построить модель, которая может обучаться на данных итеративным образом и делать высокоточные прогнозы.

Вы можете поэкспериментировать с различными архитектурами моделей, доступными в API tf.estimator, чтобы увидеть, какая из них лучше всего подходит для вашего конкретного случая использования.

Оцените статью
bestprogrammer.ru
Добавить комментарий