[개발일지 2022.4.5]AI 알고리즘의 이해와 실습

허제민·2022년 4월 5일
0

1.학습한 내용

1)Classification (분류) 실습

아이리스 iris 꽃 데이터
주제: 붓꽃 품종 예측

data:
3개 품종 붓꽃 : Setona , Virginica , Versicolor
4개 변수 측정 : 꽃받침(Petal)의 길이,넓이. 꽃잎의 길이 ,넓이.


iris 데이터를 불러온 datasets 에서
box plot을 통해서 박스가 붙어있으면 변별력이 있고, 박스가 붙어있으면 변별력이 적다는 점을 확인할수 있었고.
Tree viewer 를 통하여 tree 알고리즘의 학습결과의 모델을 볼수있었다.
confusion matrix의 경우 결과값을 표로 보여주는 도구이다.
이때 y축인 actual 은 실제값이고 x축인 predicted 은 예측값이다

데이터 샘플러라는 도구를 사용하게 되면, 전체 데이터중에서 선택범위는 트레이닝(학습)용 데이터로, 나머지를 샘플(테스트)용 데이터로 사용할수 있게 된다.
이를통해 80%를 트레이닝용 데이터로 사용하게 되면
150개의 데이터를 가진 iris 데이터값중 120개의 데이터는 트레이닝용 데이터, 30개의 데이터는 테스트용데이터로써 사용하게 된다.
이때 주의할점은 data sampler 와 test and score 사이에 선을 그냥 그으면 트레이닝용 데이터 120개만이 연결이 되기 때문에, 사이의 선을 더블클릭하여

남은 데이터들을 테스트 데이터로 연결하는 과정이 필요하다.

이를 통해서 120개의 트레이닝 데이터로 학습하여 30개의 테스트 데이터를 confusion matrix로 나타내면

그림과 같이 분류가 되는것을 확인할수 있었다.

2) Image 분류

기존의 orange 도구툴 중에서는 image analytics 가 없기때문에. 상단의 options 의 add one 에서 image analytics 를 추가한다.

추가를 하게 되면 이런 화면이 나오는데.
Import images 는 이미지를 불러내는것을.
Image viewer 는 불러낸 이미지를 보는것을 도와준다.
Image Embedding 은 이 이미지를 출력하기 위해서 이미지를 벡터화 하는것이다.

2-1)Image 분류 실습

data : 중화음식.
변수: 짜장면 , 짬뽕, 탕수육

그림에서
Impor Images 는 짜장면,짬뽕,탕수육의 사진들이 들어가있는 중화음식의 이미지들을 불러온다.
Image Embedding 은 그 이미지들을 숫자화, 벡터화를 한다.
Distance 는 군집간의 거리를 측정하기 위한 도구이다.

Hierarchical clustering 은 데이터를 계층적 군집모델로 분류해준다.

Distance Matrix는 기준점과의 거리를 숫자로 표현해준다.

Distance Map 은 기준점과의 거리를 색깔로 표현해준다.

위 처럼 여러가지 방식으로 이미지를 분류할수있는것을 배울수있었다.

3)Deep Learning

Deep Learning 을 사용하는 곳들을 설명하기 위해서 간단한 기본 설명을 위한 내용이다.
이 전부터 전뇌(electronic brain)와 인공신경(perceptron)의 개념이 정의 되었지만.
1970년대에 XOR problem 이라는 인공신경으로 논리적으로 풀수없는 문제가 나오면서 1986년대 까지 AI 암흑기, 겨울이라 칭한다.

그 후 1986년대에 G. Hinton 제플리 힌턴이 인공신경 한개로 되지않는것들을 인공신경을 여러개를 연결했더니 해결이 되었다. 이를 multi-layered perceptron, 인공신경망이라고 칭하고, 그는 Deep learning 이라는 단어를 만들어내어 딥러닝의 아버지라고 불리운다.

인공신경망은 인간의 뇌구조인 신경망(Neural Network)를 모방하여서 만들어 진것인데, 이는
입력이 이루어지면 피드백을 통하여 가중치를 가진 후 재실행을 통하여서 활성화하게 되는건데.
이를 인공신경망에도 적용을 시켜서
입력 -> 피드백(가중치)에 의한 학습 -> 재실행 -> 출력
을 인공신경망에서도 가능하게 되었다.

※인간의 신경망의 신경의 갯수는 매우 많기때문에, 컴퓨터로 이를 모방하기 하게될경우, 과정이 너무 커지기때문에 GPU가 필요해진다.

위의 딥러닝을 실제로 사용하는
Microsoft Cognitive Services 가 있는데.

이 사이트의 API에서 실제로 사용을 해볼수있다.

4)Anaconda 아나콘다

수많은 패키지들을 모아놓은 툴로써

다운을 받고나면 Windows 기준으로는 Anaconda prompt 를 사용한다.

여기서 jupyter notebook 을 입력하면
쥬피터 노트북이 나타나는데.

이곳에서 new 를 눌러서 folder 를 누른뒤 cognitive 로 이름을 바꾸고
그 폴더에 들어가서 new 를 눌러서 파이썬파일을 설정하면
쥬피터 환경이 나타나고.
이곳에서는 한줄 한줄이 셀이고 코드를 입력하면 결과값이 나온다.

이를 통해서 jupyter notebook 에서 코드를 사용하여
이미지를 불러내기를 한다.

※ jupyter notebook 을 사용하고있을때, Anaconda prompt 를 통하여 실행되는것이기 때문에 prompt를 종료하면 안된다.

4-1)Jupyter notebook 에서 이미지 불러내기

이미지를 불러내기 위해서 필요한 몇가지 툴이 있는데.

requests : 파이썬에서 웹 호출을 할때 사용하는 명령어
이미 클라우드에서 있는 서비스를 불러내는것이기 때문에 필요하다.

BytesIO : 이미지를 입출력하기 위해서는 바이트 단위로 이미지를 재구성 해주어야한다.

import requests
import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO
import json
image_url= '~~~~'
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
image

image)url은 고유의 값이기 때문에 ~~~ 로 처리하였다.

import requests
import matplotlib.pyplot as plt
from PIL import Image
from io import BytesIO
import json

requests 와 json을 활성화시키고
matplotlib.pyplot는 활성화 시키되 너무 길기때문에 plt로.
Image 는 PIL로부터 불러와서 활성화.
BytesIO 는 io로부터 불러와서 활성화 시킨다.

image_url= '~~~~'
response = requests.get(image_url)
image = Image.open(BytesIO(response.content))
image

image의 url을 가져오고
image_url 의 정보를 요청하는 request.get 을 response로 설정하고
그 이미지를 BytesIO를 통하여 바이트단위로 이미지를 재구성해서
image로 출력을 한다.

임의의 이미지를 가져와서 코드를 짜는것으로 이미지를 출력하는것에 성공을 했다.

※ 위의 이미지는 사진을 위해서 새로 코드를 짠 이미지이며, 실제의 코드는 코드를 셀별로 나뉘어져있습니다.

2.학습내용 중 어려웠던 점

수업을 복습을 하던 도중, import를 하는 과정에서 json 을 불러내는것을 다른 줄로 표현한것이 어째서 그런것인지 궁금하여 impor json 코드를 위의 코드에 옮겨서 실행을 하였을때, 이미지의 출력이 실패가 일어났다.

3.해결방법

이는 jupyter notebook 의 코드는 좌측에 ln[] 을 통해서 입력한 코드의 순서가 정해지는데 도중에 코드 하나만을 순서를 바꿔서 실행하여서 실행하는 순서가 꼬인것 때문에 오류가 난것으로, 위에서부터 차례대로 다시 실행을 하였을때 제대로 작동을 하는것을 확인하였다.

수업을 배운 내용의 사진대로 1줄에 코드를 모두 써도 작동은 하지만, 도중에 오류가 났을때 오류를 찾아서 수정하는것을 생각하면 오류 수정에 도움이 되는만큼은 나누어서 입력하는것이 좋다는 것을 알게되었다.

4.학습소감

수업을 할때마다 다양한 툴들을 다운받고 사용하게 됨으로써, 지금까지 많은 개발자들이 목적에 따라서 더 알맞은 도구들을 만들어 왔다는것을 알수있었다, 더 다양한 도구를 사용함으로써 훗날 목적에 따라서 적절한 도구를 사용할수있는 기반이 될수있으면 좋을것이다.

profile
대구 AI 스쿨 2기 초급개발자 과정을 진행중인 허제민입니다.

0개의 댓글