scikit-learn 이라는 사이트에는 좋은 알고리즘 모듈들을 매우 많이 제공한다. (https://scikit-learn.org)
대표적인 파이썬 머신러닝 프레임워크로,
- 다양한 머신러닝 알고리즘
- 샘플 데이터
- 머신러닝 결과를 검증하는 기능 (가설 검증 혹은 가설을 세운뒤 모델이 산출한 결과를 검증)
등을 제공한다.
BSD 라이선스이기 떄문에 무료로 사용할 수 있고 배포까지 가능하다는 점이 큰 장점이다.
그리고 scikit-learn에서는 알고리즘 치트 시트(https://scikit-learn.org/stable/tutorial/machine_learning_map/)를 제공한다! 이는 각 데이터 특성에 따라 어떤 알고리즘을 쓰면 좋을지 제안해주는 그림(?)이라 생각하면 된다.
만약 내가 데이터를 가지고 있는데 어떤 알고리즘을 써야할지 모르겠다면 이것을 참고하면 도움이 될 것이다.
Linear SVC 알고리즘
- 클래스를 구분하는 분류 문제에서, 각 클래스의 구분선을 제대로 그려주는 방식을 사용하는 알고리즘.
- 학습 전용 데이터와 결과전용 데이터를 함께 가지고 있어야 사용할 수 있다.
정말 작은 양의 데이터에 Linear SVC 알고리즘을 사용해보겠다. 원래는 위에 사진에 나와있듯이 샘플(데이터)이 50개 이하면 more data를 가져와야한다.ㅋㅋㅋ
일단 한번이라도 써보는 차원에서...
# sklearn.svm 패키지에서 LinearSVC를 import한다.
>>> from sklearn.svm import LinearSVC
# 레이블 데이터에 대한 정확도 측정을 해주는 module를 import한다.
>>> from sklearn.metrics import accuracy_score
# AND 게이트
>>> learn_data = [[0,0], [1,0], [0,1], [1,1]] # 학습 데이터
>>> learn_label = [0, 0, 0, 1] # 학습 데이터로부터 산출된 결과값 (레이블데이터)
- learn_data는 학습시킬 데이터이고, learn_label은 학습 데이터의 결과값이다. 지도학습에서는 결과값을 포함한 학습 데이터를 제공한다 했는데, 두 변수가 이에 해당한다.
- 학습데이터와 학습의 결과데이터를 잘 보면, AND 게이트라는 것을 알 수 있다.
# 사이킷런 알고리즘을 지정한다.
>>> clf = LinearSVC() # 모델의 객체 생성
# 학습전용 데이터와 결과데이터를 학습시킨다.=========
>>> clf.fit(learn_data, learn_label) # fit(학습 데이터, 결과 데이터)
LinearSVC()
# 테스트 데이터를 이용해서 예측한다.========
# 예측하는 함수로 predict() 이용
>>> test_data = [[0,0],[1,0],[0,1],[1,1]] # 예측 데이터 (학습데이터와 똑같이 주었다)
>>> test_label = clf.predict(test_data) # 예측 데이터를 예측한 결과(레이블) 데이터를 저장.
>>> print(test_data, "의 예측 결과 : ", test_label)
[[0, 0], [1, 0], [0, 1], [1, 1]] 의 예측 결과 : [0 0 0 1] # 놀랍게도(?) 학습데이터의 레이블과 똑같다.
>>> print("정답률 : ", accuracy_score(learn_label, test_label))
정답률 : 1.0 # 100% 일치!
- fit() : 학습 데이터 (배열)와 결과 데이터 (배열)를 매개변수로 지정하여 학습하도록 하는 메서드
- predict() : 테스트 데이터를 매개변수로 전달하여 테스트 데이터에 대한 예측 결과를 반환한다.
적은 양의 학습 데이터를 주고, 학습데이터와 같은 예측 데이터를 주었고,
그렇기 때문에 레이블 데이터가 100% 일치하게 반환되었지만, 이를 통해 모델을 어떻게 쓰고 어떻게 예측하고 평가하는지 과정을 알아볼 수 있었다.
'언어 > Python' 카테고리의 다른 글
[DataFrame] 특정 문자와 일치하는 행 추출 및 제거하기 (0) | 2021.03.22 |
---|---|
[colab] 8. colab으로 Iris 데이터 활용하기 (0) | 2021.01.24 |
[colab] 6. 머신러닝 (0) | 2021.01.23 |
[colab] 5. colab으로 matplotlib를 이용한 그래프 그리기 (0) | 2021.01.22 |
[colab] 4. colab으로 데이터 전처리 실습하기 (0) | 2021.01.22 |