80 lines
5.3 KiB
Markdown
80 lines
5.3 KiB
Markdown
# Лабораторная работа №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)
|
||
|
||
## Вывод
|
||
|
||
На основе полученных результатов, можно сказать, что классическая модель линейной регрессии является более чем подходящей для решения именно этой конкретной задачи
|
||
|