본문 바로가기
파이썬(Python), 머신러닝, 딥러닝

딥러닝 기초 - (2)선형회귀(최소제곱법) - 파이썬으로 코딩

by 굳세라(goodsarah) 2022. 6. 22.
728x90
반응형

이번 포스팅에서는 파이썬을 통해서 선형회귀를 실습해보겠다.

 

1. 최소제곱법(Least Square Method) 파이썬으로 실습하기

(1) Numpy 라이브러리 불러오기

 * Numpy : 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리할 수 있도록 지원하는 파이썬의 라이브러리

 

import numpy as np

 

 

(2) 실습용 데이터 생성 (x : 키 / y : 몸무게)

 

# x = 키 / y = 몸무게 로 정의하여 여러개의 관측값을 만든다.

x=np.array([180, 170, 175, 165, 193, 177, 181, 169, 163])
y=np.array([70, 63, 67, 70, 80, 61, 79, 69, 59])

 

 

(3) 데이터의 분포 확인(시각화)

 

# 기본적인 데이터 시각화에는 matplotlib이라는 라이브러리의 pyplot이라는 모듈이 많이 사용된다.

import matplotlib.pyplot as plt

plt.xlabel('Height')
plt.ylabel('Weight')
plt.scatter(x,y)
plt.show()

#키의 평균
mean_x = np.mean(x)
print("데이터의 평균 키는 ",mean_x," 입니다.")

#몸무게의 평균
mean_y = np.mean(y)
print("데이터의 평균 몸무게는 ",mean_y," 입니다.")

 

 

(4) 기울기(slope) "a" 구하기    (회귀식 : y = ax + b)

 

# 기울기 a의 분모 : (x - x의 평균)^2 의 총합

denom = sum([(i-mean_x)**2 for i in x])

# 기울기 a의 분자 : (x - x의 평균)*(y - y의 평균)

def cal(x, mean_x, y, mean_y):
  n = 0
  for i in range(len(x)):
    n += (x[i] - mean_x)*(y[i]-mean_y)
  return n

num = cal(x, mean_x, y, mean_y)


# 기울기 a = (num) / (denom)

a = num / denom
print("회귀선의 기울기는 ", a , "입니다.")

 

 

(5) y 절편(intercept) "b" 구하기

 

# y절편 b = y의 평균 - x의 평균 * a 

b = mean_y - mean_x*a

print("회귀선의 y 절편은 ", b , "입니다.")

 

 

(6) 구하고자하는 선형 회귀식(최소제곱법 활용)

 

# y = ax + b

print("도출된 선형 회귀식은 ", "y = ",a,"x", b)

 

 

(7) pyplot 모듈을 활용한 데이터 및 회귀선 시각화

 

plt.xlabel('Height') #x축 이름
plt.ylabel('Weight') #y축 이름

#데이터 표시
plt.scatter(x,y, label='Data')

#회귀선 방정식 입려
plt.plot(x,a*x+b, label='Linear regression', color ='red')


plt.legend()#범례작성
plt.show()#그림 출력

728x90
반응형

댓글