빅데이터분석기사

빅분기 2유형 (2) (회귀)

하웅이 2024. 11. 30. 04:24

* 내가보려고만드는 빅데이터분석기사 정리본 ◠‿◠

* 빅데이터분석기사 시험 대비용 코드 (실제 분석보다 단순화)

* 데이터마님 블로그를 참고하여 작성하였습니다.

 


0. 순서

작업형 2유형 분류 문제 풀이 순서는 아래와 같이 고정해놓음 (총 8단계)

  1. 데이터 불러오기
  2. 이상치 및 결측치 확인하고 변수 정리
    💥 결측치는 채워넣고, 이상치는 그대로 두기
  3. 범주형 데이터 더미화
    · 라벨인코딩(LabelEncoder) - 순서형 변수
    · 원핫인코딩(get_dummies) - 명목형 변수
    · 계산량 문제만 없다면, 회귀에서 원핫인코딩이 안전
  4. 데이터 분할
  5. 학습
  6. 평가
    분류모형 평가지표: MSE, RMSE, MAE, MAPE, R^2
  7. 예측
    트리모형: RandomForestRegressor
    트리모형이 가장 무난하기 때문.
  8. 제출

1. Baseline Code

8단계에 맞추어 코드를 작성하면 요로케 ~

 

* (기본 정보) 아래 데이터는 학생 성적을 예측하는 데이터입니다.
   x_train_data: 478rows*33columns
   y_train_data: 678rows*33columns

* 즉, 학생(StudentID)의 성적(G3)을 예측하는 문제

 

#1 데이터불러오기
import pandas as pd
import numpy as np
x_train = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/studentscore/X_train.csv")
y_train = pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/studentscore/y_train.csv")
x_test= pd.read_csv("https://raw.githubusercontent.com/Datamanim/datarepo/main/studentscore/X_test.csv")

#2 변수정리
#StudentID
x_train = x_train.drop(columns=['StudentID'])
x_test = x_test.drop(columns=['StudentID'])
y = y_train.iloc[:,-1]

#3 더미화
x_train_dummies = pd.get_dummies(x_train)
x_test_dummies = pd.get_dummies(x_test)

#4 분할
from sklearn.model_selection import train_test_split
x_train, x_val, y_train, y_val = train_test_split(x_train_dummies, y, test_size=0.3, random_state=52)

#5 학습
from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor()
rfr.fit(x_train, y_train)

#6 평가
y_pred_val = rfr.predict(x_val)
from sklearn.metrics import mean_squared_error, mean_absolute_error, mean_absolute_percentage_error, r2_score
print('mse:', mean_squared_error(y_val, y_pred_val))
print('rmse:', np.sqrt(mean_squared_error(y_val, y_pred_val)))
print('mae:', mean_absolute_error(y_val, y_pred_val))
print('mape:', mean_absolute_percentage_error(y_val, y_pred_val))
print('r2:', r2_score(y_val, y_pred_val))

#7 예측
y_pred = rfr.predict(x_test_dummies)

#8 제출
summit = pd.DataFrame()
summit['G3'] = y_pred
summit.to_csv('summit.csv', index=False)