[ML] 훈련세트와 테스트세트

2025. 4. 13. 00:18·Data/AI
728x90

지도학습과 비지도학습

지도학습

: 정답이 있는 데이터를 학습시켜 정답을 구분하는 것

비지도학습

: 정답이 없는 데이터를 학습시켜 데이터를 구분

테스트 세트와 훈련 세트

훈련에 사용한 데이터와 테스트 데이터는 달라야 한다.

훈련 데이터 = 테스트 데이터일 경우 모델의 정확도가 100%로 평가될 수 있다.

## 사이킷런의 KNeighborsClassifier 클래스 임포트
from sklearn.neighbors import KNeighborsClassifier
## 모델 객체 생성
kn = KNeighborsClassifier()

## 모델 훈련
kn.fit(train_input, train_target)
## 테스트세트로 score() 평가
kn.score(train_input, train_target)

 

cf) 사이킷런은 입력 데이터(배열)의 행이 샘플, 열이 특성으로 구성되어 있을 것으로 기대한다.

 

사이킷런으로 훈련 세트와 테스트 세트 나누기

from sklearn.model_section import train_test_split

train_input, test_input, train_target, test_target = train_test_split(fish_data, fish_target)

이 함수는 기본적으로 25%를 테스트 세트로 분류한다.

 

Stratify 매개변수에 타깃 데이터를 전달해 클래스 비율에 맞게 데이터 나누기

다만, 무작위로 데이터를 나눴을 때 샘플이 골고루 섞이지 않을 수 있다.

train_input, test_input, train_target, test_target = train_test_split(fish_data, fish_target, stratify=fish_target)

이럴땐 stratify 매개변수에 타깃 데이터 전달하면 클래스 비율에 맞게 데이터를 나눠준다.

훈련 데이터가 작거나, 특정 클래스의 샘플 개수가 적을 때 유용

샘플링 편향

훈련 세트와 테스트 세트에 샘플이 골고루 섞여있지 않은 경우,

샘플링이 한쪽으로 치우쳐있을 경우

샘플 내 각 클래스의 비율이 다르면 샘플링 편향이 발생했다고 할 수 있다.

 

배열을 랜덤하게 섞을 경우 

import numpy as np

np.random.shuffle(배열)

numpy의 random shuffle을 사용해서 섞어준다.

섞기 전에 np.random.seed(숫자)처럼 seed를 활용하면 같은 숫자를 넣을때마다 동일한 난수가 뽑힌다.

 

표준점수

: 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는지를 나타냄

  • 표준점수를 통해 실제 특성값의 크기와 상관없이 동일한 조건으로 비교 가능
  • 가장 많이 사용하는 전처리 방법 = 표준점수
train_scaled = (train_input - mean) / std 
## 표준점수로 전처리 (값-평균)/표준편차
  • 표준 점수는 z점수라고 불리는 가장 유명한 전처리 방법 중 하나이다.
  • 표준 점수는 각 특성값이 0 에서 표준편차의 몇 배 만큼 떨어져 있는지를 나타내는 작업이다.
  • 특성값의 크기와 상관없이 동일한 조건으로 비교 할 수 있다.

z = x−mean/std

  • x - 평균을 뺸값을 표준편차로 나누면 된다.
  • 파이썬에서는 numpy.mean / numpy.std 함수를 둘다 제공한다.

 

728x90

'Data > AI' 카테고리의 다른 글

완벽한 스미싱 분류 모델을 향해서 (1)  (4) 2025.05.27
[LLM] RAG와 Vector Database  (0) 2025.05.26
[NLP] 1. 텍스트 마이닝 기초  (0) 2025.05.01
[LLM] Streamlit + Ollama를 통해 LLM 기반 챗봇 웹 앱 구현  (0) 2025.04.14
[LLM] Ollama + gemma2로 간단한 챗봇 만들기  (0) 2025.04.14
'Data/AI' 카테고리의 다른 글
  • [LLM] RAG와 Vector Database
  • [NLP] 1. 텍스트 마이닝 기초
  • [LLM] Streamlit + Ollama를 통해 LLM 기반 챗봇 웹 앱 구현
  • [LLM] Ollama + gemma2로 간단한 챗봇 만들기
DROPDEW
DROPDEW
💻 Developer | 기록하지 않으면 존재하지 않는다
  • DROPDEW
    제 2장 1막
    DROPDEW
  • 전체
    오늘
    어제
    • Dev (426) N
      • App·Android (1)
      • BE (44)
        • HTTP 웹 기본 지식 (8)
        • 스프링 입문 - 코드로 배우는 스프링 부트, 웹 .. (12)
        • 스프링부트와 JPA 활용 (11)
        • 스프링부트 시큐리티 & JWT (0)
        • PHP (6)
      • FE·Client (23)
        • HTML (1)
        • React (19)
        • Unity (1)
      • Data (24) N
        • AI (7)
        • Bigdata (6)
        • Database (1)
        • 빅데이터분석기사 (9) N
      • Infra (0)
      • Activity (2)
        • Education (0)
        • Intern (0)
        • 리모트 인턴십 6기 (2)
        • 구름톤 유니브 4기 (0)
        • SW교육기부단 15기 (0)
        • SK AI Dream Camp (0)
      • CS (8)
      • 취준 (13)
        • 자격증 (4)
        • 인적성·NCS (6)
        • 코테·필기·면접 후기 (3)
      • 코테 (270)
        • Algorithm (222)
        • SQL (35)
        • 정리 (13)
      • 인사이트 (27)
        • 회고 (0)
        • 금융경제뉴스 (7)
        • 금융용어·지식 (2)
        • 북마크 (7)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    매개변수탐색
    그래프탐색
    너비우선탐색
    그래프이론
    오블완
    이분탐색
    시뮬레이션
    문자열
    구현
    투포인터
    수학
    그리디알고리즘
    백준
    정렬
    다이나믹프로그래밍
    브루트포스 알고리즘
    자료구조
    티스토리챌린지
    최단경로
    누적합
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
DROPDEW
[ML] 훈련세트와 테스트세트
상단으로

티스토리툴바