Ikat pinggang, kerana kami akan melakukan perjalanan dari hutan Jupyter ke nirvana ZenML. Tidak, ZenML tidak akan menjadikan anda seorang pakar meditasi, tetapi ia akan menjadikan anda pakar saluran paip. Jadi, ketepikan 100 baris kod spageti anda; sudah tiba masanya untuk membawa masuk senjata besar.
Untuk mengikuti, pasang ZenML (percayalah, lebih mudah daripada menjelaskan kepada bos anda sebab model terakhir anda rosak). Jenis penting di sini, jadi tiada pengekodan gaya bebas; kita akan bercakap tentang perkara itu semasa kita pergi.
Buat fail baharu yang dipanggil pipelines.py. Dalam karya agung ini, kami akan membina saluran paip kami—sesuatu yang lebih bersih daripada kusut masai pemprosesan data. Mulakan dengan penghias saluran paip ZenML:
from zenml import pipeline @pipeline(name="used_car_price_predictor") def ml_pipeline(): # We’ll fill in these dots soon. ...
Inilah ZenML pertama kami langkah, di mana kami akan membaca data daripada fail .zip (kerana, sudah tentu, data tidak pernah datang dalam CSV mudah). Temui fungsi data_ingestion_step kami, di mana kami mengimport data dan membuangnya ke dalam artifak—istilah ZenML untuk "kami meneruskan kekacauan ini ke langkah seterusnya, tetapi ia secara teknikalnya hebat sekarang."
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
Dalam ml_pipeline, kami mengekstrak data sebenar daripada artifak seperti ini:
raw_data_artifacts = data_ingestion_step(file_path="data/playground-series-s4e9.zip") train, test, sample = raw_data_artifacts
Langkah-langkah ini agak tidak menyakitkan, tetapi jangan sombong. Menggunakan penghias langkah ZenML, kami mengendalikan nilai yang hilang, ciri jurutera dan membersihkan bahagian luar.
@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 ...
Dan dalam perancangan:
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')
Data kami akhirnya bersih. Kini tiba masanya untuk membahagikannya kepada set latihan dan ujian. Anda fikir ini adalah bahagian yang mudah, tetapi anda silap—pemutus jenis adalah kuncinya.
X_train, X_test, y_train, y_test = data_splitter(cleaned_train)
Di sinilah keadaan menjadi rumit. RegressorMixin Sklearn berguna untuk mudah alih, tetapi artifak ZenML tidak selalunya berfungsi dengan baik. Jadi, kami menggodamnya dengan membuat kelas PipelineRegressor tersuai:
from sklearn.pipeline import Pipeline from sklearn.base import RegressorMixin class PipelineRegressor(Pipeline, RegressorMixin): pass
Sekarang, kami menggunakan kelas ini dalam model_building_step kami. Anda perlu memulakan aliran ml, log lajur dan selesaikan proses:
from zenml import pipeline @pipeline(name="used_car_price_predictor") def ml_pipeline(): # We’ll fill in these dots soon. ...
Dengan model yang dibina, kami membuat beberapa ramalan dan metrik penilaian log—kalau saja ia semudah "lihat, ia tepat!" Berikut ialah versi ZenML itu:
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
Tahniah, anda berjaya! Sekarang, jalankan ml_pipeline() dan pergi ke papan pemuka ZenML untuk melihat DAG proses tersebut. UI MLFlow akan memaparkan metrik, butiran model dan ciri yang sedang digunakan.
Pautan Berguna
Atas ialah kandungan terperinci Menjinakkan Machine Learning Pipeline Beast: Edisi ZenML. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!