실행 순서
1. 데이터 수집
2. 데이터 전처리
3. 훈련 모델 생성(fit)
4. 모델 검증(score)
5. 예측(predict)
1. 데이터 수집
- 임의 데이터 생성
# - 도미 길이와 무게
bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0,
30.0, 30.7, 31.0, 31.0, 31.5, 32.0, 32.0, 32.0,
33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5,
39.5, 41.0, 41.0]
# - 도미 무게
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0,
390.0, 450.0, 500.0, 475.0, 500.0, 500.0, 340.0,
600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0,
685.0, 620.0, 680.0, 700.0, 725.0, 720.0, 714.0,
850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]
# - 빙어 길이
smelt_length = [9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8, 11.8, 12.0, 12.2, 12.4, 13.0, 14.3, 15.0]
# - 빙어 무게
smelt_weight = [6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0, 9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9]
- 산점도로 데이터 확인
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
(해석)
파란색 : 도미, 주황색 : 빙어
도미와 빙어는 길이에 따라 무게가 증가하는 형태를 보임
2. 데이터 전처리
- 데이터 합치기
- 도미와 빙어의 길이는 길이끼리, 무게는 무게끼리
# 문자열 합치기
length = bream_length + smelt_length
weight = bream_weight + smelt_weight
- 하나의 데이터 셋으로 만들기 (2차원 데이터셋으로 생성)
- 형태 : [[길이, 무게], [길이, 무게],...]]
- 변수명 : fish_data
- zip() : 각각의 리스트 안에서 각 인덱스의 쌍을 반환해줍니다
fish_data = [[leng, wei] for leng, wei in zip(length, weight)]
- 정답 데이터셋 만들기(종속변수)
- 1차원 리스트로 생성
- 종속변수의 갯수와 독립변수 갯수는 동일해야함
- 도미 : 1, 빙어 : 0
- 변수명 : fish_target
fish_target = [1] * 35 + [0] * 14
- 데이터셋 분리(훈련/테스트)
- [방법1] 샘플링 편향 문제가 있을 수 있으므로 shuffle() 함수 사용
- 데이터를 랜덤으로 섞어서 배치
- shuffle() 함수 사용 후 임의로 비율나누기 추가작업 필요
- [방법2] train_test_split() 함수사용 : 섞어주기, 비율로 나누기
- [방법1] 샘플링 편향 문제가 있을 수 있으므로 shuffle() 함수 사용
from sklearn.model_selection import train_test_split
# test_size = 비율 나누기
# random_state = seed값 설정(고정)
train_input, test_input, train_target, test_target = \
train_test_split(fish_data, fish_target, test_size=0.25, random_state=42)
3. 훈련 모델 생성
- 사전 작업 : conda install scikit-learn
from sklearn.neighbors import KNeighborsClassifier
- class 객체 생성하기
kn = KNeighborsClassifier()
- 훈련모델 생성(모델 학습)
- 훈련데이터 변수명 : train_x or train_data
- 훈련데이터의 정답 변수명 : train_y or train_target
- 테스트 데이터 변수명 : test_x, test_data
'Python > MachineLearning' 카테고리의 다른 글
[NLP][ML] 문자열 기반 카테고리 분류 예측 모델 (0) | 2025.01.22 |
---|---|
Tensorflow dataset 'cats_vs_dogs' 이미지 분류 (0) | 2024.04.01 |
[Tensorflow] 'contib()' 오류 해결 (0) | 2022.06.02 |