Python(Colab) 사이킷 런 모듈(Scikit-learn Module)

2023. 6. 11. 20:34파이썬/머신러닝 및 딥러닝

Scikit-learn Module (사이킷 런)

- 대표적인 파이썬 머신러닝 모듈
- 다양한 머신러닝 알고리즘을 제공
- 다양한 샘플 데이터를 제공
- 머신러닝 결과 검증하는 기능을 제공
- BSD 라이센스이여서, 무료로 사용 및 배포 가능 
   (BSD 라이센스: Bekeley Software Distribution 소프트웨어의 무료 사용, 수정 및 배포를 허용한 오픈 라이센스)

https://scikit-learn.org/stable/

 

scikit-learn: machine learning in Python — scikit-learn 1.2.2 documentation

Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...

scikit-learn.org

 

 

✔️ 사이킷런 알고리즘

 

1. Linear SVC 알고리즘

- 분류모형 
- 지도학습

- 클래스를 구분으로 하는 분류 문제에서 각 클래스를 잘 구분하는 선을 그려주는 방식을 사용하는 알고리즘
- 지도 학습 알고리즘을 사용하는 학습 전용 데이터 + 결과 전용 데이터가 있어야 사용이 가능한 알고리즘 

 

 

✔️ 사용하기

 

1. 기초설정

from sklearn.svm import LinearSVC # 분류하는 모듈
from sklearn.metrics import accuracy_score # 평가하는 모듈

 

 

 

2. 학습 데이터 준비

learn_data = [[0,0],[0,1],[1,0],[1,1]]  
learn_label = [0,0,0,1]

 

 

 

3. 모델 객체 생성

svc = LinearSVC()

 

 

 

 

4. 학습데이터 학습시키기

fit(학습 독립변수, 학습 종속변수)

svc.fit(learn_data,learn_label)

 

 

 

 

 

5. 예측( 시험 ! 종속변수 말고 입력변수만 넣어서 결과값을 알아보기)

predict(시험 데이터)

test_label = svc.predict(test_data)
test_label

 

 

 

6. 결과 검증

accuracy_score(학습 종속변수, 시험 종속변수)

 

print('정답률:',accuracy_score([0,0,0,1],test_label))

 

✔️하이퍼 파라미터

 

모델링할 때 사용자기 직접 세팅해주는 값을 뜻한다.

 

하이퍼 파라미터는 모델링할 때 사용자가 직접 세팅해주는 값을 뜻합니다. (They are often specified by the practitioner) learning rate나 서포트 벡터 머신에서의 C, sigma 값, KNN에서의 K값 등등 굉장히 많습니다. 머신러닝 모델을 쓸 때 사용자가 직접 세팅해야 하는 값은 상당히 많습니다. 그 모든 게 다 하이퍼 파라미터입니다. 하지만, 많은 사람들이 그런 값들을 조정할 때 그냥 '모델의 파라미터를 조정한다'라는 표현을 씁니다. 원칙적으로는 '모델의 하이퍼 파라미터를 조정한다'라고 해야 합니다.

출처: https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-13-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0Parameter%EC%99%80-%ED%95%98%EC%9D%B4%ED%8D%BC-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0Hyper-parameter

 

 

Linear SVC의 Hyperparameter 

 

1. C: 제약조건의 강도를 설정
2. max_iter : 최대반복 횟수를 지정
3. class_weight : 학습 분량 
4. multi_class : 3개 이상으로 분류하게 설정
5. random_state: 값을 고정하는 역할
     random_state를 설정하지 않으면 : 학습,시험 데이터를 나눌 시 데이터가 지속적으로 바뀐다. 

 

 

 

✔️ 추가적인 공부

 

linear SVC 는 서포트 백터 머신

 

목적: N 차원의 데이터 공간에서 샘플 그룹들을 구분해내는 최적의 분할선(optimal decision boundary)을 찾는 것 

         Margin(마진) 최대화 하기! 

 

 

정리가 잘 되어 있는 블로그 

https://blog.naver.com/gdpresent/221717231990

 

Linear SVC(Linear Support Vector Classifier) [내가 공부한 머신러닝 #14.]

내가 공부한 머신러닝 14 이전에서 Logistic Regressor를 통해서 Classification 동작을 하는 애를 보았...

blog.naver.com

출처 :  https://blog.naver.com/gdpresent/221717231990

728x90