-
[python / scikitlearn] 다중회귀분석 예제 코드 및 설명python 데이터 분석 2024. 3. 19. 10:16
패키지 불러오기 및 데이터 불러오기
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression, Lasso, Ridge, LassoCV, BayesianRidge import statsmodels.formula.api as sm import matplotlib.pylab as plt from dmba import regressionSummary, exhaustive_search from dmba import backward_elimination, forward_selection, stepwise_selection from dmba import adjusted_r2_score, AIC_score, BIC_score import pandas as pd toyota = pd.read_csv('./Datasets_DataMiningForBusinessAnalytics/ToyotaCorolla.csv') toyota.describe()
데이터 불러오기 및 데이터 요약 보기
toyota = toyota.iloc[0:1000] predictors = ['Age_08_04', 'KM', 'Fuel_Type', 'HP', 'Met_Color', 'Automatic', 'CC', 'Doors', 'Quarterly_Tax', 'Weight'] outcome = 'Price' # partition data X = pd.get_dummies(toyota[predictors], drop_first =True) y = toyota[outcome] train_X, valid_X, train_y, valid_y = train_test_split(X, y, test_size = 0.4, random_state=1) car_lm = LinearRegression() car_lm.fit(train_X, train_y) #print coefficients print(pd.DataFrame({'Predictor' : X.columns, 'coefficient': car_lm.coef_})) # print preformance measures (training data) regressionSummary(train_y, car_lm.predict(train_X))
데이터 세트를 행으로 자르는 메소드 .iloc[] 을 통해서, 첫번째 ~ 1000번째 행까지만 사용하기 위해 데이터 자르기
predictors 는 말 그대로, 리스트 안에 열의 이름을 담아서 매우 많은 열(39개) 중에서 10개의 열에 대해서 분석하기 위해서 자른다.
이렇게 자르는 이유는 데이터 양이 너무 많으면, 회귀분석 등 다른 분석을 돌릴 때 시간이 오래 걸리기 때문에 다른 데이터 분석을 할 때도 이러한 전처리를 하면 좋다.
outcome : 예측하고자 하는 Y 를 outcome 이라고 변수 선언을 한다.
# partition data
머신러닝에서는 데이터를 훈련 / 검증 데이터로 나누어서, 훈련 데이터를 통해서 모델을 구축하고, 이를 검증 데이터를 활용하여, 모델의 성능을 평가하는 과정인데,
이 부분은 데이터를 자르는 과정이다.
X = pd.get_dummies(toyota[predictors], drop_first =True)
pd.get_dummies 함수는 범주형 데이터를 수치형 데이터로 변환해주는 함수이다.
- 이러한 함수를 사용하는 이유는 간단히 말해서, 머신러닝 알고리즘에서 수치형 데이터를 요구하기 때문이다.
- drop_first=True 옵션은 더미 변수의 함정을 피하기 위해, 첫 번째 더비 변수를 제거하여, 모델의 다중공선성 문제를 방지한다.
따라서, 위의 코드는 X 라는 변수에 데이터를 알맞게 변환하는 과정이다.
train_X, valid_X, train_y, valid_y = train_test_split(X, y, test_size = 0.4, random_state=1)
위의 코드의 train_test_split 함수는 데이터를 훈련 세트(train-set)와 검증 세트(test-set | validation-set)로 분할하는 데 사용된다.
이 함수는 위의 설명처럼 모델을 학습하기 위한 메이터와 모델의 성능을 평가하기 위한 데이터로 나누는 작업이다.
이 과정을 통해
- train_X 와 train_y 는 모델 학습에 사용되는 훈련 데이터의 특성과 레이블로 나뉘고,
- valid_X 와 valid_y 는 학습된 모델의 성능을 평가하는 데 사용되는 검증 데이터의 특성과 레이블로 나뉜다.
train_test_split 함수의 매개변수
- test_size=0.4 : 전체 데이터 세트 중 검증 세트로 할당될 데이터의 비율을 나타낸다.
- 위의 코드의 경우 전체 데이터의 40% 가 검증 세트로 설정되고, 나머지 60% 는 훈련 세트로 나뉜다.
- random_state = 1
- 랜덤하게 train / test set 로 나누되, 데이터를 섞는 과정에서 일련된 결과를 보장한다. 이는 데이터 분석 결과를 리뷰하거나, 남들에게 공유할 때, 시도마다 결과값이 달라지면 공유 및 리뷰가 어렵기 때문에 사용한다. (결과의 재현성 보장)
이와 같은 데이터 분할(partition data) 과정은 모델의 일반화 능력을 평가하고, 과적합을 방지하는 데 중요한 역할을 한다,
검증 데이터 셋 20개의 예측값 및 검증 데이터 셋에 대해 성능을 보기 위한 코드
# 표 6-4 : 검증 데이터셋 20개의 예측값 및 검증 데이터셋에 대한 성능 요약 # Use predict() to make predictions on a new set car_lm_pred = car_lm.predict(valid_X) result = pd.DataFrame({'Predicted' : car_lm_pred, 'Actual' : valid_y, 'Residual' : valid_y - car_lm_pred}) # Residual : 잔차 print(result.head(20)) # print preformance measures (validation data) regressionSummary(valid_y, car_lm_pred)
사이킷런 다운로드 방법
[python / 회귀] 다중회귀분석 방법 예제 - 1
package 들 설치 pip install -U scikit-learn pip install statsmodels pip install dmba scikit-learn 은 python 에서 머신러닝을 다룰 때, 필수적인 라이브러리이다. 이는 여러 모듈이 있는데, 모듈은 간단히 말하자면 코
shartarc.tistory.com
궁금한거 있거나, 수정사항 보이시면 댓글 남겨주세요!!
'python 데이터 분석' 카테고리의 다른 글
[sklearn / python / pandas] 선형, 이차, 삼차, 로그 모델 RMSE, R2 비교 (0) 2024.04.08 [python / pandas] 데이터 분석 기초 - DataFrame 생성, csv 파일 불러오기 (0) 2024.03.20 [python / 회귀] scikit-learn 설치 및 다중회귀분석 방법 예제 (0) 2024.03.18 [python / selenium (셀레니움)] 설치 방법 (0) 2024.03.16 [python / 셀레니움] 데이터 크롤링 코드 공유 ( 공공벤치 데이터 ) (0) 2024.03.16