혼공머_2_1 훈련 세트와 테스트 세트
Jun 27, 2021
»
writing
혼자공부하는머신러닝+딥러닝 수업을 참고하여 작성하였습니다
2_1_훈련 세트와 테스트 세트
훈련 세트와 테스트 세트
1. 머신러닝 1) 지도 학습 : 정답(타깃)이 있으니 알고리즘이 정답을 맞히는 것을 학습, 새로운 데이터 예측(입력, 타깃으로 이뤄짐) 2) 비지도 학습 : 타깃 없이 입력 데이터만 사용 (데이터 잘 파악, 변형 도움, 어떤 특징 찾음) 3) 강화 학습 : 타깃이 아니라 알고리즘이 행동한 결과로 얻은 보상을 사용해 학습 2. 지도학습에서의 데이터와 정답 : 데이터 = 입력 (input) + 정답 = 타깃 (target) = 훈련 데이터 3. 훈련세트와 테스트 세트 테스트 세트 (test set) : 평가에 사용하는 데이터 훈련 세트 (train set) : 훈련에 사용되는 데이터
4. 잘못된 훈련세트와 테스트 세트
fish_length = [23,34,23,11,22,33,42,12, 11,12,9,13,14,15]
fish_weight = [242,323,222,333,245,266,234,254, 6,5,7,9,4,6]
fish_data = [[l,w] for l, w in zip(fish_length, fish_weight)]
fish_target = [1] * 8 + [0] * 6
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
train_input = fish_data[:8]
train_target = fish_target[:8]
test_input = fish_data[8:]
test_target = fish_target[8:]
kn = kn.fit(train_input, train_target)
kn.score(test_input, test_target)
# 0.0
샘플링 편향 : 훈련 세트와 테스트 세트에 샘플이 골고루 섞여 있찌 않으면 샘플링이 한쪽으로 치우쳤다
5. 넘파이 numpy
: 파이썬의 대표적인 배열 라이브러리
: 고차원의 배열을 손쉽게 만들고 조작할 수 있는 간편한 도구 제공
: 1차원 배열 - 선, 2차원 배열 - 면, 3차원 배열 - 공간
import numpy as np
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)
print(input_arr)
# [[ 23 242]
# [ 34 323]
# [ 23 222]
# [ 11 333]
# [ 22 245]
# [ 33 266]
# [ 42 234]
# [ 12 254]
# [ 11 6]
# [ 12 5]
# [ 9 7]
# [ 13 9]
# [ 14 4]
# [ 15 6]]
print(input_arr.shape) # -> (샘플 수, 특성 수)
# (14, 2)
- arange() : 0에서부터 n까지 1 증가하는 인덱스 만들기 (일정한 간격의 정수 또는 실수 배열 만들기)
- random seed() : 넘파이에서 난수를 생성하기 위한 정수 초깃값
- shuffle() : 주어진 배열을 무작위로 섞기 (다차원 일경우 첫번째 행만 섞기)
- 배열 인덱싱 : 여러 개의 인덱스로 한 번에 여러 개의 원소 선택
np.random.seed(42)
index = np.arange(14)
np.random.shuffle(index)
# [ 9 11 0 12 5 8 2 1 13 4 7 10 3 6]
train_input = input_arr[index[:8]]
train_target = target_arr[index[:8]]
test_input = input_arr[index[8:]]
test_target = target_arr[index[8:]]
import matplotlib.pyplot as plt
plt.scatter(train_input[:,0], train_input[:,1])
plt.scatter(test_input[:,0], test_input[:,1])
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
6. 두 번째 머신러닝 프로그램
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn = kn.fit(train_input, train_target)
kn.score(test_input, test_target)
# 1.0