One-hot-encoding을 할 때
handle_unknown="ignore"
은
train에 없는 test값을 무시한다는 뜻이다.
그런데 대체 어떻게 무시하는지 궁금해서
직접 데이터셋을 변경하여 직접 확인해 보았다.
👀어떻게 무시하는지 직접 두 눈으로 확인하기 👀
검증 준비
📌 0503 실습 파일(bike sharing)에서 원핫인코딩을 하기 직전까지 실행합니다.
train에는 없는 새로운 값을 test에 만들기
📌 X_train과 X_test에서 PaymentMethod
피처를 아래와 같이 변경합니다.
X_train은 그대로 두고, X_test의 Credit card (automatic) 이었던 값들을 모두 Cash라는 새로운 이름으로 변경합니다.
⇒ train에는 없는 새로운 값이 test에 생긴 셈!
handle_unknown=’ignore’를 설정한 뒤 OneHotEncoder를 실행
원핫인코딩을 진행한 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으로 채워졌습니다.
X_test의 인코딩 결과, PaymentMethod_Credit card (automatic) 컬럼에 모두 0으로 채워졌는지 확인
📌 실제로 X_test의 인코딩 결과, PaymentMethod_Credit card (automatic) 컬럼에 모두 0으로 채워졌는지 확인해봅니다.
(위에서는 5개만 볼 수 있었으니까)
value_counts()를 찍어보면 0이라는 값이 총 1407개(X_test의 총 행의 수 = 1407) 이고, 0 이외에 다른 값은 없습니다.
🎙 소감 : 직접 궁금했던 부분을 두 눈으로 확인하니까 속이 다 시원했다. 이렇게 공부한 내용은 절대 못 잊을 것 같다. 또, 나만 알고 있기 아까워서 디스코드 강의실에 용감하게 공유를 했다. 다같이 공부하는 기쁨을 느낄 수 있어서 뿌듯한 경험이었다.
.
때는 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월 셋째주 계획 바로가기
.
.
봄이 왔다.
산책을 많이 하고
따뜻함을 많이 느끼자 ㅎㅎ