기타/기타 잡다한 것들

[머신러닝] 프레임워크 scikit-learn을 사용하여 XOR 연산 해보기

제주도소년 2018. 9. 29. 03:38

파이썬에서 쉽게 사용할 수 있는 머신러닝 프레임워크인 scikit-learn(사이킷 런)을 사용해본다.

scikit-learn은 파이썬 머신러닝 라이브러리의 정석과도 같은 라이브러리이다.


사이킷 런은 다양한 분류기를 지원하며, 머신러닝의 결과를 검증하는 기능도 가지고있다. 또한 분류, 회귀, 클러스터링, 차원 축소처럼 머신러닝에서 자주 사용되는 다양한 알고리즘을 지원한다.


필자는 아나콘다와 주피터 노트북을 활용해서 테스트를 할 것입니다.


1. scikit-learn 패키지 설치하기


2. 데이터를 읽고 분할할 때 편리하게 사용할 수 있는 Pandas 도 설치한다. (나중에 따로 포스트함 ...)

pip install pandas




사이킷 런으로 XOR 연산 학습해보기 ( 어떤 흐름으로 머신러닝을 하는지 알아보는것이 목표... )

 P(입력)

 Q(입력)

 R(출력)

 0

 0

 0

 1

 0

 1

 0

 1

 1

 1

 1

 0


결과는 4개의 데이터 모두 정답이기 때문에 4 ÷ 4 = 1.0(100%) 입니다. 머신러닝으로 XOR 연산을 학습시킨 것이다.

예측결과 : [0 1 1 0]
정답률: 4 / 4 = 1.0

코드를 해석해보면 XOR 연산의 입력과 결과를 2차원 리스트로 정의하였다.


그리고 학습을 위해 데이터 변수와, 정답 레이블 변수로 나누었다. 이렇게 나누는 이유는 사이킷 런의 머신러닝을 수행할 때 사용하는 fit() 메서드의 매개변수를 맞추기 위함.


다음으로 SVM 이라는 알고리즘을 사용해 머신러닝을 수행한다. SVM 객체를 만들고, fit() 메서드를 사용해 데이터를 학습시킨다.

fit() 함수는 첫 번째 매개변수로 학습할 데이터 배열을, 두 번째 매개변수로 레이블 배열을 전달한다.


그 다음 학습한 결과를 기반으로 데이터를 예측한다. predict() 메서드에 예측하고 싶은 데이터 배열을 전달하면 데이터 수만큼 예측 결과를 리턴해준다.


마지막으로 예측결과가 맞는지 확인한다. for 문을 이용해 하나하나의 예측 결과가 맞는지 확인하고 정답률을 계산했다.


여기서 프로그램의 흐름을 간단하게 나타내면


학습 기계에 데이터를 학습시키고 fit() 메서드 -> 데이터를 넣어 예측시킨다 predict() 메서드 순서이다.