Scikit-learn의 학습 모델 구축

Scikit-learn의 학습 모델 구축

Scikit-learn은 기계 학습 모델 구축 프로세스를 단순화하는 오픈 소스 Python 라이브러리입니다. 초보자와 숙련된 사용자 모두가 효율적으로 작업할 수 있도록 깔끔하고 일관된 인터페이스를 제공합니다.

  • 분류 회귀 클러스터링 및 전처리와 같은 작업 지원
  • 모델 구축을 빠르고 안정적으로 만듭니다.
  • 교육 및 평가를 위해 즉시 사용 가능한 도구 제공
  • 알고리즘의 수동 구현을 방지하여 복잡성을 줄입니다.

Scikit-learn 설치 및 사용

모델 구축을 시작하기 전에 먼저 설치해야 합니다. Scikit 학습. Python 3.8 이상이 필요하며 다음 두 가지 중요한 라이브러리에 의존합니다. 넘파이 그리고 사이파이. 먼저 이것들이 설치되어 있는지 확인하세요.

Scikit-learn을 설치하려면 다음 명령을 실행하십시오.

pip install -U scikit-learn

그러면 종속 항목과 함께 최신 버전의 Scikit-learn이 다운로드되어 설치됩니다. Scikit-learn 라이브러리를 사용하여 모델을 구축하는 과정과 관련된 다양한 단계를 살펴보겠습니다.

1단계: 데이터 세트 로드

데이터 세트는 다음으로 구성됩니다.

  • 특징 (X): 데이터를 설명하는 입력 변수
  • 목표(y): 우리가 예측하고 싶은 값

Scikit-learn은 Iris Digits 및 Boston Housing과 같은 내장 데이터 세트를 제공합니다. Iris 데이터세트 사용:

  • load_iris()는 데이터를 로드합니다.
  • X는 특징 데이터를 저장합니다.
  • y는 목표 레이블을 저장합니다.
  • feature_names 및 target_names는 설명적인 이름을 제공합니다.

구조를 이해하기 위해 처음 몇 행을 검사할 수 있습니다. 사용자 정의 데이터 세트의 경우 Pandas는 일반적으로 CSV와 같은 외부 파일을 로드하는 데 사용됩니다.

Python
   from   sklearn.datasets   import   load_iris   iris   =   load_iris  ()   X   =   iris  .  data   y   =   iris  .  target   feature_names   =   iris  .  feature_names   target_names   =   iris  .  target_names   print  (  'Feature names:'     feature_names  )   print  (  'Target names:'     target_names  )   print  (  '  n  Type of X is:'     type  (  X  ))   print  (  '  n  First 5 rows of X:  n  '     X  [:  5  ])   

산출: 

모델1데이터세트 로드 중

때로는 자체 사용자 정의 데이터를 작업한 후 외부 데이터세트를 로드해야 하는 경우도 있습니다. 이를 위해 우리는 팬더 도서관 데이터 세트를 쉽게 로드하고 조작할 수 있습니다.

이에 대해서는 다음 기사를 참조하십시오. 팬더에서 csv 파일을 가져오는 방법 ?

2단계: 데이터 세트 분할

모델을 공정하게 평가하기 위해 데이터를 다음과 같이 나눕니다.

  • 훈련 세트: 모델을 훈련하는 데 사용됩니다.
  • 테스트 세트: 모델이 얼마나 잘 일반화되는지 평가하는 데 사용됩니다.

train_test_split을 사용하여 Iris 데이터 세트를 분할하여 60%가 훈련용이고 40%가 테스트용입니다(test_size=0.4). random_state=1은 재현성을 보장합니다.

분할 후에 우리는 다음을 얻습니다:

  • X_train y_train -> 훈련 데이터
  • X_test y_test -> 테스트 데이터

모양을 확인하면 데이터가 올바르게 분할되는지 확인할 수 있습니다.

Python
   from   sklearn.model_selection   import   train_test_split   X_train     X_test     y_train     y_test   =   train_test_split  (  X     y     test_size  =  0.4     random_state  =  1  )   

이제 확인해 보겠습니다. 모양 분할된 데이터를 사용하여 두 세트 모두 모델 평가 또는 교육 시 발생할 수 있는 오류를 방지하면서 올바른 데이터 비율을 갖도록 합니다.

Python
   print  (  'X_train Shape:'     X_train  .  shape  )   print  (  'X_test Shape:'     X_test  .  shape  )   print  (  'Y_train Shape:'     y_train  .  shape  )   print  (  'Y_test Shape:'     y_test  .  shape  )   

산출:

모델2분할된 데이터의 형태

3단계: 범주형 데이터 처리

기계 학습 알고리즘은 숫자 입력으로 작동하므로 범주형(텍스트) 데이터를 숫자로 변환해야 합니다. 올바르게 인코딩되지 않으면 모델이 카테고리를 잘못 해석할 수 있습니다. Scikit-learn은 다양한 인코딩 방법을 제공합니다.

1. 라벨 인코딩 : 각 카테고리를 고유한 정수로 변환합니다. 예를 들어 'cat', 'dog', 'bird'와 같은 카테고리가 있는 열에서는 카테고리를 각각 0 1과 2로 변환합니다. 이 방법은 범주에 낮음, 중간, 높음과 같이 의미 있는 순서가 있을 때 효과적입니다.

  • 라벨인코더(): 범주형 값을 숫자 레이블로 변환하는 인코더 개체를 생성하기 위해 초기화됩니다.
  • 적합_변환(): 이 방법은 먼저 인코더를 범주형 데이터에 맞춘 다음 범주를 해당 숫자 레이블로 변환합니다.
Python
   from   sklearn.preprocessing   import   LabelEncoder   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   encoder   =   LabelEncoder  ()   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'Encoded feature:'     encoded_feature  )   

산출:

인코딩된 기능: [1 2 2 1 0]

2. 원-핫 인코딩 : 원-핫 인코딩은 각 범주에 대해 별도의 이진 열을 생성합니다. 이는 카테고리에 자연스러운 순서가 없을 때 유용합니다. 예: 고양이 개 새 -> 1과 0이 있는 3개의 새 열(고양이/개/새).

  • 입력은 2D 배열로 재구성되어야 합니다.
  • OneHotEncoder(sparse_output=False)는 이진 열을 생성합니다.
Python
   from   sklearn.preprocessing   import   OneHotEncoder   import   numpy   as   np   categorical_feature   =   [  'cat'     'dog'     'dog'     'cat'     'bird'  ]   categorical_feature   =   np  .  array  (  categorical_feature  )  .  reshape  (  -  1     1  )   encoder   =   OneHotEncoder  (  sparse_output  =  False  )   encoded_feature   =   encoder  .  fit_transform  (  categorical_feature  )   print  (  'OneHotEncoded feature:  n  '     encoded_feature  )   

산출:

모델3

Label Encoding과 One-Hot Encoding 외에도 다음과 같은 다른 기술이 있습니다. 평균 인코딩 .

4단계: 모델 훈련

이제 데이터가 준비되었으므로 기계 학습 모델을 훈련할 차례입니다. Scikit-learn에는 훈련 예측 및 평가를 위한 일관된 인터페이스를 갖춘 많은 알고리즘이 있습니다. 여기서 우리는 로지스틱 회귀 예를 들어.

메모 : 우리는 알고리즘의 구현만을 이해하는 데 관심이 있으므로 알고리즘이 어떻게 작동하는지 자세히 설명하지 않겠습니다. 

  • log_reg = 로지스틱회귀(max_iter=200): 로지스틱 회귀 분류기 개체를 만듭니다.
  • log_reg.fit(X_train y_train): 이것을 사용하여 로지스틱 회귀 모델은 데이터에 가장 잘 맞도록 모델의 매개변수를 조정합니다.
Python
   from   sklearn.linear_model   import   LogisticRegression   log_reg   =   LogisticRegression  (  max_iter  =  200  )   log_reg  .  fit  (  X_train     y_train  )   
모델4로지스틱 회귀를 사용한 훈련.

5단계: 예측하기

학습이 완료되면 모델을 사용하여 예측 메서드를 호출하여 테스트 데이터 X_test에 대해 예측합니다. 그러면 예측된 라벨 y_pred가 반환됩니다.

  • log_reg.예측: 훈련된 로지스틱 회귀 모델을 사용하여 테스트 데이터 X_test에 대한 레이블을 예측합니다.
Python
   y_pred   =   log_reg  .  predict  (  X_test  )   

6단계: 모델 정확도 평가

y_test와 y_pred를 비교하여 모델의 성능이 얼마나 좋은지 확인하세요. 여기서는 측정항목 모듈의 Accuracy_score 메소드를 사용하고 있습니다.

Python
   from   sklearn   import   metrics   print  (  'Logistic Regression model accuracy:'     metrics  .  accuracy_score  (  y_test     y_pred  ))   

산출:

로지스틱 회귀 모델 정확도: 0.9666666666666667

이제 모델이 새로운 샘플 데이터에 대해 예측하기를 원합니다. 그런 다음 샘플 입력은 기능 매트릭스를 전달하는 것과 동일한 방식으로 간단히 전달될 수 있습니다. 여기서는 샘플 = [[3 5 4 2] [2 3 5 4]]로 사용했습니다.

Python
   sample   =   [[  3     5     4     2  ]   [  2     3     5     4  ]]   preds   =   log_reg  .  predict  (  sample  )   pred_species   =   [  iris  .  target_names  [  p  ]   for   p   in   preds  ]   print  (  'Predictions:'     pred_species  )   

산출: 

예측: [np.str_('virginica') np.str_('virginica')]

사이킷런의 특징

Scikit-learn은 기계 학습 모델을 간단하고 효율적으로 구축하기 때문에 사용됩니다. 다음은 몇 가지 중요한 이유입니다.

  1. 즉시 사용 가능한 도구 : 데이터 전처리 훈련 모델, 예측 등 일반적인 작업을 위한 기능을 내장하고 있습니다. 이렇게 하면 알고리즘을 처음부터 코딩할 필요가 없으므로 시간이 절약됩니다.
  2. 쉬운 모델 평가 : 교차 검증 및 성능 지표와 같은 도구를 사용하면 모델이 얼마나 잘 작동하는지 측정하고 개선이 필요한 영역을 식별하는 데 도움이 됩니다.
  3. 광범위한 알고리즘 지원 : 분류 회귀 및 클러스터링을 포함하여 널리 사용되는 많은 기계 학습 알고리즘을 제공하여 문제에 적합한 모델을 선택할 수 있는 유연성을 제공합니다.
  4. 원활한 통합 : NumPy 및 SciPy와 같은 중요한 Python 라이브러리를 기반으로 구축되어 기존 데이터 분석 워크플로에 적합합니다.
  5. 간단하고 일관된 인터페이스 : 동일한 간단한 구문이 다양한 모델에서 작동하므로 알고리즘을 더 쉽게 배우고 전환할 수 있습니다.
  6. 모델 튜닝이 쉬워졌습니다 : 그리드 검색과 같은 도구를 사용하면 모델 설정을 미세 조정하여 추가적인 번거로움 없이 정확도를 높일 수 있습니다.

Scikit-learn 사용의 이점

  • 사용자 친화적 : Scikit-learn의 일관되고 간단한 인터페이스는 초보자도 쉽게 사용할 수 있고 전문가도 사용할 수 있습니다.
  • 시간 절약: 사전 구축된 도구와 알고리즘은 개발 시간을 줄여주므로 세부적인 코딩보다 문제 해결에 더 집중할 수 있습니다.
  • 더 나은 모델 성능 : 사용하기 쉬운 튜닝 및 평가 도구는 모델의 정확성과 신뢰성을 향상시키는 데 도움이 됩니다.
  • 유연성과 확장성 : 광범위한 알고리즘을 지원하고 다른 Python 라이브러리와 원활하게 통합되므로 모든 규모의 프로젝트에 적합합니다.
  • 강력한 커뮤니티 지원 : 활발하게 활동하는 대규모 커뮤니티는 문제가 발생할 때 도움이 되는 광범위한 문서와 많은 리소스를 정기적으로 업데이트하도록 보장합니다.
퀴즈 만들기