데이터 과학 - 선형 회귀


교육 세션의 기간인 Calorie_Burnage에 영향을 미치는 중요한 변수가 하나 빠져 있습니다.

Average_Pulse와 함께 Duration을 사용하면 Calorie_Burnage를 보다 정확하게 설명할 수 있습니다.


선형 회귀

회귀라는 용어는 변수 간의 관계를 찾으려고 할 때 사용됩니다.

기계 학습 및 통계 모델링에서 해당 관계는 이벤트 결과를 예측하는 데 사용됩니다.

이 모듈에서는 다음 질문을 다룹니다.

  • Average_Pulse 및 Duration이 Calorie_Burnage와 관련이 있다는 결론을 내릴 수 있습니까?
  • Average_Pulse 및 Duration을 사용하여 Calorie_Burnage를 예측할 수 있습니까?

최소제곱법

선형 회귀는 최소 자승법을 사용합니다.

개념은 플롯된 모든 데이터 포인트를 통해 선을 그리는 것입니다. 선은 모든 데이터 포인트까지의 거리를 최소화하는 방식으로 배치됩니다.

거리를 "잔차" 또는 "오차"라고 합니다.

빨간색 점선은 데이터 포인트에서 그려진 수학 함수까지의 거리를 나타냅니다.

선형 회귀 - 최소 제곱

하나의 설명 변수를 사용한 선형 회귀

이 예에서는 선형 회귀를 사용하여 Average_Pulse로 Calorie_Burnage를 예측하려고 합니다.

예시

import pandas as pd
import matplotlib.pyplot as plt
from scipy import stats

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

x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]

slope, intercept, r, p, std_err = stats.linregress(x, y)

def myfunc(x):
 return slope * x + intercept

mymodel = list(map(myfunc, x))

plt.scatter(x, y)
plt.plot(x, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()

설명된 예:

  • 필요한 모듈 가져오기: Pandas, matplotlib 및 Scipy
  • Average_Pulse를 x로 분리합니다. Calorie_burnage를 y로 분리
  • 다음을 사용하여 중요한 키 값 가져오기: slope, intercept, r, p, std_err = stats.linregress(x, y)
  • 기울기와 절편 값을 사용하여 새 값을 반환하는 함수를 만듭니다. 이 새 값은 y축에서 해당 x 값이 배치될 위치를 나타냅니다.
  • 함수를 통해 x 배열의 각 값을 실행합니다. 그러면 y축에 대한 새 값이 있는 새 배열이 생성됩니다. mymodel = list(map(myfunc, x))
  • 원래 산점도 그리기: plt.scatter(x, y)
  • 선형 회귀선 그리기: plt.plot(x, mymodel)
  • 축의 최대값과 최소값 정의
  • 축 레이블: "Average_Pulse" 및 "Calorie_Burnage"

산출:

선형 회귀 - 하나의 변수 - 최소 제곱

라인이 Calorie_Burnage를 정확하게 예측할 수 있다고 생각하십니까?

Average_Pulse 변수만으로는 Calorie_Burnage를 정확하게 예측할 수 없음을 보여줍니다.