Примечание. Программные файлы для 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.