일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 병합정렬
- memoization
- 아직
- AIFFEL
- 다이나믹프로그래밍
- 인공지능
- 역전파
- ssac
- 피보나치수열
- 메모이제이션
- 인공지는
- tree
- 밑시딥
- dp
- 피보나치
- 머신러닝
- 힙
- 스티커
- 분할정복
- 오차역전파법
- 어렵다
- 우선순위큐
- 알고리즘
- 힙구조
- 트리
- 자료구조
- 퍼셉트론
- 딥러닝
- Image Classification
- Today
- Total
딥러닝 for Deep Learning
21.01.07 인공지능으로 아이리스 품종 구별하기 본문
오늘도 여전히 화창하고 추운 날이 밝았고
또 여전히 나는 딥러닝의 세계로 퐁당~!
오늘의 딥러닝의 과제는
아이리스라는 꽃의 품종을 구별하는 알고리즘을 만드는 것이었다.
난 같은 꽃에도 품종의 다름이 있음을 오늘 처음 알았다.
매일 지식이 업데이트되고 있다.
아이리스라는 꽃은 위 사진처럼 setosa, versicolor, virginica 3가지 품종으로 나뉜다고 한다.
우리는 딱 보면 저 꽃들이 다 다르게 생긴 것을 한눈에 알아본다.
그렇다면 우리 친구 인공지능은?
역시나 인공지능은 세상을 숫자로 바라본다.
위 사진을 살펴보면 꽃의 부위를 가리키며 petal과 sepal이라는 표시를 해두었다.
저게 뭐지...?
petal은 꽃잎, sepal은 꽃받침을 뜻한다.
지식이 또 늘었다.
단어가 비슷해서 여간 헷갈리는게 아니었다. (페탈, 씨펄)
여하튼 인공지능은 저 꽃잎과 꽃받침의 길이 혹은 크기로 품종을 구별할 수 있다.
-
인공지능에게 저 꽃들을 구별하게 하기 위해서는 우선 데이터를 삽입해줘야 한다.
한 두장만으로는 어림도 없기에 우린 준비된 데이터셋을 사용하도록 하자.
아이리스에 대한 데이터는 사이킷런(scikit-learn)이라는 라이브러리를 불러들이면 사용할 수 있다.
수백수천 장의 정보를 코드 한 줄이면 불러들일 수 있다.
이른바 대 데이터 시대이다.
데이터는 아래 코드를 작성하면 불러들일 수 있다.
from sklearn.datasets import load_iris
그리고 아래의 코드를 추가로 삽입하면 아이리스 데이터에 담긴 정보들을 확인할 수 있다.
iris.keys()
아래의 코드는 배열의 형상정보를 확인할 수 있게 해 준다.
print (iris_data.shape)
형상정보를 출력하면 (150, 4)라는 결과가 나오는데 150개의 데이터가 각각 4개의 정보를 가진다는 뜻이다.
4개의 정보란 sepal length, sepal width, petal length, petal width이다.
이 4개의 정보의 수치를 기준으로 꽃의 종류를 분류하고 파악하는 원리이다.
뒤에 추가로 작업해야 할 코드들을 무사히 입력해내면 label이라는 결과를 0, 1, 2 같은 숫자를 아웃풋으로 내놓게 되는데
이 출력된 label을 가지고 이 꽃은 sestosa, 저 꽃은 virginica 이렇게 구분할 수 있는 것이다.
그리고 이런 작업들을 수행하기 위해선 분류기라는 모델이 필요한데 종류는 아래와 같다.
- Decision Tree(의사결정나무)
- Random Forest
- SVM
- SGD Classifier
- Logistic Regression
대표적으로 의사결정나무에 대해서 말하자면
데이터를 분리할 경계를 찾아내서 데이터들을 채에 거르듯 분류하는 작업을 수행하는 모델이다.
데이터들이 분류되어서 뻗어나가는 모습이 나무와 비슷하다고 해서 의사결정나무라는 이름이 붙었다고 한다.
이외에도 의사결정나무의 단점을 보완하기 위해 여러 의사결정나무 모델을 함께 사용해서 집단지성을 발휘하게 하는
RandomForest와 더불어 SVM, SGD, Logistic과 같은 다양한 분류기 모델이 존재한다.
[후기]
며칠 전에는 인공지능과 가위바위보라는 엄청난 알고리즘을 만드는 작업을 하였다.
아직 파이썬 코드도 모르는데 알고리즘 설계라니!
어제 자전거를 사주고 오늘 자동차를 운전하라는 격이었다.
역시나 엄청나게 헤매었고 탈모가 걱정될 정도로 머리를 쥐어뜻길 반복했다.
그렇지만 이렇게 한번 하루 종일 코드를 들여다 보고 알고리즘의 작동방식에 대해 고민을 해보니
조금이지만 이 언어들에 익숙해지긴 했다.
실제로 데이터를 입력하고 결과까지 출력하였을 때에는 환희에 찬 비명을 지르기도 했다. 실화다.
오늘도 역시 그런 알고리즘 설계를 해보는 것이었다.
며칠 전의 기억으로 아침부터 잔뜩 쫄았지만 그만큼은 아니었고 생각보다 수월하게 과제들을 수행할 수 있었다.
(역시나 가위바위보는 엄청난 게임이다.)
아이리스를 포함해 손글씨, 와인, 유방암 케이스를 분류해보기도 하였는데
작동방식이 다 같아서 수월하게 다른 케이스들도 분류할 수 있었다.
이렇게 조금은 어렵더라도 프로젝트들을 지속적으로 경험해 본다면 나도 나름 개발자라는 문턱을 넘어설 수 있지 않을까 생각해 본다.
ps.
이번에는 lms라는 학습 노드 대신에 주피터 노트북에 코드를 작성하였는데
작성한 코드들이 쭉 나열되어있는 것을 보며 또 나름 뿌듯했다.
작성한 코드들을 가지고 깃허브에 잔디도 심었다.(머리 심을 일은 없기를)
뿌듯했다.
대충 오늘 하루가 맘에 든다는 말이다.
'인공지능 일기' 카테고리의 다른 글
AIFFEL 과정 4주차 회고록 (2) | 2021.01.22 |
---|---|
인공지능으로 카메라 스티커 앱 만들기 (0) | 2021.01.15 |
1주 동안 AIFFEL에서 인공지능 도전기 (0) | 2021.01.08 |
21.01.04 [Image Classification] (0) | 2021.01.04 |
First step for Deep Learning (8) | 2020.12.31 |