일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CSS
- fit메소드
- 훈련세트
- 버튼 상속
- 데이터 전처릴
- 외부css
- relative
- apapter
- 머신러닝
- HTML
- 픽셀 깨짐
- score메소드
- 표준화 z
- hover
- Absolute
- position
- K최근접이웃 회귀
- 웹사이트 공개
- 지도학습
- 선택자 조건
- 넘파이
- predict메소드
- 테스트세트
- 스낵바
- LENGTH_INDEFINITE
- 레이아웃
- 메모리 객체화
- JavaScript
- kneighbors()
- 스크롤뷰
- Today
- Total
베짱이와 노는 개미
AI#2-지도학습 본문
머신러닝은 지능을 가질수있도록 학습시키는 알고리즘이다
머신러닝==학습
그렇다면 크게 2가지로 나눌수있다
지도학습과 비지도학습니다.
(강화학습까지 포함시켜서 3가지로 나누기도 하는듯 하다.)
오늘은 지도학습을 먼저 공부해보자
지도학습은 비교할만한 정답이 있는 상태로 학습하는것을 의미한다.
데이터를 정답과 비교하면서 학습하는것이다.
이때 데이터를 입력(특성), 정답을 타깃, 이둘을 합쳐서 훈련데이터(입력 + 타깃)이라고 부른다
지도학습과 비지도학습의 제일 큰 차이는 타깃의 유무이다.
타깃이 있으면 지도학습, 없으면 비지도학습이다.
데이터와 타깃을 주고 훈련 시킨다음, 같은 데이터로 테스트를 하면 당연히 다 맞출것이다.
그래서 테스트용 데이터를 따로 준비해야한다.
그래서 평가에 사용되는 데이터(테스트 세트), 훈련에 사용되는 데이터(훈련 세트)가 존재한다.
이렇게 생각하면 편할것같다.
머신러닝을 이용하여 어떤것을 측정하는 기계를 만들것이다.
일단 기계가 훈련을 해야하므로 지금 가지고 있는 데이터를 입력하여 훈련시킨다.
완성된 기계의 성능을 측정하기위해 같은 데이터를 활용하면 당연히 성능은 100%일것이다.
그러므로 테스트할떄는 테스트 세트를 활용해야한다는것이다.
이것과 관련된 코드를 보자
다음 코드는 물고기의 길이와 무게로 물고기의 종류를 분류하는 알고리즘이다.
도미와 빙어를 구분하는 알고리즘인데 데이터값들중에서 1~35번째 값들은 도미에 대한 데이터이고
36~49번쨰 값들은 빙어에 대한 데이터이다.
from sklearn.neighbors import KNeighborsClassifier
fish_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, 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]
fish_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, 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]
fish_data = [[l, w] for l, w in zip(fish_length, fish_weight)]
fish_target = [1]*35 + [0]*14
train_input = fish_data[:35]
train_target = fish_target[:35]
test_input = fish_data[35:]
test_target = fish_target[35:]
kn = KNeighborsClassifier()
kn.fit(train_input, train_target)
kn.score(test_input, test_target)
여기서 쓰인 알고리즘은 k-최근접 이웃 알고리즘이다. 주위의 데이터로 측정하려는 데이터를 측정한다.
측정하려는 데이터가 A라는 값들 사이에 있다면 그 데이터도 A로 판단된다.
train_input, train_target, test_input, test_target 을 먼저보면
테스트세트와 훈련세트를 나눠논것을 알수있다.
데이터값들 중 배열인덱스로 1~35번쨰 데이터는 train용, 36~마지막(49번쨰) 데이터는 test용인것이다.
이렇게 코드를 짜고 실제로 실행시키면 과연 score값은 1이 나올까?
아니다
그 이유는 훈련세트에서는 도미로만 학습이 진행되었는데
테스트는 빙어로만 진행되었기떄문이다. score값은 0이 나온다.
(score값은 실제로 잘 훈련되었는지를 알려주는 score메소드 리턴값이다. 0과1사이 값을 갖는다.)
그래서 테스트세트를 잘 섞어줘야한다.
이때 필요한 라이브러리가 바로 "넘파이" 이다.
다음 포스팅에서 넘파이를 알아보겠다
'AI(머신러닝+딥러닝) 프로젝트' 카테고리의 다른 글
ML#6 - K최근접 이웃 회귀 (0) | 2021.08.07 |
---|---|
ML#5 - 데이터 전처리 (0) | 2021.08.06 |
ML#4 - 파이썬 함수 정리(수시 업데이트) (0) | 2021.08.06 |
ML#3-테스트세트,훈련세트 (0) | 2021.08.04 |
AI#1 - 머신러닝과 딥러닝은 무엇인가? (0) | 2021.07.30 |