250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Memory
- sqldeveloper
- 파이썬
- LOG
- 도커
- docker
- 도커이미지
- 복구
- Docker image
- 시계열
- SQL
- TensorFlow
- GPU
- 쿼리
- 리눅스
- Python
- GridSearchCV
- postgre
- psycopg2
- pgadmin
- cpu
- oracle
- 머신러닝
- 교차검증
- Linux
- psql
- 연결
- jupyternotebook
- 오라클
- Jupyter
Archives
- Today
- Total
areum
[ML] Linear Regression(선형 회귀) 본문
728x90
선형 회귀 정의
선형회귀란 종속 변수 Y와 1개 이상의 독립변수 X와의 선형 상관관계를 모델링하는 회귀분석 기법입니다.
독립변수의 개수가 1개인 경우 단순 선형 회귀라고 하며, 독립변수가 2개 이상인 경우는 다중 선형 회귀라고 합니다.
오늘 분석할 내용은 독립변수가 1개인 단순 선형 회귀입니다.
연령별 혈압 예측하기
1. 기본적으로 사용하는 패키지와 CSV파일을 불러옵니다.
(CSV파일의 출처는 제공해드리지 못하는점 양해부탁드립니다 ㅠ)
from sklearn.linear_model import LinearRegression
import pandas as pd
import numpy as np
from sklearn.datasets import make_regression
import statsmodels.api as sm
import matplotlib.pyplot as plt
df = pd.read_csv("Age_SBP.csv")
2. plot을 통해 연령대별 혈압이 어떠한지 파악해보도록 하겠습니다.
X = df["AGE"]
y = df["VITALSBP"]
plt.plot(X, y, 'o')

3. statsmodels(OLS)
model = sm.OLS.from_formula("y ~ X", data=df)
result = model.fit()
print(result.summary())

OLS회귀분석 결과 해석
| 분석결과 | 해석 |
| No. Observations | Number of observations, 관찰표본 수, 즉 총 표본 수 |
| Df Residuals | 잔차의 자유도, 젠체 표본 수에서 측정되는 변수들(종속변수 및 독립변수)의 개수를 뺀 것 Df Residuals = 표본수 - (종속변수 개수 + 독립변수 개수) |
| Df Model | 독립변수의 개수 |
| R-squared | 결정계수, 전체 데이터 중 해당 회귀모델이 설명할 수 있는 데이터의 비율, 회귀식의 설명력 1에 가까울수록 성능이 좋다. |
| Adj. R-squared | 모델에 도움이 되는 데이터에 따라 조정된 결정 계수 |
| F-statistic | F통계량으로 도출된 회귀식이 적절한지 파악할 수 있다. 0과 가까울수록 적정한 것. |
| Prob (F-statistic) | 회귀식이 유의미한지 판단. 0.05이하일 경우 변수끼리 매우 관련있다고 판단. |
| AIC |
표본의 개수와 모델의 복잡성을 기반으로 모델을 평가 수치가 낮을수록 좋음 |
| BIC |
AIC와 유사하나 패널티를 부여하여 AIC보다 모델 평가 성능이 더 좋다. 수치가 낮을수록 좋음 |
| coef | 회귀계수 |
| std err | 계수 추정치의 표준오차 값이 작을수록 좋음 |
| t | t-test, 독립변수와 종속병수 사이의 상관관계 값이 클수록 상관도가 높음 |
| P>|t| | 독립변수들의 유의 확룰 0.05보다 작아야 유의미함 |
| [0.025 0.975] | 회귀 계수의 신뢰 구간 |
| Omnibus | 디아코스티노 검정, 비대칭도와 첨도를 결합한 정규성 테스트 값이 클 수록 정규분포에 따름 |
| Prob(Omnibus) | 디아코스티노 검정이 유의한지 판단 0.05보다 작아야 유의미함 |
| Skew | 왜도, 평균 주위의 잔차들의 대칭하는지를 보는 것 0에 가까울수록 대칭 |
| Kurtosis | 첨도, 잔차들의 분포 모양 3에 가까울수록 정규분포 |
| Durbin-Watson | 더빈왓슨 정규성 검정이며, 잔차의 독립성 여부를 판단 1.5 ~ 2.5사이일때 잔차는 독립적이라고 판단, 0이나 4에 가까울수록 잔차들은 자기상관을 가지고 있다고 판단 |
| Jarque-Bera (JB) | 자크베라 정규성 검정 값이 클 수록 정규분포의 데이터를 사용했다는 것. |
| Cond. No. | 다중공선성 검정. 독립변수간 상관관계가 있는지 보는 것 10이상이면 다중공선성이 있다고 판단 |
4. 수치 검증해보기
print("TSS = ", result.uncentered_tss)
print("ESS = ", result.mse_model)
print("RSS = ", result.ssr)
print("ESS + RSS = ", result.mse_model + result.ssr)
print("R squared = ", result.rsquared)

'Programming > Machine Learning' 카테고리의 다른 글
| [ML] One-way ANOVA(일원 분산 분석) (0) | 2023.03.24 |
|---|---|
| [시계열 분석] Prophet 파라미터 정리 (0) | 2023.03.23 |
| [ML] 로지스틱 회귀 개념 정리 (0) | 2023.03.23 |
| [시계열 분석] Prophet을 이용한 기온 예측 (0) | 2023.03.22 |
| [ML] LogisticRegression(로지스틱 회귀) (0) | 2023.03.21 |