딥러닝 실습

[모두의 딥러닝] 3장 예제 : 선형 회귀 실습

2022. 1. 12. 20:07

 

<3장 선형 회귀 실습 예제 출력 결과>

 

x의 평균값: 5.0

y의 평균값: 90.5

분모: 20.0

분자: 46.0

기울기 a = 2.3

y 절편 b = 79.0

 

<3장 선형 회귀 실습2 예제 출력 결과>

 

공부시간=2, 실제점수=81, 예측점수=82

공부시간=4, 실제점수=93, 예측점수=88

공부시간=6, 실제점수=91, 예측점수=94

공부시간=8, 실제점수=97, 예측점수=100

MSE 최종값: 11.0

 

 

 

 

 

<3장 실습 예제 응용해보기>

 

- 연봉 액수에 따른 행복도 예측 -

 

독립 변수 x : 연봉 액수

종속 변수 y : 행복도 (1-100%, 1이 행복도 가장 낮음, 100이 행복도 가장 높음을 나타냄)

 

사용할 데이터 : 

연봉 액수 (단위: 천 만원)  |   3     |   4      |   4     |    5     |   6     |    6     |   7     |    8     |    9    |

-----------------------------------------------------------------------------------------------------------------

행복도                         |   30    |   50    |   40    |   50    |   60    |   60    |   70    |   80    |   90   |

 

 

 

- 딥러닝으로 선형 회귀 구하기 -  

 

x=[344566789]
y=[305040506060708090]
 
 
기존 선형회귀 실습 코드에 데이터 입력(x 값과 y 값) 부분만 바꿔 주었다.

 

  실행 결과

x의 평균값: 5.777777777777778

y의 평균값: 58.888888888888886

분모: 31.555555555555557

분자: 297.77777777777777

기울기 a = 9.436619718309858

y 절편 b = 4.366197183098592

 

 

 

- 딥러닝으로 평균 제곱 오차를 사용하여 선형 회귀 구하기 -  

 

1.
fake_a_b=[9.436619718309858,4.366197183098592]
 
2.
data = [ [330], [450], [440], [550], [660], [660], [770], [880], [9,90] ]
 
3.
for i in range(len(x)):
   predict_result.append(predict(x[i]))
   print("연봉액수=%.f, 행복도=%.f, 예측행복도=%.f" % (x[i], y[i], predict(x[i])))
 
 
위 세 부분을 바꿔주었다.
첫 번째 코드는 기존에 구한 기울기 a와 y 절편 b를 나타내는 부분,
두 번째 코드는 x, y의 데이터 값을 입력하는 부분,
마지막 코드는 출력할 predict_result 리스트를 완성하는 부분이다.
 
 

  실행 결과

연봉액수=3, 행복도=30, 예측행복도=33

연봉액수=4, 행복도=50, 예측행복도=42

연봉액수=4, 행복도=40, 예측행복도=42

연봉액수=5, 행복도=50, 예측행복도=52

연봉액수=6, 행복도=60, 예측행복도=61

연봉액수=6, 행복도=60, 예측행복도=61

연봉액수=7, 행복도=70, 예측행복도=70

연봉액수=8, 행복도=80, 예측행복도=80

연봉액수=9, 행복도=90, 예측행복도=89

MSE 최종값: 8.763693270735526

 

 

<알게된 점>

기존 코드를 작성하는 것뿐만 아니라 내가 다른 문제를 만들어 응용해보며 선형 회귀의 원리에 대해 더 알게되었다.

딥러닝에 대해 대충 알고는 있었지만 코드로 직접 실행하며 공부한 것은 처음이어서 엄청 어려울거라 생각했는데, 생각보다 간단하고 책에 쉽게 설명되어 있어서 조금 더 공부하면 내가 원하는 프로그램에 딥러닝을 적용하여 만들 수 있을 것 같았다.