Files
msmp-mephi_python/README.md
T

108 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Пошаговый дискриминантный анализ (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)
```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
```powershell
# 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:
```python
from google.colab import drive
drive.mount('/content/drive')
# затем используйте путь вида '/content/drive/MyDrive/путь/к/data.xlsx'
```
3) Установите (при необходимости) зависимости в первой ячейке Colab:
```python
# Выполните только если библиотек не хватает
!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 строк.