Наука о данных — случай линейной регрессии


Случай: используйте продолжительность + средний_пульс, чтобы предсказать калорийность_сжигания

Создайте таблицу линейной регрессии со значениями Average_Pulse и Duration в качестве независимых переменных:

Пример

import pandas as pd
import statsmodels.formula.api as smf

full_health_data = pd.read_csv("data.csv", header=0, sep=",")

model = smf.ols('Calorie_Burnage ~ Average_Pulse + Duration', data = full_health_data)
results = model.fit()
print(results.summary())

Объяснение примера:

  • Импортируйте библиотеку statsmodels.formula.api как smf. Statsmodels — это статистическая библиотека на Python.
  • Используйте набор full_health_data.
  • Создайте модель на основе метода наименьших квадратов с помощью smf.ols(). Обратите внимание, что объясняющая переменная должна быть записана первой в скобках. Используйте набор данных full_health_data.
  • Вызывая .fit(), вы получаете переменные результаты. Это содержит много информации о регрессионной модели.
  • Вызови summary(), чтобы получить таблицу с результатами линейной регрессии.

Вывод:

Таблица линейной регрессии

Функцию линейной регрессии можно математически переписать как:

Calorie_Burnage = Average_Pulse * 3.1695 + Duration * 5.8424 - 334.5194

Округление до двух знаков после запятой:

Calorie_Burnage = Average_Pulse * 3.17 + Duration * 5.84 - 334.52


Определите функцию линейной регрессии в Python

Определите функцию линейной регрессии в Python для выполнения прогнозов.

Что такое Calorie_Burnage, если:

  • Средний пульс 110 и продолжительность тренировки 60 минут?
  • Средний пульс 140 и продолжительность тренировки 45 минут?
  • Средний пульс 175 и продолжительность тренировки 20 минут?

Пример

def Predict_Calorie_Burnage(Average_Pulse, Duration):
 return(3.1695*Average_Pulse + 5.8434 * Duration - 334.5194)

print(Predict_Calorie_Burnage(110,60))
print(Predict_Calorie_Burnage(140,45))
print(Predict_Calorie_Burnage(175,20))

Ответы:

  • Средний пульс 110, а продолжительность тренировки 60 минут = 365 калорий.
  • Средний пульс 140, а продолжительность тренировки 45 минут = 372 калории.
  • Средний пульс 175, а продолжительность тренировки 20 минут = 337 калорий.

Доступ к коэффициентам

Посмотрите на коэффициенты:

  • Calorie_Burnage увеличивается на 3,17, если Average_Pulse увеличивается на единицу.
  • Calorie_Burnage увеличивается на 5,84, если длительность увеличивается на единицу.

Доступ к P-значению

Посмотрите на P-значение для каждого коэффициента.

  • Значение P равно 0,00 для параметров Average_Pulse, Duration и Intercept.
  • P-значение статистически значимо для всех переменных, так как оно меньше 0,05.

Таким образом, мы можем заключить, что средний_пульс и продолжительность связаны с расходом калорий.


Скорректированный R-квадрат

Возникает проблема с R-квадратом, если у нас есть более одной объясняющей переменной.

R-квадрат почти всегда будет увеличиваться, если мы добавим больше переменных, и никогда не уменьшится.

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

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

Поэтому лучше смотреть на скорректированное значение R-квадрата, если у нас есть более одной независимой переменной.

Скорректированный R-квадрат равен 0,814.

Значение R-Squared всегда находится в диапазоне от 0 до 1 (от 0% до 100%).

  • Высокое значение R-квадрата означает, что многие точки данных близки к линии функции линейной регрессии.
  • Низкое значение R-квадрата означает, что линия функции линейной регрессии плохо соответствует данным.

Вывод: Модель хорошо соответствует данным!

Поздравляем! Вы завершили последний модуль библиотеки обработки и анализа данных.