기계 학습 파이프 라인을 최적화하기위한 10 파이썬 1 라이너


저자의 이미지 | chatgpt
틀 소개
기계 학습과 관련하여 효율성이 핵심입니다. 깨끗하고 읽을 수 있고 간결한 코드를 작성하면 개발 속도를 높일뿐만 아니라 머신 러닝 파이프 라인을 쉽게 이해하고 공유, 유지 관리 및 디버그 할 수 있습니다. 자연스럽고 표현적인 구문을 갖춘 Python은 단일 코드로 일반적인 작업을 처리 할 수있는 강력한 원 라이너를 제작하는 데 적합합니다.
이 자습서 Scikit-Learn 그리고 팬더 머신 러닝 워크 플로를 간소화하는 데 도움이됩니다. 데이터 준비 및 모델 교육부터 평가 및 기능 분석에 이르기까지 모든 것을 다룹니다.
시작합시다.
틀 환경 설정
코드를 제작하기 전에 예제 전체에서 사용할 필요한 라이브러리를 가져 오겠습니다.
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
그 길에서 한 번에 한 줄 씩 코딩하자.
틀 1. 데이터 세트로드
기본 중 하나부터 시작하겠습니다. 프로젝트를 시작하는 것은 종종 데이터로드를 의미합니다. Scikit-Learn에는 모델과 워크 플로 테스트에 적합한 여러 장난감 데이터 세트가 제공됩니다. 기능과 대상 변수를 단일 클린 라인으로로드 할 수 있습니다.
X, y = load_iris(return_X_y=True)
이 1 라이너는 다음을 사용합니다 load_iris
기능 및 세트 return_X_y=True
피처 매트릭스를 직접 반환합니다 X
그리고 대상 벡터 y
사전과 같은 물체를 구문 분석 할 필요가 없습니다.
틀 2. 데이터 분할 교육 및 테스트 세트로 분할
기계 학습 프로젝트의 또 다른 기본 단계는 다양한 용도로 데이터를 여러 세트로 분할하는 것입니다. 그만큼 train_test_split
기능은 메인 스테이입니다. 교육 및 테스트 세트를 위해 4 개의 별도의 데이터 프레임을 생성하기 위해 한 줄로 실행할 수 있습니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)
여기서 우리는 사용합니다 test_size=0.3
테스트를 위해 데이터의 30%를 할당하고 사용하려면 stratify=y
열차 및 테스트 세트에서 클래스의 비율이 원래 데이터 세트를 반영합니다.
틀 3. 모델 생성 및 훈련
두 줄을 사용하여 모델을 인스턴스화 한 다음 훈련하는 이유는 무엇입니까? 당신은 chain 할 수 있습니다 fit
다음과 같은 소형 및 읽기 쉬운 코드 라인에 대한 모델의 생성자에게 직접 메소드.
model = LogisticRegression(max_iter=1000, random_state=42).fit(X_train, y_train)
이 단일 라인은 a를 만듭니다 LogisticRegression
교육 데이터를 모델링하고 즉시 훈련하여 적합 모델 객체를 반환합니다.
틀 4. K- 폴드 교차 검증 수행
교차 검증은 단일 열차 테스트 분할보다 모델 성능을보다 강력한 추정치합니다. Scikit-Learn ‘s cross_val_score
한 단계 로이 평가를 쉽게 수행 할 수 있습니다.
scores = cross_val_score(LogisticRegression(max_iter=1000, random_state=42), X, y, cv=5)
이 1 라이너는 새로운 로지스틱 회귀 모델을 초기화하고 데이터를 5 배로 나누고, 훈련하고, 모델을 5 번 평가합니다 (cv=5
), 각 접이식에서 점수 목록을 반환합니다.
틀 5. 예측 및 정확도 계산
모델을 교육 한 후 테스트 세트에서 성능을 평가할 것입니다. 이 작업을 수행하고 단일 메소드 호출로 정확도 점수를 얻을 수 있습니다.
accuracy = model.score(X_test, y_test)
그만큼 .score()
방법은 예측 및 정확도 계산 단계를 편리하게 결합하여 제공된 테스트 데이터에 대한 모델의 정확도를 반환합니다.
틀 6. 숫자 특징 스케일링
기능 스케일링은 특히 SVM 및 로지스틱 회귀를 포함한 입력 기능의 규모에 민감한 알고리즘의 일반적인 전처리 단계입니다. 이 단일 파이썬 라인을 사용하여 스케일러를 맞추고 동시에 데이터를 변환 할 수 있습니다.
X_scaled = StandardScaler().fit_transform(X)
그만큼 fit_transform
메소드는 데이터에서 스케일링 매개 변수를 배우고 한 번에 변환을 적용하는 편리한 바로 가기입니다.
틀 7. 범주 형 데이터에 1 hot 인코딩 적용
일대일 인코딩은 범주 형 기능을 처리하기위한 표준 기술입니다. Scikit-Learn은 강력합니다 OneHotEncoder
강력한 방법 get_dummies
팬더의 기능은이 작업에 대한 진정한 1 라이너를 허용합니다.
df_encoded = pd.get_dummies(pd.DataFrame(X, columns=['f1', 'f2', 'f3', 'f4']), columns=['f1'])
이 라인은 특정 열을 변환합니다 (f1
) 팬더 데이터 프레임에서 이진 값이있는 새 열로 (f1, f2, f3, f4
), 기계 학습 모델에 적합합니다.
틀 8. Scikit-Learn 파이프 라인 정의
Scikit-Learn 파이프 라인은 여러 처리 단계와 최종 추정기를 간단하게 연쇄시킵니다. 데이터 누출을 방지하고 워크 플로를 단순화합니다. 파이프 라인을 정의하는 것은 다음과 같은 깨끗한 원 라이너입니다.
pipeline = Pipeline([('scaler', StandardScaler()), ('svc', SVC())])
이것은 먼저 사용 데이터를 스케일링하는 파이프 라인을 만듭니다. StandardScaler
그런 다음 결과를지지 벡터 분류기에 공급합니다.
틀 9. GridSearchCV를 사용하여 과다 파라미터를 조정합니다
모델에 가장 적합한 하이퍼 파라미터를 찾는 것은 지루할 수 있습니다. GridSearchCV
이 프로세스를 자동화하는 데 도움이 될 수 있습니다. 체인으로 .fit()
초기화, 검색을 정의하고 한 줄로 실행할 수 있습니다.
grid_search = GridSearchCV(SVC(), {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}, cv=3).fit(X_train, y_train)
이것은 그리드 검색을 설정합니다 SVC
모델, 다른 값을 테스트합니다 C
그리고 kernel
3 배 교차 검증을 수행합니다 (cv=3
), 최상의 조합을 찾기 위해 교육 데이터에 맞습니다.
틀 10. 기능 중요성 추출
임의의 숲과 같은 트리 기반 모델의 경우 가장 영향력있는 기능을 이해하는 것이 유용하고 효율적인 모델을 구축하는 데 필수적입니다. 목록 이해력은 기능 수입을 추출하고 정렬하기위한 고전적인 피티닉 원 라이너입니다. 이 발췌문은 먼저 모델을 빌드 한 다음 한 라이너를 사용하여 기능 수입을 결정합니다.
# First, train a model
feature_names = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
rf_model = RandomForestClassifier(random_state=42).fit(X_train, y_train)
# The one-liner
importances = sorted(zip(feature_names, rf_model.feature_importances_), key=lambda x: x[1], reverse=True)
이 1 라이너는 각 기능의 이름을 중요도 점수와 짝을 이룬 다음 가장 중요한 기능을 먼저 표시하기 위해 목록을 내림차순으로 정렬합니다.
틀 마무리
이 10 명의 원 라이너는 Python의 간결한 구문이보다 효율적이고 읽을 수있는 머신 러닝 코드를 작성하는 데 어떻게 도움이되는지 보여줍니다. 이러한 바로 가기를 일일 워크 플로에 통합하여 보일러 플레이트를 줄이고 오류를 최소화하며 실제로 중요한 요소에 중점을 두는 데 더 많은 시간을 소비합니다. 효과적인 모델 구축 및 데이터에서 귀중한 통찰력을 추출하십시오.
Matthew Mayo (@ matmayo13)는 컴퓨터 과학 석사 학위를, 데이터 마이닝 분야의 대학원 졸업장을 보유하고 있습니다. Matthew는 KDNUGGETS & GUNTOLOGY의 편집장 관리 및 Machine Learning Mastery의 편집자로서 복잡한 데이터 과학 개념에 액세스 할 수 있도록하는 것을 목표로합니다. 그의 전문적인 관심사에는 자연어 처리, 언어 모델, 기계 학습 알고리즘 및 신흥 AI 탐색이 포함됩니다. 그는 데이터 과학 커뮤니티에서 지식을 민주화하는 사명에 의해 주도되고 있습니다. Matthew는 6 살 때부터 코딩을 해왔습니다.
Post Comment