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 - 평균을 뺸값을 표준편차로 나누면 된다.
- 파이썬에서는 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 |