본문 바로가기
CS(Computer Science)/인공지능

3. 선형 회귀

by 동욷 2023. 3. 18.

Linear Regression

=> 입력변수와 출력변수 간의 선형관계를 모델링하는 지도 학습 알고리즘

 

입력변수 x와 출력변수 y간의 선형 관계를 모델링한다.

 

ex) y = w0 + w1 * x1 + w2 * x2 + ... + wn * xn

 

w0, w1, w2, ... wn : 모델의 가중치(weight)

=> 학습 데이터를 통해 추정

 

오차 제곱합(SSE: Sum of Squared Errors)을 최소화하는 가중치를 찾는

최소제곱법(Least Squares Method)를 사용한다

일부의 경우, 경사 하강법(Gradient Descent) 나 정규 방정식 (Normal Equation)를 사용한다

 

장점

- 모델이 매우 단순하며, 이해하기 쉽다

- 모델의 결과를 해석하기 쉽다

- 입력변수와 출력변수 간의 선형관계가 존재할 때, 매우 효과적인 모델링이다

 

단점

- 비선형 관계를 모델링 할 수 없다

 

pip install scikit-learn

 

from sklearn.datasets import load_diabetes

import matplotlib.pyplot as plt

diabetes = load_diabetes

 

print(diabetes.data[0:3]) //첫번째 부터 세번째까지의 당뇨병 진행 상태 값

 

print(diabetes.target[:3])

 

plt.scatter(diabetes.data[: , 2] , diabetes.target)

plt.show()

 

//diabetes 는 scikit-learn 내장 데이터셋 중 하나로, 당뇨병 환자의 데이터를 담고 있다

//diabetes.target => 이 데이터 셋에서 사용되는 목표 변수 ( 당뇨병 환자의 질병 진행 상태를 수치적으로 나타냄)

 

 

Ex) 슬라이싱을 사용하여 훈련 데이터 x에서 100번째 부터 109번째 까지 샘플 그래프 그리기

 

from sklearn.datasets import load_diabetes

import matplotlib.pyplot as plt

diabetes = load_diabetes()

x = diabetes.data[100:110,2]

plt.plot(x)

plt.show()

 

Ex2) 같은 예제를 scatter로 산점도 그래프 그리기

 

<생략>

x = diabetes.data[100:10,2]

y = diabetes.data[100:10,3]

plt.scatter(x,y) -> x축 y축을 이용해 산점도를 그리는 함수 //여기서 diabetes.data는 2차원 배열이므로 2차원 scatter 사용

plt.show()

 

 

728x90

'CS(Computer Science) > 인공지능' 카테고리의 다른 글

6. 로지스틱 회귀  (0) 2023.03.19
5. 뉴런 생성 & 시그모이드 함수  (0) 2023.03.18
4. 경사하강법  (0) 2023.03.18
2. 딥러닝을 위한 도구  (0) 2023.03.18
1. 딥러닝을 위한 도구  (0) 2023.03.17