Копирование содержимого запрещено

Лабораторная работа №3

Введение

Эта лабораторная работа посвящена корреляционно-регрессионному анализу, архитектуре нейронной сети и методу обратного распространения ошибки. Набор данных, используемый в этой работе, — это данные об ирисах Фишера, которые являются классическим набором данных в области машинного обучения и статистики. Он был впервые представлен Рональдом Фишером в 1936 году и иногда называется набором данных "Ирисы Фишера" или "Ирисы Фишера-Андерсона".

Набор данных "Ирисы Фишера" включает по 50 образцов каждого из трех видов ирисов:

От каждого образца были измерены четыре признака: длина и ширина чашелистиков и лепестков в сантиметрах. Цель работы обычно заключается в создании модели, которая может классифицировать вид ириса на основе этих четырех признаков.

Ключевые понятия

1. Корреляционно-регрессионный анализ

Это изучение взаимосвязей между переменными для понимания того, как они коррелируют друг с другом и как одну переменную можно использовать для предсказания другой.

2. Архитектура нейронной сети

Это схема и структура нейронной сети, включая количество слоев, типы слоев (входной, скрытый, выходной), количество нейронов в каждом слое и связи между ними.

3. Обратное распространение ошибки

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

4. Ирисы Фишера

Это набор данных, содержащий измерения ирисов. Лабораторная работа включает использование набора данных "Ирисы Фишера" для обучения нейронной сети, применение метода обратного распространения ошибки для улучшения работы модели и анализ корреляций и взаимосвязей между признаками для лучшего понимания данных и задачи классификации.

Этапы выполнения работы

  1. Импортируем необходимые библиотеки и классы.
  2. Импортируем датасет с помощью Scikit-learn.
  3. Разделяем датасет на входные данные (features) и целевые данные (labels).
  4. Разделяем данные на обучающую и тестовую выборки.
  5. Определяем функцию ошибки (Mean Squared Error, MSE).
  6. Создаем нейронную сеть с помощью Keras.
  7. Обучаем модель на обучающей выборке.
  8. Проверяем качество модели на тестовой выборке.
  9. Проводим оценку прогнозирования.

Реализация на Python

# Шаг 1: Импорт необходимых библиотек и классов import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam # Шаг 2: Импортировать датасет iris = load_iris() X = iris.data y = iris.target # Шаг 3: Разделить датасет на входные и целевые данные X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Шаг 4: В полученных данных выделить обучающую и тестовую выборку # (уже сделано на шаге 3) # Шаг 5: Определить функцию ошибки (MSE) # (будет использоваться в качестве метрики при обучении модели) # Шаг 6: Создать Нейросеть model = Sequential() model.add(Dense(16, input_shape=(4,), activation='relu')) # Входной слой с 16 нейронами model.add(Dense(16, activation='relu')) # Скрытый слой с 16 нейронами model.add(Dense(3, activation='softmax')) # Выходной слой с 3 нейронами (3 класса) # Компилируем модель model.compile(optimizer=Adam(learning_rate=0.001), loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Шаг 7: Обучить модель model.fit(X_train, y_train, epochs=100, batch_size=8, verbose=1) # Шаг 8: Протестировать модель loss, accuracy = model.evaluate(X_test, y_test, verbose=0) print(f"Test Loss: {loss:.4f}") print(f"Test Accuracy: {accuracy:.4f}") # Шаг 9: Провести оценку прогнозирования y_pred = model.predict(X_test) y_pred_classes = np.argmax(y_pred, axis=1) mse = mean_squared_error(y_test, y_pred_classes) print(f"Mean Squared Error: {mse:.4f}")