Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- clipboardapi
- Redux
- 초기값 설정하기
- 머신러닝
- 알고리즘
- 백준 #코딩테스트
- 혼공단
- 혼자공부하는머신러닝
- CSS
- 딥러닝
- REACT
- 유니티 #게임개발
- js
- typeScript
- styledcomonents
- 혼공챌린지
- 에러해결방안
- TS
- reactmemo
- 리액트
- 백준 #코딩테스트 #코테 #알고리즘
- 코딩테스트
- 구조분해할당
- axios
- 혼자공부하는머신러닝딥러닝
- 타입스크립트
- useEffect
- 백준
- error맛집
- 혼공머신
Archives
- Today
- Total
좌충우돌 개발자의 길
4강 : 훈련 세트와 테스트 세트 본문
지난 3장의 머신러닝 모델 문제점
- 마치 수학 연습 문제에서 나왔던 문제가 그대로 수학시험 문제로 나오는 것과 동일하다!!
머신러닝 분류
- 지도 학습 : 입력과 타깃 데이터를 사용해 학습하는 알고리즘
- 훈련데이터에 입력, 타깃이 포함됨
- 비지도 학습 : 타깃 데이터만 있고 입력은 없을 때
- 강화 학습 : 모델이 어떤 행동을 수행한 후 주변의 환경에서 피드백을 받아 개선해 나감
평가를 위한 데이터 만들기
- 또다른 데이터 준비하기
- 이미 준비된 데이터 중 일부 떼어내서 활용하기 ( 일반적으로 가장 많이 사용되는 유형)
- 테스트 세트(평가에 사용하는 데이터)와 훈련 세트(훈련에 사용되는 데이터)로 나눠서 구하기
#슬라이싱으로 데이터 나눠서 훈련과 테스트 데이터로 나누기
train_input = fish_data[:35]
train_target = fish_target[:35]
test_input = fish_data[35:]
test_target = fish_target[35:]
# k-최근접 이웃을 구현한 것을 import함
from sklearn.neighbors import KNeightborsClassifier
#클래스 객체를 kn으로 저장 (kn을 머신러닝 모델이라고 함)
kn = KNeightborsClassifier()
#fit으로 훈련데이터 집어넣기
kn.fit(train_input, train_target)
#얼마만큼 잘 학습되었는지 테스트 데이터로 확인(어느 정도 정확한지)하기 위해 score 사용함
kn.score(test_data, test_target)
#서로 다른 데이터라서 겹치는 일이 없다
샘플링 편향
- 하지만 위에 처럼 데이터를 나눠서 하게 되면 훈련세트에는 도미만 들어가고 테스트 세트에는 빙어만 들어가 잘못도니 훈련 데이터가 만들어질 수 있다
- 그러므로 numpy를 이용해서 훈련세트에 도미와 빙어 둘다 넣고 테스트 세트에도 도미와 빙어 둘다 넣으면 됨 → 넘파이를 사용하자!
넘파이 사용하기
- 1차원 배열 == 벡터 ( 혼동주의 : 사진에 있는 1차원 배열을 7차원 벡터라고 부르는 경우가 있다)
- 2차원 배열 == 행렬 ( 행과 열로 되어있음 )
- 넘파이 배열에는 다른 타입의 데이터를 같이 넣을 수 없음
# 생선 데이터를 2차원 넘파이 배열로 변환하기(아직 데이터 섞지는 않음)
import numpy as np
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)
print(input_arr)
데이터 섞기
- 입력과 타깃이 함께 섞여서 이동해야함
#0~48까지 하나씩 증가하면서 리스트 만들고 index라는 이름 지어주기
index = np.arrange(49)
#만들어진 index를 섞기
np.random.shuffle(index)
#배열 슬라이싱으로 변환하기
train_input = input_arr[index[:35]]
train_target = target_arr[index[:35]]
test_input = input_arr[index[:35]]
test_target = target_arr[index[:35]]
- 배열 슬라이싱 : 인덱스가 담긴 배열을 넣어서 원소를 선택하는 방식, 여러 개의 인덱스로 한 번에 여러 개의 원소를 선택할 수 있음
- a = np.array([5,6,7,8]) → a[[1,3]] → 6,7이 값으로 나옴
- input_arr[[1,3]] → [[26.3 290.] [29. 363.]]
- np.random.seed() 는 교육용으로 학습자가 교재와 동일한 내용이 나오게 하기 위해서 설정해둔 것 뿐이다. 실제로 뭘 만들때는 사용하지 않음
데이터 나누고 확인하기
import matplotlib.pyplot as plt
#행과 열로 나눌수 있음 [행,열]
#:는 전체 행, 도미인 0과 빙어인 1을 각각 산점도 만들기
plt.scatter(train_input[:,0], train_input[:,1])
plt.scatter(test_input[:,0], test_input[:,1])
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
두번째 머신러닝 프로그램
kn = kn.fit(train_input, train_target)
kn.score(test_input, test_target)
#1.0으로 결과 나옴
'STUDYING > 머신러닝&딥러닝' 카테고리의 다른 글
6강 : k-최근접 이웃 회귀 (0) | 2021.07.14 |
---|---|
5강 : 데이터 전처리 (0) | 2021.07.14 |
3강 : 마켓과 머신러닝 (0) | 2021.07.14 |
2강 : colab 사용하기 (0) | 2021.07.14 |
1강 : 인공머신? 머신러닝? 딥러닝? (0) | 2021.07.14 |