머신러닝에서 선형 회귀 분석은 데이터의 관계를 선으로 표현하여 연관관계를 알 수 있다. 이 연관관계를 알면 미래의 어떤 사건에 대해 데이터적으로 예측이 가능하다. 산점도인 Scatter Plot 와 연관이 있고, 확률과 통계의 부분이기에 개념은 알아두도록 하자.
선형 회귀 분석 Linear Regression
선형회귀는 두 가지 이상의 구분되어 여기저기 분포되어 있는 데이터들의 상관관계를 선으로서 보여준다.
산점도와 연관이 있으며, 산점도에서 점으로써 데이터의 분포를 표시했다면 선형 회귀는 선으로써 데이터의 평균 가치와 연관관계를 알 수 있다.
선으로써 표시하기 때문에 향후 미래에 내재된 결과가 어떻게 될지 예상이 가능할 수 있다.
산점도 Scatter Plot 는 아래의 내용을 참고하자
▶ 머신러닝 산점도 두 가지 이상 데이터의 상관관계를 점으로 표현 Machine Learning Scatter Plot
현실세계를 수치화하여 선으로써 표현하기 때문에 선의 진행방향에 따라 미래 예측이 가능하다는 것.
하지만, 이런 분포도가 전부 선형회귀를 이끌어 내지는 않는다.
선형회귀에 걸맞는 데이터가 있는 반면 그렇지 못한 것들이 더 많기 때문이다.
결과적으로 선형회귀는 두 데이터의 관계를 알 수 있지만, 이것 또한 평균치에 얼마나 많이 근접하고 있는지를 파악할 수 있는 것이다.
평균에 가깝다는 것은 이질적인 두가지의 수치화가 가능한 데이터가 비슷하다는 결론을 낼 수 있는 것이기도 하다.
샘플데이터 만들기
파이썬으로 선형회귀를 표현하기 위해 샘플데이터를 만들어 본다.
물론, 대충 만들 것이기에 선형회귀에 맞지 않을 수 있다.
다만 션형회귀가 이런 것이다 라는 것만 알고 넘어가도록 하자.
vX = [15, 17, 18, 17, 12, 117, 12, 19, 14, 111, 112, 19, 16]
vY = [991, 861, 871, 881, 1111, 861, 1031, 871, 941, 781, 771, 851, 861]
print("개별 값 : ", vX, type(vX), vX)
print("개별 값 : ", vY, type(vY), vY)
plt.scatter(vX, vY)
plt.show()
이전에 했던 산점도를 그리는 코드를 이용한다.
산점도가 표시된다면 파이썬으로 선형회귀를 시각화 할 수 있기 때문이다.
산점도인 Scatter Plot 으로 이용하기에 부끄러운 시각화이다.
하지만, 이것마저도 파이썬은 선형회귀를 그려낸다.
당연하겠지만, 정상적인 산점도는 점의 모양이 점차 위로 올라가는 곡선이거나, 아래로 내려가는 곡선을 그린다.
보통 이런 모양이거나 반대의 모양이다.
독립변수와 종속변수가 있는데 이 개념은 찾아보도록 하자.
추후에 다뤄볼 예정이다.
단순히 독립변수는 원인, 종속변수는 결과 라고 익혀두는 편이 편하다.
선형회귀분석 그리기
위에서 만든 샘플데이터로 선형회귀 곡선을 그려본다.
좀 많이 추가가 되었다.
선형회귀곡선을 그리기 위해서는 SciPy 라이브러리가 필요하다.
SciPy.linregress() 함수를 이용하여 선형회귀에 사용할 데이터를 추출한다.
여기서 나온 데이터를 이용해 선형회귀곡선을 그릴 수 있다.
SciPy 라이브러리에 관한 것은 나중에 자세히 다뤄보도록 한다.
import numpy
import matplotlib.pyplot as plt
from scipy import stats
print('----------------------------------------------------------------------------------------------------')
vX = [15, 17, 18, 17, 12, 117, 12, 19, 14, 111, 112, 19, 16]
vY = [991, 861, 871, 881, 1111, 861, 1031, 871, 941, 781, 771, 851, 861]
print("개별 값 : ", vX, type(vX), vX)
print("개별 값 : ", vY, type(vY), vY)
slope, intercept, r, p, std_err = stats.linregress(vX, vY)
def fnLinearRegression(x):
return slope * x + intercept
print("slope : ", slope, type(slope), slope)
print("intercept : ", intercept, type(intercept), intercept)
print("r : ", r, type(r), r)
print("p : ", p, type(p), p)
print("std_err : ", std_err, type(std_err), std_err)
ModelLinearRegression = list(map(fnLinearRegression, vX))
plt.scatter(vX, vY)
plt.plot(vX, ModelLinearRegression)
plt.show()
print('----------------------------------------------------------------------------------------------------')
산점도나 선형회귀곡선이라 부르기 부끄러울 정도의 선이 나왔다.
어쨌든 샘플데이터로 주어진 것 또한 파이썬은 선형회귀곡선을 그려준다.
위에서 잠깐 언급했지만 독립변수는 원인이며 종속변수는 결과이다.
X축을 원인이라 하고, Y축을 결과라면 하면, 이 데이터의 관계가 어떤지 알 수 있다.
부끄러운 데이터이긴 하지만 말이다.
'programming > AI' 카테고리의 다른 글
머신러닝 독립변수 종속변수 원인과 결과의 상관관계 (0) | 2021.08.18 |
---|---|
비주얼 스튜디오 코드에 텐서플로우 설치하기 install tensorflow visual studio code (0) | 2021.08.15 |
머신러닝 산점도 두 가지 이상 데이터의 상관관계를 점으로 표현 Machine Learning Scatter Plot (0) | 2021.08.14 |
구글 텐서플로우란 머신러닝 오픈소스 플랫폼 (0) | 2021.08.13 |
머신러닝과 정규분포 Normal Distribution NumPy.random.normal(평균,표준편차,갯수) (0) | 2021.08.13 |
댓글