브리프유 브리프유 로그인
자청의 유튜브 추출기

유튜브 영상의 자막과 AI요약을 추출해보세요

AI 채팅

BETA

3단계 스케일링 핵심! 데이터 불균형 해결, 정규화·표준화 완벽 가이드

게시일: 작성자: 자청의 유튜브 추출기

모델링 직전! 데이터 똑똑하게 나눠보자! 🚀

이제 드디어 모델을 만들기 바로 전 단계인 데이터 분리를 할 거야! 이건 마치 시험 보기 전에 공부할 내용이랑 답지를 따로 나누는 거랑 똑같아.

1. 입력값(X) vs 출력값(Y), 이게 뭘까? 🤔

  • 입력값 (X): 모델이 보고 배우는 정보들이야. 예를 들어, 사람의 나이, 요금, 성별 같은 것들이지. 이걸 설명 변수라고도 불러.
  • 출력값 (Y): 모델이 예측하고 싶은 정답이야. 우리가 알고 싶은 건 '생존 여부'니까 이게 바로 출력값이 되는 거지. 이걸 목표 변수라고도 해.

결국, "이런 입력값(X)이 주어졌을 때, 이런 출력값(Y)이 나올 거야!" 라고 모델이 배우는 거야.

2. 판다스랑 사이킷런, 친해지자! 🤝

이런 데이터들을 다루고 분리하는 데 아주 유용한 친구들이 있어.

  • 판다스 (Pandas): 데이터를 표처럼 다루기 쉽게 만들어주는 라이브러리야. 데이터를 불러오고, 필요한 부분만 쏙쏙 뽑아내고, 없는 값(결측치)도 처리할 수 있어.
  • 사이킷런 (Scikit-learn): 머신러닝 모델을 만들 때 꼭 필요한 기능들을 모아놓은 라이브러리야. 데이터를 분리하는 기능도 여기에 들어있지.

3. 타이타닉호에서 생존자를 찾아보자! 🚢

이번에는 실제로 타이타닉호 데이터를 가지고 생존 여부를 예측하는 예시를 만들어 볼 거야.

  • 데이터 준비: 나이, 요금, 성별, 등급, 생존 여부 이 다섯 가지 정보만 딱 뽑아서 쓸 거야. 이때, 데이터에 빠진 값(결측치)이 있으면 모델이 헷갈릴 수 있으니까 깨끗하게 없애줄 거야. (단, '덱' 정보는 이번엔 그냥 그대로 둘 거야.)

4. 입력값(X)과 출력값(Y)으로 싹둑! ✂️

이제 준비된 데이터를 입력값(X)과 출력값(Y)으로 나눠보자.

  • 입력값 (X): 나이, 요금, 성별, 등급
  • 출력값 (Y): 생존 여부

이렇게 나누면 총 714개의 데이터가 나올 거야.

5. 글자를 숫자로 바꿔주는 마법! ✨ (원-핫 인코딩)

그런데 '성별'이나 '등급'처럼 글자로 된 정보는 모델이 바로 이해하기 어려워. 그래서 이걸 숫자로 바꿔줘야 해. 이때 원-핫 인코딩이라는 방법을 쓰는데, 마치 각 항목마다 새로운 칸을 만들어서 해당되는 칸에만 1을 표시해주는 방식이야. 판다스의 get_dummies라는 기능을 쓰면 쉽게 할 수 있어!

6. 공부할 데이터 vs 시험 볼 데이터 분리! 📚📝 (트레인-테스트 스플릿)

이제 진짜로 데이터를 두 그룹으로 나눌 거야.

  • 학습용 데이터 (Train Data): 모델이 열심히 공부할 때 쓸 데이터야.
  • 검증용 데이터 (Test Data): 모델이 공부한 내용을 얼마나 잘 기억하고 있는지 시험 볼 때 쓸 데이터야.

사이킷런의 train_test_split 이라는 함수를 쓰면 이걸 쉽게 할 수 있어.

  • test_size=0.2: 전체 데이터의 20%를 검증용 데이터로 사용하겠다는 뜻이야. 그럼 나머지 80%는 학습용 데이터가 되겠지? (학습 80% : 검증 20% 비율)
  • random_state: 이건 마치 복권 번호를 정하는 것처럼, 이 숫자를 똑같이 맞추면 너랑 나랑 똑같은 방식으로 데이터가 나뉘게 돼. 그래서 결과를 비교하기 좋아.
  • shuffle=True: 데이터를 무작위로 섞어서 분리해줘.

7. 잘 나뉘었는지 확인해볼까? 👀

데이터를 나누고 나면, 학습용 데이터랑 검증용 데이터의 생존자 비율이 비슷해야 해. 그래야 모델이 특정 그룹에만 치우치지 않고 공정하게 배울 수 있거든.

  • 만약 비율이 너무 다르다면, stratify=y 옵션을 추가해주면 비율을 비슷하게 맞춰서 분리해줘.

시각화 도구를 이용해서 그래프로도 확인해보면, 두 데이터 그룹의 분포가 비슷하게 잘 나뉜 것을 볼 수 있을 거야!

🚀 정리하자면!

  • 입력값 (X): 모델이 배우는 정보 (숫자로 바꿔야 함!)
  • 출력값 (Y): 모델이 예측하는 정답
  • 원-핫 인코딩 (get_dummies): 글자를 숫자로 바꿔주는 방법
  • train_test_split: 데이터를 학습용과 검증용으로 나누는 함수
  • test_size: 검증용 데이터의 비율
  • random_state: 데이터를 똑같이 나누기 위한 설정
  • stratify=y: 생존자 비율 등을 비슷하게 맞춰서 나눌 때 사용

이렇게 데이터를 잘 분리해야 모델이 제대로 학습하고 좋은 예측을 할 수 있답니다! 😊

최근 검색 기록