머신러닝 + 딥러닝

[혼공머신] CHAPTER 01 나의 첫 머신러닝

2021. 9. 10. 03:05
728x90

인공지능이란?

- 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술

 

머신러닝이란?

- 규칙을 일일이 프로그래밍 하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야

- 대표적인 머신러닝 라이브러리는 사이킷런(scikit-learn)

 

딥러닝이란?

- 많은 머신러닝 알고리즘 중에 인공 신경망을 기반으로 한 방법들을 통칭하여 부른다

- 2015년 구글이 딥러닝 라이브러리인 텐서플로를 오픈소스로 공개

 

 

BreamAndSmelt.ipynb

- 가장 간단한 머신러닝의 예시로 도미와 빙어를 분류해보자

 

- 35마리의 도미

 

- 14마리의 빙어

 

특성(feature) : 도미의 특징을 길이와 무게로 표현한 것

 

산점도(scatter plot) : 길이를 x축, 무게를 y축으로 하고 그래프에 점으로 표시한 것

 

맷플롯립(matplotlib) : 파이썬에서 과학계산용 그래프를 그리는 패키지

 

 

- 도미와 빙어의 산점도 그래프 그리기

파란색: 도미, 주황색: 빙어

 

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

k-최근접 이웃 알고리즘 : 가장 간단한 머신러닝 중 하나로, 주변에서 가장 가까운 5개의 데이터를 보고 다수결의 원칙에 따라 데이터를 예측한다

 

도미와 빙어 데이터를 하나로 합쳐서 2차원 리스트를 생성하자

 

반복문을 이용해 length와 weight 리스트에서 원소를 하나씩 꺼내 l과 w에 할당한다.

그러면 이런식으로 fish_data라는 [l, w]가 하나의 원소로 구성된 리스트가 만들어진다.

 

 

이번에는 fish_target이라는 도미는 1, 빙어는 0으로 표현하는 리스트를 만들어보자

 

처음 35개는 도미여서 1로 표현이 되고, 나머지 14개는 빙어로 0으로 표현되었음을 확인할 수 있다.

 

KNeighborsClassifier를 임포트한다

 

fit() : 훈련, 객체에 fish_data와 fish_target을 전달하여 도미를 찾기 위한 기준을 학습시킴

 

score() 메서드 : 사이킷런에서 모델을 평가하는 메서드

 

1.0 : 정확도, 모든 fish_data의 답을 정확히 맞힘 = 도미와 빙어를 완벽하게 분류함

 

k-최근접 이웃 알고리즘은 fit() 메서드에 전달한 데이터를 모두 저장하고 있다가 새로운 데이터가 등장하면 가장 가까운 데이터를 참고하여 데이터(여기에서는 도미와 빙어)를 구분한다.

 

주로 KNeighborsClassifier 클래스의 기본값은 5여서 가까운 5개의 데이터를 참고한다. n_neighbors 매개변수로 이를 바꿀 수 있다. 다음은 49개의 데이터를 참고하는 모델이다.

 

이렇게 하면 fish_data에 있는 모든 데이터를 사용하여 예측하게 된다. 도미가 빙어보다 데이터가 더 많아서 어떤 데이터를 넣어도 무조건 도미로 예측할 것이다.

kn49 모델은 도미만 올바르게 맞히기 때문에 정확도가 score()와 같다

 

KNeighborsClassifier의 이웃개수를 n_neighbors 속성으로 바꾸어서 정확도가 1.0 이하로 시작하는 이웃의 개수를 알아보자.

즉, 이웃 개수가 18개부터는 정확도가 100%가 아니다. 

728x90