뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

[colab] 7. colab으로 scikit-learn 모듈 사용하기(Linear SVC)
언어/Python

[colab] 7. colab으로 scikit-learn 모듈 사용하기(Linear SVC)

2021. 1. 23. 17:07
반응형

scikit-learn 이라는 사이트에는 좋은 알고리즘 모듈들을 매우 많이 제공한다. (https://scikit-learn.org)

대표적인 파이썬 머신러닝 프레임워크로,

- 다양한 머신러닝 알고리즘

- 샘플 데이터

- 머신러닝 결과를 검증하는 기능 (가설 검증 혹은 가설을 세운뒤 모델이 산출한 결과를 검증)

등을 제공한다.

BSD 라이선스이기 떄문에 무료로 사용할 수 있고 배포까지 가능하다는 점이 큰 장점이다.

 

그리고 scikit-learn에서는 알고리즘 치트 시트(https://scikit-learn.org/stable/tutorial/machine_learning_map/)를 제공한다! 이는 각 데이터 특성에 따라 어떤 알고리즘을 쓰면 좋을지 제안해주는 그림(?)이라 생각하면 된다.

마지막까지 도달하면 보이는 초록색 박스가 알고리즘이다. 이를 클릭하면 관련 document로 이동해서 어떻게 쓸 수 있는지 등의 정보가 나와있다.

만약 내가 데이터를 가지고 있는데 어떤 알고리즘을 써야할지 모르겠다면 이것을 참고하면 도움이 될 것이다.


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
    '언어/Python' 카테고리의 다른 글
    • [DataFrame] 특정 문자와 일치하는 행 추출 및 제거하기
    • [colab] 8. colab으로 Iris 데이터 활용하기
    • [colab] 6. 머신러닝
    • [colab] 5. colab으로 matplotlib를 이용한 그래프 그리기
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바