Примечание. Программные файлы для tenorflow 2 можно найти на - https://github.com/ashwinhprasad/Tensorflow-2.0

Логистическая регрессия используется для задач классификации, и в этом блоге вы познакомитесь с реализацией логистической регрессии с использованием Tensorflow 2. Это сообщение в блоге не будет посвящено теориям, касающимся логистической регрессии, и теория является предварительным условием.

Перейдем к части кода:

1. Импорт набора данных

Набор данных, который используется в этом примере, представляет собой набор данных iris из библиотеки sklearn.
мы импортируем набор данных и сохраняем его в виде фрейма данных pandas

#importing the libraries
import numpy as np
import tensorflow as tf
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#importing the dataset
from sklearn.datasets import load_iris
data = load_iris()
x = data['data']
y = data['target']
dataset = pd.DataFrame(data=np.concatenate((x,y.reshape(-1,1)),axis=1),columns=['sepal length','sepal width','petal length','petal width','target'])

2. Тренировка тестового сплита

Разделение набора данных на набор для обучения и тестирования для будущего анализа модели

#train, test split
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.1,shuffle=True)

3. Архитектура модели и обучение с использованием функционального API keras.

Keras Functional API - лучшая альтернатива последовательному API. Его можно использовать для создания моделей с несколькими входами и несколькими входами, а также сложных операций.
Для логистической регрессии мы можем использовать функцию активации softmax или сигмоид в качестве последнего слоя. Я использовал softmax, поскольку на выходе может быть только один из 3 типов растений.

Примечание. Это не чисто логистическая регрессия, поскольку мы используем активацию softmax на последнем уровне. Логистическая регрессия может быть реализована путем замены softmax на сигмоид в последнем слое. В результате не будет большой разницы

#model (Keras - Fuctional API)
i = tf.keras.layers.Input(shape=(4))
X = tf.keras.layers.Dense(3,activation=tf.keras.activations.softmax)(i)
model = tf.keras.models.Model(i,X)
#compile and fit the model
model.compile(optimizer=tf.keras.optimizers.SGD(learning_rate=0.01),loss=tf.keras.losses.sparse_categorical_crossentropy,metrics=['accuracy'])
train = model.fit(x_train,y_train.reshape(-1),validation_data=(x_test,y_test.reshape(-1)),epochs=200)

4. Характеристики модели

Работа моделей анализируется с помощью графиков. Точность модели очень высокая.

#plotting loss over epochs
plt.figure(figsize=(10,8))
plt.plot(train.history['loss'],label='Training loss')
plt.plot(train.history['val_loss'],label='Validation loss')
plt.xlabel('epochs')
plt.ylabel('loss')
plt.legend()
#plotting accuracy over epochs
plt.figure(figsize=(10,8))
plt.plot(train.history['accuracy'],label='Training accuracy')
plt.plot(train.history['val_accuracy'],label='Validation accuracy')
plt.xlabel('Accuracy')
plt.ylabel('loss')
plt.legend()

Вывод

Из представленной выше визуализации. можно сделать вывод, что наша модель работоспособна.
Логистическая регрессия - это мощный инструмент, который мы могли бы использовать для классификации. Вот как логистическая регрессия может быть реализована с помощью tensorflow 2.