회귀분석 - 입력데이터를 기반으로 결과 예측하는 가격,주가, 수요, 날씨 등을 예측하는데
많이 사용되는 머신러닝 분석방법
<개요>
목표 | 보스턴 주택 가격 데이터에 회귀 분석을 수행하여 주택 가격에 영향을 미치는 환경변수를 확인하고 그에 따른 주택 가격을 예측한다. |
핵심개념 | 머신러닝, 머신러닝 프로세스, 지도학습, 사이킷런, 사이킷런의 내장 데이터셋, 분석 평가 지표 |
데이터수집 | 보스턴 주택 가격 데이터 : 사이킷런 내장 데이터셋 |
데이터 준비 및 탐색 | 1. 사이킷런 데이터셋 확인 : boston.DESCR 2. 사이킷런 데이터에셋에 지정된 + 피처와 타깃 피처 결합 |
분석 모델 구축 | 사이킷런의 선형 회귀 모델 구 |
https://www.kaggle.com/code/shreayan98c/boston-house-price-prediction
https://www.kaggle.com/competitions/boston-housing/data
- 예측을 하기 위해서는 회귀분석과 상관관계를 둘다 해야함.
모델평가 -> 낮으면 데이터 양을 추가한다던지 하이퍼 파라미터를 조정한다든지 다른 조치들을 취하면 됨.
(버리고 새로하는게 아니라)
<머신러닝>
- 머신러닝 프로세스
▶ 데이터 수집 → 데이터 전처리 및 훈련/ 테스트 데이터 분할 → 모델 구축 및 학습 → 모델 평가 → 예측
▶ 지도학습 : 학습을 하기 위한 훈련 데이터에 입력과 출력을 함께 제공,
입력에 대한 출력을 아는 상태에서 학습하는 방식
▷ 입력 : 예측변수, 속성, 특징 (다 같은말이지만 상황에 따라 다르게 사용됨)
출력 : 반응변수, 목표변수,클래스,레이블(다 같은말이지만 상황에 따라 다르게 사용됨)
MAE : 평균 절대 오차 / metrics.mean_absolute_error
MSE(주로많이쓰임) : 평균 제곱 오차 (MAE랑 같은데 마이너스 나올까봐)
RMSE : 루트 평균 제곱 오차 ( MSE값이 클까봐 나누는것)
R^2, 결정계수(주로많이쓰임) :
>> 여기서 2가지를 선택해서 많이 쓰임
<데이터 준비>
- 데이터를 불러오고 컬럼값 지정(컬럼값이 없어서)
- > MEDV 가 주택가격임.13개의 독립변수(입력, 속성,) 과 1개의 출력값(종속 변수)
- 결측값처리 (원래는 이상치도 탐색하고 그래야함, 시각화도 해보고 그러면서 체크해봄)
▲결측값이 'MEDV'열에서 54개 있기 때문에 (27행에서 해봄) 처리해야함.
▲ 'MEDV'열에서 결측값이 어디어디 있는지 궁금해서 출력해봄..ㅎ...(25행)
- MEDV : 본인 소유 주택 가격의 중앙값이 기 때문에 결측치를 중앙값으로 채워줌.
<데이터 탐색>
- shape 와 info()
-> 오 출력값이 한 50개 정도 빈값이 있구만 했다가 결측치 채우고 나니 모두가 값이 있는 것으로 나옴.
<데이터 모델링>
- 모델생성할 선형 회귀 분석을 사이키런에서 불러오고 LinearRegression
▶ 37~38행 : 독립변수 / 종속변수로 X,Y 분할하고 (MEDV가 출력값임)
▶ 41에서 훈련용/테스트용 데이터 분할하고 ( 7:3 으로, 랜덤도 고정시키고 )
▶ 44~48행 : 선형 회귀 분석으로 모델을 생성하고 fit을 통해 훈련 데이터를 훈련 시키고 48에서 예측 수행함
▶ 50~54행 : 성능 평가, 회귀 분석은 지도 학습이므로 평가 데이터 X에 대한 결과값 YY_test를 이미 알고 있는 상태에서
평가데이터 YY_test와 48에서 구한 예측결과 Y_predict 의 오차를 계산하여 모델을 평가. 평가 지표 MSE를 구하고
MSE구한 값의 제곱근을 계산해서 RMSE를 구함. 그리고 평가지표 R2도 구함.
▶ 55~56행 : 선형회귀의 Y절편, 피처의 회귀계수(기울기) 확인
▶ 선형 회귀 분석 모델을 평가 지표를 통해 평가하고 회귀 계수를 확인하여 피처의 영향을 분석한다.
- lr.coef_과 피처 이름을 묶어서 시리즈자료형으로 만들고, 회귀 계수(기울기) 값을 내림차순으로 정렬.
▷ 이를 토대로의 보스톤 주택 가격에 대한 회귀식
MEDV = 4.03 * CHAS + 0.40 * CRIM + 0.29 * RM + 0.10 * ZN + 0.02 * RAD + 0.01 * AGE + 0.01 * B - 0.01 *TAX -0.01 * PTRATIO - 0.25 * INDUS - 0.25 * NOX - 0.85 * LSTAT - 2.03 * DIS + 41 (y절편값, 위 55에서 구함)
<시각화>
'머신러닝 > 프로젝트' 카테고리의 다른 글
Proj 유방암 진단하기, 로지스틱 회귀 (0) | 2023.08.16 |
---|---|
Proj 자동차 연비 예측하기 (0) | 2023.08.09 |
Proj 타이타닉호 생존율 분석, 상관관계 찾기 (0) | 2023.08.08 |
Proj Wine 속성을 이용한 포도 품종 예측 (0) | 2023.08.07 |
Proj 데이터 기술통계 분석/데이터모델링 - 와인 퀄리티 (3) (0) | 2023.08.07 |