logo

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('nType of X is:' type(X)) print('nFirst 5 rows of X:n' X[:5]) 

산출: 

모델1' title=데이터세트 로드 중

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

이에 대해서는 다음 기사를 참조하십시오. 팬더에서 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' loading='lazy' title=분할된 데이터의 형태

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' loading='lazy' title=

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' loading='lazy' title=로지스틱 회귀를 사용한 훈련.

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 라이브러리와 원활하게 통합되므로 모든 규모의 프로젝트에 적합합니다.
  • 강력한 커뮤니티 지원 : 활발하게 활동하는 대규모 커뮤니티는 문제가 발생할 때 도움이 되는 광범위한 문서와 많은 리소스를 정기적으로 업데이트하도록 보장합니다.
퀴즈 만들기