본문 바로가기
ML & DL/혼자 공부하는 머신러닝+딥러닝

혼자 공부하는 머신러닝+딥러닝

by Glory_Choi 2022. 7. 11.
반응형

생선 분류 문제

 

*도미와 빙어 구분

 

각 도미와 빙어의 특징을 특성이라고 한다.

아래 설명은 두 가지 특징(길이, 무게)를 사용하여 설명한다.

 

 

도미 데이터 준비

 

 

산점도

 

길이를 x축으로 하고 무게를 y축으로 정하여 점을 표시하고 이런 그래프를 산점도라고 부른다.

산점도를 그리기 위한 코드는 다음과 같이 matplotlib을 활용해 그릴 수 있다.

 

빙어 데이터 준비

 

 

산점도

 

 

첫번째 머신러닝 프로그램

 

k-Nearest Neighbors (k-최근접 이웃) 알고리즘을 사용해 도미와 빙어 데이터를 구분해 본다.

k-Nearest Neighbors (k-최근접 이웃) 알고리즘을 사용하기 전 준비했던 도미와 빙어 데이터를 하나의 데이터로 합친다.

scikit-learn(사이킷-런) 패키지를 사용하기 위해 2차원 리스트를 만들어야한다.

파이썬의 zip()함수와 리스트 내포구문을 사용하면 쉽게 만들수 있다.

for문은 zip()함수로 length와 weight 리스트에서 원소를 하나씩 꺼내어 ㅣ과 w에 할당한다.

그러면 [ㅣ, w]가 하나의 원소로 구성된 리스트가 만들어진다.

 

컴퓨터 프로그램은 문자를 직접 이해하지 못하므로 도미와 빙어를 숫자 1과 0으로 표현한다.

앞서 나열한 리스트는 도미와 빙어 순으로 나열했기 때문에 정답 리스트는 다음 코드와 같이 된다.

 

사이킷런 패키지에서 k-최근접 이웃 알고리즘을 구현한 클래스 KNeighborsClassifer를 임포트한다.

from sklearn.neighboers import KNeighborsClassifie

클래스의 객체 생성한다.

kn = KNeighborsClassifier()

이 객체를 통하여 fish_data와 fish_target을 전달하여 도미를 찾기 위한 기준을 학습시킨다.

이런 과정을 머신러닝에서는 훈련이라고 부르고 사이킷런에서는 fit() 메서드가 이런 역할을 한다.

kn.fit(fish_data, fish_target)

사이킷런에서 모델을 평가하는 메서드는 score() 메서드이다. 이메서드는 0에서 1 사이의 값을 반환하고, 1은 모든 데이터를 맞혔다는 것을 나타낸다.

 

k-최근접 이웃 알고리즘

어떤 데이터에 대한 값을 구할 때 주위의 다른 데이터를 보고 다수를 차지하는 것을 정답으로 사용합니다. 마치 근묵자흑과 같이 주위의 데이터를 보고 현재 데이터를 판단한다.

 

회고

이로서 제대로 된 머신러닝 프로그램은 아니지만 첫번째 머신러닝 프로그램을 작성했다.

지속적인 공부 후에는 제대로 된 머신러닝 프로그램을 만들수 있을거라 생각하며 마무리한다.

반응형