Классификация Ирисов Фишера остается фундаментальной и актуальной задачей в области машинного обучения и искусственного интеллекта. Набор данных, включающий измерения чашелистиков и лепестков трех видов ирисов, десятилетиями используется как идеальный полигон для тестирования алгоритмов классификации, от линейных моделей до глубоких нейронных сетей. В эпоху повсеместного распространения ИИ эта задача сохраняет свою дидактическую ценность, позволяя наглядно демонстрировать этапы построения модели: от загрузки данных и их нормализации до проектирования архитектуры сети и анализа её точности. Использование современных фреймворков, таких как TensorFlow и Keras, делает процесс доступным даже для новичков, а сама задача служит отправной точкой для решения более сложных проблем компьютерного зрения и анализа данных.
В данной работе для классификации ирисов используется полносвязная нейронная сеть, реализованная на Keras. Модель принимает на вход четыре нормализованных признака: длину и ширину чашелистика, длину и ширину лепестка. Архитектура сети включает скрытые слои с функцией активации ReLU и выходной слой с функцией softmax для многоклассовой классификации. Обучение проводится с оптимизатором Adam на протяжении 20 эпох, а процесс отслеживается по графикам точности на обучающей и проверочной выборках. Такой подход позволяет достичь высокой точности предсказания и служит примером стандартного пайплайна для задач классификации табличных данных.

Рисунок 1. Динамика точности модели в процессе обучения
Алгоритм решения задачи по построению модели классификации для набора данных Ирисов Фишера включает следующие последовательные шаги с использованием языка Python и библиотек TensorFlow/Keras.
- импортируем необходимые библиотеки: TensorFlow/Keras, pandas, numpy и matplotlib;
- подключаем Google Drive и загружаем обучающий и тестовый наборы данных из CSV-файлов;
- выделяем матрицу признаков и вектор целевой переменной из обучающих данных;
- проводим стандартизацию признаков, вычитая среднее значение и деля на стандартное отклонение;
- создаём последовательную модель нейронной сети с двумя скрытыми полносвязными слоями и выходным слоем на 3 нейрона;
- компилируем модель, выбирая оптимизатор Adam и функцию потерь sparse_categorical_crossentropy;
- обучаем модель на подготовленных данных, выделяя часть для валидации;
- строим график изменения точности на обучающей и проверочной выборках по эпохам;
- используем обученную модель для предсказания классов на тестовом наборе данных;
-
сохраняем результаты предсказаний в файл для отправки или последующего анализа.
Этот алгоритм является типовым для задач классификации и демонстрирует ключевые этапы работы с нейронными сетями в Keras.
Ниже приведен фрагмент кода, реализующий ключевые шаги алгоритма:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
train = pd.read_csv(‘train.csv’)
test = pd.read_csv(‘test.csv’)
features = ["SepalLength", "SepalWidth", "PetalLength", "PetalWidth"]
target = ‘Species’
x_train = train[features].values
y_train = train[target].values
x_test = test[features].values
mean = x_train.mean(axis=0)
std = x_train.std(axis=0)
x_train -= mean
x_train /= std
x_test -= mean
x_test /= std
model = Sequential()
model.add(Dense(100, activation=’relu’, input_shape=(x_train.shape[1],)))
model.add(Dense(16, activation=’relu’))
model.add(Dense(3, activation=’softmax’))
model.compile(optimizer=’adam’,
loss=’sparse_categorical_crossentropy’,
metrics=['accuracy'])
history = model.fit(x_train, y_train, epochs=20, validation_split=0.1, verbose=2)
plt.plot(history.history['accuracy'], label=’Точность на обучении’)
plt.plot(history.history['val_accuracy'], label=’Точность на валидации’)
plt.xlabel(‘Эпоха’)
plt.ylabel(‘Точность’)
plt.legend()
plt.show()
predictions = model.predict(x_test)
predictions = np.argmax(predictions, axis=1)
Процесс обучения модели визуализирован на Рисунке 2 (изображение сгенерировано нейросетью):

Рисунок 2. Архитектура используемой нейронной сети
Заключение
Задача классификации Ирисов Фишера, несмотря на свою простоту и давнюю историю, продолжает оставаться важным учебным и тестовым инструментом в области машинного обучения. Использование нейронных сетей, как показано в работе, позволяет эффективно решать эту задачу, демонстрируя типичный пайплайн для обработки табличных данных. Ключевыми этапами являются корректная предобработка данных, выбор архитектуры сети и мониторинг процесса обучения. Модель успешно справляется с классификацией, что подтверждает применимость полносвязных сетей для подобных задач. Освоение работы с этим набором данных формирует прочную основу для перехода к более сложным современным проблемам искусственного интеллекта.
Библиографический список
-
Шолле, Ф. Глубокое обучение на Python / Ф. Шолле ; пер. с англ. А. А. Слинкина. – 2-е изд. – Санкт-Петербург : Питер, 2023. – 400 с. – ISBN 978-5-4461-2143-9.
-
Фишер, Р. Э. Использование множественных измерений в таксономических задачах // Annals of Eugenics. – 1936. – Vol. 7, Part II. – P. 179–188. – Текст : электронный // Классика статистики : [сайт]. – URL: https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1469-1809.1936.tb02137.x (дата обращения: 08.12.2025.
-
Джулли, А. Библиотека Keras – инструмент глубокого обучения : реализация нейронных сетей с помощью библиотек Theano и TensorFlow : практическое пособие : [16+] / А. Джулли, С. Пал ; пер. с англ. А. А. Слинкина. – Москва : ДМК Пресс, 2018. – 294 с. : схем., ил. – Режим доступа: по подписке. – URL: https://biblioclub.ru/index.php?page=book&id=578561 (дата обращения: 08.12.2025). – ISBN 978-5-97060-573-8. – Текст : электронный.
