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 ])
산출:
데이터세트 로드 중 때로는 자체 사용자 정의 데이터를 작업한 후 외부 데이터세트를 로드해야 하는 경우도 있습니다. 이를 위해 우리는 팬더 도서관 데이터 세트를 쉽게 로드하고 조작할 수 있습니다.
이에 대해서는 다음 기사를 참조하십시오. 팬더에서 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 )
산출:
분할된 데이터의 형태 3단계: 범주형 데이터 처리
기계 학습 알고리즘은 숫자 입력으로 작동하므로 범주형(텍스트) 데이터를 숫자로 변환해야 합니다. 올바르게 인코딩되지 않으면 모델이 카테고리를 잘못 해석할 수 있습니다. Scikit-learn은 다양한 인코딩 방법을 제공합니다.
1. 라벨 인코딩 : 각 카테고리를 고유한 정수로 변환합니다. 예를 들어 'cat', 'dog', 'bird'와 같은 카테고리가 있는 열에서는 카테고리를 각각 0 1과 2로 변환합니다. 이 방법은 범주에 낮음, 중간, 높음과 같이 의미 있는 순서가 있을 때 효과적입니다.
- 라벨인코더(): 범주형 값을 숫자 레이블로 변환하는 인코더 개체를 생성하기 위해 초기화됩니다.
- 적합_변환(): 이 방법은 먼저 인코더를 범주형 데이터에 맞춘 다음 범주를 해당 숫자 레이블로 변환합니다.
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)는 이진 열을 생성합니다.
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 )
산출:
Label Encoding과 One-Hot Encoding 외에도 다음과 같은 다른 기술이 있습니다. 평균 인코딩 .
4단계: 모델 훈련
이제 데이터가 준비되었으므로 기계 학습 모델을 훈련할 차례입니다. Scikit-learn에는 훈련 예측 및 평가를 위한 일관된 인터페이스를 갖춘 많은 알고리즘이 있습니다. 여기서 우리는 로지스틱 회귀 예를 들어.
메모 : 우리는 알고리즘의 구현만을 이해하는 데 관심이 있으므로 알고리즘이 어떻게 작동하는지 자세히 설명하지 않겠습니다.
- log_reg = 로지스틱회귀(max_iter=200): 로지스틱 회귀 분류기 개체를 만듭니다.
- log_reg.fit(X_train y_train): 이것을 사용하여 로지스틱 회귀 모델은 데이터에 가장 잘 맞도록 모델의 매개변수를 조정합니다.
from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression ( max_iter = 200 ) log_reg . fit ( X_train y_train )
로지스틱 회귀를 사용한 훈련. 5단계: 예측하기
학습이 완료되면 모델을 사용하여 예측 메서드를 호출하여 테스트 데이터 X_test에 대해 예측합니다. 그러면 예측된 라벨 y_pred가 반환됩니다.
- log_reg.예측: 훈련된 로지스틱 회귀 모델을 사용하여 테스트 데이터 X_test에 대한 레이블을 예측합니다.
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은 기계 학습 모델을 간단하고 효율적으로 구축하기 때문에 사용됩니다. 다음은 몇 가지 중요한 이유입니다.
- 즉시 사용 가능한 도구 : 데이터 전처리 훈련 모델, 예측 등 일반적인 작업을 위한 기능을 내장하고 있습니다. 이렇게 하면 알고리즘을 처음부터 코딩할 필요가 없으므로 시간이 절약됩니다.
- 쉬운 모델 평가 : 교차 검증 및 성능 지표와 같은 도구를 사용하면 모델이 얼마나 잘 작동하는지 측정하고 개선이 필요한 영역을 식별하는 데 도움이 됩니다.
- 광범위한 알고리즘 지원 : 분류 회귀 및 클러스터링을 포함하여 널리 사용되는 많은 기계 학습 알고리즘을 제공하여 문제에 적합한 모델을 선택할 수 있는 유연성을 제공합니다.
- 원활한 통합 : NumPy 및 SciPy와 같은 중요한 Python 라이브러리를 기반으로 구축되어 기존 데이터 분석 워크플로에 적합합니다.
- 간단하고 일관된 인터페이스 : 동일한 간단한 구문이 다양한 모델에서 작동하므로 알고리즘을 더 쉽게 배우고 전환할 수 있습니다.
- 모델 튜닝이 쉬워졌습니다 : 그리드 검색과 같은 도구를 사용하면 모델 설정을 미세 조정하여 추가적인 번거로움 없이 정확도를 높일 수 있습니다.
Scikit-learn 사용의 이점
- 사용자 친화적 : Scikit-learn의 일관되고 간단한 인터페이스는 초보자도 쉽게 사용할 수 있고 전문가도 사용할 수 있습니다.
- 시간 절약: 사전 구축된 도구와 알고리즘은 개발 시간을 줄여주므로 세부적인 코딩보다 문제 해결에 더 집중할 수 있습니다.
- 더 나은 모델 성능 : 사용하기 쉬운 튜닝 및 평가 도구는 모델의 정확성과 신뢰성을 향상시키는 데 도움이 됩니다.
- 유연성과 확장성 : 광범위한 알고리즘을 지원하고 다른 Python 라이브러리와 원활하게 통합되므로 모든 규모의 프로젝트에 적합합니다.
- 강력한 커뮤니티 지원 : 활발하게 활동하는 대규모 커뮤니티는 문제가 발생할 때 도움이 되는 광범위한 문서와 많은 리소스를 정기적으로 업데이트하도록 보장합니다.