Нейросети: создание и оптимизация будущего. Джеймс Девис

Читать онлайн.
Название Нейросети: создание и оптимизация будущего
Автор произведения Джеймс Девис
Жанр
Серия
Издательство
Год выпуска 2025
isbn



Скачать книгу

различные конфигурации на каждом из подмножеств и выбрать наилучший вариант.

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

      Давайте рассмотрим пример кода, иллюстрирующий этапы подготовки данных, включая преобразование, нормализацию, разделение на тренировочные и тестовые наборы, а также кросс-валидацию. Для примера используем набор данных `Iris` из библиотеки `scikit-learn`.

      Подготовка данных

      1. Загрузка данных: используем датасет `Iris` и обрабатываем данные.

      2. Обработка пропусков: Заменяем пропущенные значения на медианные.

      3. Кодирование категориальных переменных: Кодируем целевой признак.

      4. Нормализация данных: Применим Min-Max нормализацию.

      5. Разделение на тренировочные и тестовые наборы: Разделяем данные для оценки.

      6. Кросс-валидация: Применим k-fold кросс-валидацию.

      Пример кода

      ```python

      import numpy as np

      import pandas as pd

      from sklearn.datasets import load_iris

      from sklearn.model_selection import train_test_split, KFold, cross_val_score

      from sklearn.preprocessing import MinMaxScaler, StandardScaler, LabelEncoder

      from sklearn.ensemble import RandomForestClassifier

      from sklearn.metrics import accuracy_score

      # Шаг 1: Загрузка и подготовка данных

      data = load_iris()

      df = pd.DataFrame(data.data, columns=data.feature_names)

      df['target'] = data.target

      # Шаг 2: Обработка пропущенных данных (для примера добавим пропуски)

      df.iloc[0, 0] = np.nan # добавляем пропущенное значение для примера

      df.fillna(df.median(), inplace=True) # заполняем медианными значениями

      # Шаг 3: Кодирование категориального признака (в данном случае уже числовой)

      # Для других данных LabelEncoder может быть полезен

      # Шаг 4: Нормализация данных

      scaler = MinMaxScaler()

      df[data.feature_names] = scaler.fit_transform(df[data.feature_names])

      # Шаг 5: Разделение данных на тренировочные и тестовые наборы

      X = df.drop('target', axis=1)

      y = df['target']

      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

      # Шаг 6: Обучение модели и оценка

      model = RandomForestClassifier(random_state=42)

      model.fit(X_train, y_train)

      predictions = model.predict(X_test)

      accuracy = accuracy_score(y_test, predictions)

      print(f'Точность на тестовом наборе: {accuracy:.2f}')

      # Шаг 7: Кросс-валидация

      kf = KFold(n_splits=5, shuffle=True, random_state=42)

      cv_scores = cross_val_score(model, X, y, cv=kf)

      print(f'Средняя точность при кросс-валидации: {cv_scores.mean():.2f}')

      ```

      Описание кода

      – Загрузка данных: Набор данных `Iris` предоставляет четыре признака и один целевой признак – вид цветка.

      – Обработка пропусков: Пример добавляет пропущенные значения в первый признак и затем заменяет их на медианное значение по этому признаку.

      – Кодирование категориальных переменных: `LabelEncoder` может использоваться для преобразования категорий в числовой формат (не требуется в этом наборе данных).

      – Нормализация данных: Min-Max нормализация применяется ко всем признакам, чтобы привести их к диапазону [0, 1]. Это улучшает процесс обучения, делая данные более однородными.

      – Разделение