알파카징징이 알파카징징이 코딩하는 알파카

혼공머_2_1 훈련 세트와 테스트 세트

» 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()

도미, 빙어 shuffle그래프

6. 두 번째 머신러닝 프로그램

from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()

kn = kn.fit(train_input, train_target)
kn.score(test_input, test_target)
# 1.0