Skip to content

ada-dmitry/msmp-mephi_python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Пошаговый дискриминантный анализ (LDA) — main.ipynb

Короткий ноутбук для линейного дискриминантного анализа (LDA) с пошаговым отбором признаков (включение/исключение), расчетом ковариационных матриц и расстояний Махаланобиса. Вход — Excel data.xlsx, выход — output.xlsx с результатами классификации.

Что делает ноутбук

  • Читает Excel (INPUT_PATH, по умолчанию data.xlsx) и берет первые 85 строк.
  • Стандартизирует числовые признаки X1..X9 (все колонки, кроме первой).
  • Строит LDA, вычисляет ковариационную матрицу, средние по классам, расстояния Махаланобиса.
  • Делает пошаговый отбор признаков: с включением (forward) и с исключением (backward).
  • Сохраняет результаты в OUTPUT_PATH (по умолчанию output.xlsx):
    • Train sample (класс из обучающей выборки)
    • Result Lda (полная модель)
    • Result forward (модель с включением)
    • Result backward (модель с исключением)

Требования

  • Python 3.10+
  • Зависимости: pandas, numpy, scipy, scikit-learn, openpyxl

Рекомендуется установить из requirements.txt.

Быстрый старт локально (Linux/macOS, sh)

# 1) Создать и активировать виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate

# 2) Обновить pip и установить зависимости
pip install --upgrade pip
pip install -r requirements.txt

# 3) Запустить ноутбук (любой способ)
# Вариант A: открыть main.ipynb в VS Code и выполнить ячейки
# Вариант B (если нужно):
# pip install jupyterlab
# jupyter lab

Windows

# 1) Создать и активировать виртуальное окружение (PowerShell)
py -m venv .venv
.venv\Scripts\Activate.ps1

# 2) Обновить pip и установить зависимости
python -m pip install --upgrade pip
pip install -r requirements.txt

# 3) Запуск ноутбука
# Откройте main.ipynb в VS Code и выполните ячейки
# или установите JupyterLab и запустите его:
# pip install jupyterlab
# jupyter lab

Примечание: в классической CMD активация окружения — .venv\Scripts\activate.bat.

Настройка переменных (первая ячейка ноутбука)

  • INPUT_PATH: путь к входному Excel (по умолчанию data.xlsx).
  • OUTPUT_PATH: путь для сохранения результатов (по умолчанию output.xlsx).
  • CNT_ENTER: число признаков в forward-модели.
  • CNT_REMOVE: число признаков, исключаемых в backward-процедуре.
  • TRAIN_SAMPLE: словарь вида {класс: [индексы_строк]} — обучающая выборка.
    • Индексы — это индексы DataFrame после чтения файла (0-based). Убедитесь, что указанные номера существуют.

Формат входных данных (Excel)

  • Первая колонка — идентификатор/метка (не стандартизируется).
  • Далее должны идти числовые признаки X1..X9.
  • Используются первые 85 строк файла.

Минимальный пример структуры (заголовки):

<ID-or-Name>  X1  X2  ...  X9
...

Результаты

В output.xlsx попадут исходные признаки X1..X9 и дополнительные столбцы:

  • Train sample — класс для строк, попавших в обучающую выборку.
  • Result Lda — класс по полной LDA-модели.
  • Result forward — класс по модели с включением признаков.
  • Result backward — класс по модели с исключением признаков.

Запуск в Google Colab

  1. Откройте Colab → File → Upload notebook и выберите main.ipynb.
  2. Загрузите data.xlsx в среду:
    • Слева вкладка Files → Upload → выберите data.xlsx, он окажется в /content/data.xlsx; или
    • Смонтируйте Google Drive:
      from google.colab import drive
      drive.mount('/content/drive')
      # затем используйте путь вида '/content/drive/MyDrive/путь/к/data.xlsx'
  3. Установите (при необходимости) зависимости в первой ячейке Colab:
    # Выполните только если библиотек не хватает
    !pip -q install openpyxl scikit-learn scipy pandas
  4. В первой ячейке ноутбука обновите пути:
    • INPUT_PATH = '/content/data.xlsx' (или путь в Google Drive)
    • OUTPUT_PATH = '/content/output.xlsx'
  5. Выполните все ячейки.

Частые вопросы

  • FileNotFoundError: проверьте INPUT_PATH и расположение data.xlsx.
  • ModuleNotFoundError: установите зависимости (см. выше). В Colab выполните ячейку с !pip.
  • Индексы TRAIN_SAMPLE не найдены: проверьте, что они соответствуют индексам DataFrame (0-based) и попадают в первые 85 строк.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published