IIS_2023_1/romanova_adelina_lab_5/README.md

80 lines
5.3 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.

# Лабораторная работа №5. Вариант 21
## Тема:
Регрессия
## Модель:
LinearRegression
## Как запустить программу:
Установить *python, numpy, matplotlib, sklearn*
```
python lab.py
```
## Какие технологии использовались:
Язык программирования Python, библиотеки numpy, matplotlib, sklearn
Среда разработки VSCode
# Что делает лабораторная работа:
Поскольку артериальное давление пациента в состоянии покоя является важным медицинским показателем, оно было выбрано для предсказания на основе доступных признаков, таких как возраст, пол и других.
Внедрение линейной регрессии в решение задачи прогнозирования артериального давления в состоянии покоя приносит несколько ключевых преимуществ.
Линейная регрессия является мощным инструментом в области статистики и машинного обучения, широко применяемым для анализа и моделирования связей между зависимыми и независимыми переменными. Ее основная цель — построить линейную функцию, наилучшим образом приближающую отношение между входными данными и целевой переменной. Это позволяет предсказывать значения целевой переменной на основе новых входных данных.
### Описание:
```LinearRegression``` - метод наименьших квадратов (MSE) это основной принцип LinearRegression. Он стремится минимизировать сумму квадратов разностей между фактическими и предсказанными значениями. Этот алгоритм предоставляет аналитическое решение для определения коэффициентов линейной модели, что делает его эффективным и простым для понимания.
Процесс обучения линейной регрессии требует выполнения следующих шагов:
  1.  Получить исходные данные
  2.  Выбрать целевое значение, которые нужно предсказывать
  3.  Обработать данные таким образом, чтобы все признаки имели только числовой формат, и добавить нормализацию, или иначе, стандартизацию данных
  4.  4. Провести обучение выбранной модели на подготовленных данных
Обработка данных происходит с помощью функции ```str_features_to_numeric```:
```
def str_features_to_numeric(data):
# Преобразовывает все строковые признаки в числовые.
# Определение категориальных признаков
categorical_columns = []
numerics = ['int8', 'int16', 'int32', 'int64', 'float16', 'float32', 'float64']
features = data.columns.values.tolist()
for col in features:
if data[col].dtype in numerics: continue
categorical_columns.append(col)
# Кодирование категориальных признаков
for col in categorical_columns:
if col in data.columns:
le = LabelEncoder()
le.fit(list(data[col].astype(str).values))
data[col] = le.transform(list(data[col].astype(str).values))
return data
```
Далее происходит нормализация с помощью ```StandardScaler```.
В качестве целевого признака был выбран артериальное давление в состоянии покоя ```trestbps```- артериальное давление в состоянии покоя (в мм рт. ст. при поступлении в больницу). Обработанные данные поступают на вход обучения модели линейной регресии:
![](1.png "")
- reg.score_ - отображает точность работы модели
- reg.coef_ - отображает коэффициенты при признаках расположенных по порядку
- reg.intercept_ - показывает параметр смещения (в английской литературе bias)
## Вывод
На основе полученных результатов, можно сказать, что классическая модель линейной регрессии является более чем подходящей для решения именно этой конкретной задачи