기계 학습 파이프라인 길들이기 Beast: ZenML Edition

Patricia Arquette
풀어 주다: 2024-11-27 02:07:14
원래의
617명이 탐색했습니다.

Taming the Machine Learning Pipeline Beast: ZenML Edition

ZenML의 Zen 소개

Jupyter 정글에서 ZenML 열반으로의 여정을 떠날 예정이므로 버클을 채우세요. 아니요, ZenML은 당신을 명상 마스터로 만들어 주지는 않지만 파이프라인 전문가로 만들어 줄 것입니다. 따라서 100줄의 스파게티 코드를 따로 보관하세요. 이제 큰 총을 가져올 시간입니다.

따라가려면 ZenML을 설치하세요. (저를 믿으세요. 지난 모델이 고장난 이유를 상사에게 설명하는 것보다 쉽습니다.) 여기서는 유형이 중요하므로 자유형 코딩은 필요하지 않습니다. 그것에 대해서는 진행하면서 이야기하겠습니다.

가장 먼저 해야 할 일: 신성한 파이프라인.py

pipelines.py라는 새 파일을 만듭니다. 이 걸작에서 우리는 얽힌 데이터 처리보다 좀 더 깔끔한 파이프라인을 구축할 것입니다. ZenML의 파이프라인 데코레이터로 시작하세요.

from zenml import pipeline

@pipeline(name="used_car_price_predictor")
def ml_pipeline():
    # We’ll fill in these dots soon.
    ...
로그인 후 복사
로그인 후 복사

1단계: 데이터 수집, 즉 Pandora의 Zip 열기

첫 번째 ZenML 단계는 .zip 파일에서 데이터를 읽는 것입니다(물론 데이터는 단순한 CSV 형식으로 제공되지 않기 때문입니다). 데이터를 가져와서 아티팩트에 넣는 data_ingestion_step 함수를 만나보세요. ZenML 용어는 "이 혼란스러운 부분을 다음 단계로 전달하지만 지금은 기술적으로 훌륭합니다"를 의미합니다.

from zenml import step
import pandas as pd
from typing import Tuple

@step(enable_cache=False)
def data_ingestion_step(file_path: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]:
    # Extract zip files and read data with pd.read_csv()
    ...
    return train, test, sample  # This tuple is now an “Artifact” – no fancy unboxing needed
로그인 후 복사
로그인 후 복사

ml_pipeline에서는 다음과 같이 아티팩트에서 실제 데이터를 추출합니다.

raw_data_artifacts = data_ingestion_step(file_path="data/playground-series-s4e9.zip")
train, test, sample = raw_data_artifacts
로그인 후 복사

간단한 단계(너무 편안해지지 마세요)

2단계: 누락된 값, 특성 추출 및 이상치 감지

이 단계는 상대적으로 고통스럽지 않지만 자만하지 마세요. ZenML의 단계 데코레이터를 사용하여 누락된 값을 처리하고, 기능을 엔지니어링하고, 이상값을 정리합니다.

@step(enable_cache=False)
def handle_missing_values_step(df: pd.DataFrame) -> pd.DataFrame:
    # Code to fill missing values
    ...

@step(enable_cache=False)
def feature_engineering_step(df: pd.DataFrame, strategy: str, features: list) -> pd.DataFrame:
    # Log-transform and other fancy tricks
    ...

@step(enable_cache=False)
def outlier_detection_step(df: pd.DataFrame, feature: str, strategy: str, method: str) -> pd.DataFrame:
    # Outlier removal or adjustment
    ...
로그인 후 복사

현재 진행 중인 작업은 다음과 같습니다.

filled_train = handle_missing_values_step(train)
engineered_train = feature_engineering_step(filled_train, strategy='log', features=['price'])
cleaned_train = outlier_detection_step(df=engineered_train, feature='price', strategy='IQR', method='remove')
로그인 후 복사

3단계: 데이터 분할

드디어 데이터가 깨끗해졌습니다. 이제 이를 훈련 세트와 테스트 세트로 나눌 차례입니다. 이것이 쉬운 부분이라고 생각하시겠지만, 틀렸습니다. 유형 캐스팅이 핵심입니다.

X_train, X_test, y_train, y_test = data_splitter(cleaned_train)
로그인 후 복사

모델 빌딩의 미로

4단계: 모든 단계를 중단하지 않는 모델 구축

여기서 문제가 발생합니다. Sklearn의 RegressorMixin은 이식성에 유용하지만 ZenML 아티팩트가 항상 좋은 것은 아닙니다. 따라서 사용자 정의 PipelineRegressor 클래스를 만들어 해킹합니다.

from sklearn.pipeline import Pipeline
from sklearn.base import RegressorMixin

class PipelineRegressor(Pipeline, RegressorMixin):
    pass
로그인 후 복사

이제 model_building_step에서 이 클래스를 사용합니다. mlflow를 초기화하고, 열을 기록하고, 프로세스를 마무리해야 합니다.

from zenml import pipeline

@pipeline(name="used_car_price_predictor")
def ml_pipeline():
    # We’ll fill in these dots soon.
    ...
로그인 후 복사
로그인 후 복사

스마트하다고 느낄 만큼 충분한 데이터로 평가

5단계: 모델 평가

모델을 구축한 후 몇 가지 예측을 하고 로그 평가 지표를 작성합니다. "보세요, 정확해요!"처럼 간단하다면 말이죠. ZenML 버전은 다음과 같습니다.

from zenml import step
import pandas as pd
from typing import Tuple

@step(enable_cache=False)
def data_ingestion_step(file_path: str) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]:
    # Extract zip files and read data with pd.read_csv()
    ...
    return train, test, sample  # This tuple is now an “Artifact” – no fancy unboxing needed
로그인 후 복사
로그인 후 복사

끝: 즉, ZenML 워크플로가 완료되었습니다.

축하합니다. 해냈어요! 이제 ml_pipeline()을 실행하고 ZenML 대시보드로 이동하여 프로세스의 DAG 보기를 확인하세요. MLFlow UI는 사용 중인 측정항목, 모델 세부정보 및 기능을 표시합니다.

유용한 링크

  • 대상 인코딩: "범주형 변수 인코딩: 대상 인코딩에 대한 심층 분석"
  • 전체 코드: GitHub - NevroHelios/Used-Car-Price-Prediction-endToEnd

위 내용은 기계 학습 파이프라인 길들이기 Beast: ZenML Edition의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿