[230323] 멋쟁이사자처럼 AI SCHOOL 8기 3월 넷째주 WIL

조세연·2023년 3월 23일
0

멋사 AI SCHOOL 8기

목록 보기
35/35

🐸 이번주 학습 내용

  • 3월 20일 : Randomized Search CV로 최적의 하이퍼 파라미터 구하는 법, Benz 캐글 데이터로 피처가 많은 경우 EDA하는 법을 배웠다.
  • 3월 21일 : Benz 데이터를 XGBoost 모델로 학습 및 예측하는 법을 배웠다.
  • 3월 22일 : Benz 데이터를 LightGBM, Catboost 모델로 학습 및 예측하는 법, credit card 데이터로 한쪽으로 치우친 label이 있는 데이터를 다루는 법을 배웠다.

🐸 이번주 기억에 남은 공부

1. handle_unknown="ignore"의 의미

One-hot-encoding을 할 때 handle_unknown="ignore"
train에 없는 test값을 무시한다는 뜻이다.
그런데 대체 어떻게 무시하는지 궁금해서
직접 데이터셋을 변경하여 직접 확인해 보았다.

  • 👀어떻게 무시하는지 직접 두 눈으로 확인하기 👀

    1. 검증 준비
      📌 0503 실습 파일(bike sharing)에서 원핫인코딩을 하기 직전까지 실행합니다.

    2. train에는 없는 새로운 값을 test에 만들기

      📌 X_train과 X_test에서 PaymentMethod피처를 아래와 같이 변경합니다.
      X_train은 그대로 두고, X_test의 Credit card (automatic) 이었던 값들을 모두 Cash라는 새로운 이름으로 변경합니다.
      ⇒ train에는 없는 새로운 값이 test에 생긴 셈!

    3. handle_unknown=’ignore’를 설정한 뒤 OneHotEncoder를 실행

    4. 원핫인코딩을 진행한 X_train, X_test 값을 데이터프레임 형태로 만들기

      📌 1) X_train의 인코딩 결과
      X_train의 PaymentMethod 피처의 Electronic check, Mailed check, Bank transfer (automatic), Credit card (automatic)값들이 모두 새로운 컬럼으로 만들어졌습니다.

      📌 2) X_test의 인코딩 결과

      X_train의 인코딩 결과와 똑같이 PaymentMethod 피처의 컬럼들이 새로 만들어졌습니다.

      단, Cash는 train에는 없고 test에만 있는 값입니다.

      따라서 Cash는 새로운 컬럼으로 만들어지지 않았고, PaymentMethod_Credit card (automatic) 컬럼에 모두 0으로 채워졌습니다.

    5. X_test의 인코딩 결과, PaymentMethod_Credit card (automatic) 컬럼에 모두 0으로 채워졌는지 확인

      📌 실제로 X_test의 인코딩 결과, PaymentMethod_Credit card (automatic) 컬럼에 모두 0으로 채워졌는지 확인해봅니다.
      (위에서는 5개만 볼 수 있었으니까)

      value_counts()를 찍어보면 0이라는 값이 총 1407개(X_test의 총 행의 수 = 1407) 이고, 0 이외에 다른 값은 없습니다.

🎙 소감 : 직접 궁금했던 부분을 두 눈으로 확인하니까 속이 다 시원했다. 이렇게 공부한 내용은 절대 못 잊을 것 같다. 또, 나만 알고 있기 아까워서 디스코드 강의실에 용감하게 공유를 했다. 다같이 공부하는 기쁨을 느낄 수 있어서 뿌듯한 경험이었다.

.

2. 동료와 함께 해결한 SQL 문제 -> SQL 문제 바로가기

때는 3월 22일 오전 8시.
어젯밤 풀지 못한 SQL 문제를 여전히 못풀고 끙끙거리다
같이 아침 공부를 하는 동료분에게 도움을 요청했다.

SELECT CAR_ID, START_DATE, END_DATE,
    MAX(CASE WHEN '2022-10-16' BETWEEN START_DATE AND END_DATE THEN '대여중' ELSE '대여 가능' END) AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC 

문제의 답에서 왜 MAX()를 사용하는지 이해를 못했다.

문제는 가장 최신 날짜의 대여 날짜에 10월 16일이 포함되는 것이 아니라 과거 대여 날짜까지 고려해서 대여기간에 10월 16일이 포함되면 출력하는 것이기 때문에 최신 날짜를 출력할 필요가 없기 때문이다...

우선 동료분께서 찾아주신 자료를 보면

Case문에 MAX를 씌우면 Case문으로 추출한 날짜 중 최신 날짜를 출력한다는 것을 알게되었다.

이것저것 자료를 마구 찾아보고 서로 대화를 하던 중..

이렇게 깨달음을 얻게 되었다!!

사실 위 답변에서 MAX()는 단순히 CASE문에 해당되는 최신 날짜를 뽑아내기 위해 사용하는 것보다는
GROUP BY를 하기 전 CASE문의 조건인 10월 16일이 대여기간에 포함되는 기록 중 최댓값을 찾기 위함이었다.
MAX()를 사용하지 않고 GROUP BY를 하면 CASE문의 조건을 무시하고 가장 상단의 행을 가져오기 때문!
즉, GROUP BY를 하기 전 먼저 집계를 하기 위해 MAX()를 사용한 것!

🎙 소감 : 혼자서 끙끙 거리다가 동료와 함께 문제를 해결했을 때 카타르시스가 엄청났다... 함께 공부하는 기쁨을 여기서 다시 한 번 느꼈다.

.

🐸 칭찬

나혼자서 공부한 내용을
다른 사람들과 공유하는 기쁨을 느꼈다.

또, 수업시간에 궁금한 게 많아서 질문을 많이 했는데
나의 질문이 도움이 되었다는 분들이 많이 계셨다.

혼자서 잘 먹고 잘 살기 보다는
내 능력으로 더 좋은 세상을 만들고 싶다는
내 가치관을 직접 실현해본 일주일이었다.

앞으로 남은 2개월, 그리고 그 이후에도
내가 경험한 것을 나누고 베푸는 삶을
살아야지.

.

🐸 반성

수업 시간에
빨리 코드를 치고 싶은 마음에
강사님의 말씀에 집중하지 않은 순간이 꽤 있었다.

일단 개념을 이해하는게 우선이니
코드는 이후에 작성하도록 하자..세연아!?!??!?!!!!

인생 생각보다 길다.
조급하게 살지 말자.

.

🐸 다음주 계획

🧐 지난 계획을 얼마나 잘 지켰나?

피드백은 말만 하는 게 아니라 지키라고 있는 것.
과거 조세연은 이런 목표를 세웠다. 👉 3월 셋째주 계획 바로가기

  1. 태블로 퍼플릭에 대시보드 1개 업로드
    : ⭕ 태블로 스터디 덕분에 이 계획을 지킬 수 있었다. 하지만 필사한 대시보드라 나의 창작 대시보드로 태블로 퍼블릭을 채우는 것을 목표로 꾸준히 연습하자!
  2. 취업용 노션 포트폴리오 만들기
    : ❌ 머신러닝 복습만으로 벅차서 포폴 찾아볼 시간도 없었다..
  3. KMOOC 머신러닝 강의 완강하기
    : ❌ 이것도... 나도 강의 너무 보고싶은데... 태블로 스터디, 머신러닝 스터디까지 추가로 하느라 너무 바빴다 ㅠ

.

✨ 이번주 새로운 계획 3가지

  1. K-MOOC 머신러닝 강의 완강하기
  2. 태블로 퍼블릭에 대시보드 완성본 1개 업로드
  3. 내가 좋아하는 음식(진짜 맛있는 거!) 1번 이상 먹기

.

🐸 나에게 한마디!

봄이 왔다.
산책을 많이 하고
따뜻함을 많이 느끼자 ㅎㅎ

profile
HR Analyst가 되고 싶은

0개의 댓글