ApgÅ«stiet Scikit-learn Pipelines, lai optimizÄtu savas maŔīnmÄcīŔanÄs darbplÅ«smas. Uzziniet, kÄ automatizÄt priekÅ”apstrÄdi, modeļu apmÄcÄ«bu un hiperparametru pielÄgoÅ”anu, lai veidotu robustus, reproducÄjamus un ražoÅ”anai gatavus modeļus.
Scikit-learn Pipeline: Galvenais ceļvedis ML darbplÅ«smas automatizÄcijÄ
MaŔīnmÄcīŔanÄs pasaulÄ modeļa izveide bieži tiek attÄlota kÄ krÄÅ”Ås pÄdÄjais solis. TomÄr pieredzÄjuÅ”i datu zinÄtnieki un ML inženieri zina, ka ceļŔ uz robustu modeli ir bruÄ£Äts ar virkni bÅ«tisku, bieži vien atkÄrtotu un kļūdÄm pakļautu soļu: datu tÄ«rīŔana, pazÄ«mju mÄrogoÅ”ana, kategorisko mainÄ«go kodÄÅ”ana un daudz kas cits. Å o soļu individuÄla pÄrvaldīŔana apmÄcÄ«bas, validÄcijas un testÄÅ”anas datu kopÄm var Ätri kļūt par loÄ£istikas murgu, kas noved pie nemanÄmÄm kļūdÄm un, kas ir visbÄ«stamÄk, pie datu noplÅ«des.
Å eit nÄk palÄ«gÄ Scikit-learn Pipeline. TÄ nav tikai ÄrtÄ«ba; tas ir fundamentÄls rÄ«ks profesionÄlu, reproducÄjamu un ražoÅ”anai gatavu maŔīnmÄcīŔanÄs sistÄmu veidoÅ”anai. Å is visaptveroÅ”ais ceļvedis jÅ«s iepazÄ«stinÄs ar visu, kas jums jÄzina, lai apgÅ«tu Scikit-learn Pipelines, sÄkot no pamatjÄdzieniem lÄ«dz pat progresÄ«vÄm tehnikÄm.
ProblÄma: manuÄla maŔīnmÄcīŔanÄs darbplÅ«sma
ApskatÄ«sim tipisku uzraudzÄ«tÄs mÄcīŔanÄs uzdevumu. Pirms jÅ«s pat varat izsaukt model.fit(), jums ir jÄsagatavo dati. Standarta darbplÅ«sma varÄtu izskatÄ«ties Å”Ädi:
- Datu sadalīŔana: Sadaliet savu datu kopu apmÄcÄ«bas un testÄÅ”anas kopÄs. Å is ir pirmais un vissvarÄ«gÄkais solis, lai nodroÅ”inÄtu, ka varat novÄrtÄt sava modeļa veiktspÄju ar neredzÄtiem datiem.
- TrÅ«kstoÅ”o vÄrtÄ«bu apstrÄde: IdentificÄjiet un aizpildiet trÅ«kstoÅ”os datus savÄ apmÄcÄ«bas kopÄ (piemÄram, izmantojot vidÄjo, mediÄnu vai konstanti).
- Kategorisko pazÄ«mju kodÄÅ”ana: PÄrveidojiet nenumeriskas kolonnas, piemÄram, 'Valsts' vai 'Produkta kategorija', skaitliskÄ formÄtÄ, izmantojot tÄdas metodes kÄ One-Hot kodÄÅ”ana vai OrdinÄlÄ kodÄÅ”ana.
- Skaitlisko pazÄ«mju mÄrogoÅ”ana: PielÄgojiet visas skaitliskÄs pazÄ«mes lÄ«dzÄ«gam mÄrogam, izmantojot tÄdas metodes kÄ standartizÄcija (
StandardScaler) vai normalizÄcija (MinMaxScaler). Tas ir bÅ«tiski daudziem algoritmiem, piemÄram, SVM, loÄ£istiskajai regresijai un neironu tÄ«kliem. - Modeļa apmÄcÄ«ba: Visbeidzot, apmÄciet savu izvÄlÄto maŔīnmÄcīŔanÄs modeli ar iepriekÅ” apstrÄdÄtajiem apmÄcÄ«bas datiem.
Tagad, kad vÄlaties veikt prognozes ar savu testa kopu (vai jauniem, neredzÄtiem datiem), jums ir jÄatkÄrto tieÅ”i tie paÅ”i priekÅ”apstrÄdes soļi. Jums ir jÄpiemÄro tÄ pati aizpildīŔanas stratÄÄ£ija (izmantojot vÄrtÄ«bu, kas aprÄÄ·inÄta no apmÄcÄ«bas kopas), tÄ pati kodÄÅ”anas shÄma un tie paÅ”i mÄrogoÅ”anas parametri. ManuÄla visu Å”o apmÄcÄ«to transformatoru uzskaite ir nogurdinoÅ”a un galvenais kļūdu avots.
LielÄkais risks Å”eit ir datu noplÅ«de. TÄ notiek, kad informÄcija no testa kopas nejauÅ”i nonÄk apmÄcÄ«bas procesÄ. PiemÄram, ja jÅ«s aprÄÄ·inÄt vidÄjo vÄrtÄ«bu aizpildīŔanai vai mÄrogoÅ”anas parametrus no visas datu kopas pirms sadalīŔanas, jÅ«su modelis netieÅ”i mÄcÄs no testa datiem. Tas noved pie pÄrÄk optimistiska veiktspÄjas novÄrtÄjuma un modeļa, kas reÄlajÄ pasaulÄ cieÅ” neveiksmi.
IepazÄ«stinÄm ar Scikit-learn Pipelines: automatizÄts risinÄjums
Scikit-learn Pipeline ir objekts, kas savieno vairÄkus datu transformÄcijas soļus un galÄ«go novÄrtÄtÄju (piemÄram, klasifikatoru vai regresoru) vienÄ, vienotÄ objektÄ. JÅ«s varat to iedomÄties kÄ montÄžas lÄ«niju saviem datiem.
Kad jÅ«s izsaucat .fit() uz Pipeline, tas secÄ«gi piemÄro fit_transform() katram starpposma solim uz apmÄcÄ«bas datiem, nododot viena soļa izvadi kÄ nÄkama soļa ievadi. Visbeidzot, tas izsauc .fit() uz pÄdÄjÄ soļa, kas ir novÄrtÄtÄjs. Kad jÅ«s izsaucat .predict() vai .transform() uz Pipeline, tas piemÄro tikai .transform() metodi katram starpposma solim uz jaunajiem datiem, pirms veic prognozi ar galÄ«go novÄrtÄtÄju.
GalvenÄs Pipelines izmantoÅ”anas priekÅ”rocÄ«bas
- Datu noplÅ«des novÄrÅ”ana: Å Ä« ir vissvarÄ«gÄkÄ priekÅ”rocÄ«ba. IekapsulÄjot visu priekÅ”apstrÄdi konveijerÄ, jÅ«s nodroÅ”inÄt, ka transformÄcijas tiek apgÅ«tas tikai no apmÄcÄ«bas datiem krusteniskÄs validÄcijas laikÄ un tiek pareizi piemÄrotas validÄcijas/testa datiem.
- VienkÄrŔība un organizÄtÄ«ba: Visa jÅ«su darbplÅ«sma, no neapstrÄdÄtiem datiem lÄ«dz apmÄcÄ«tam modelim, ir apvienota vienÄ objektÄ. Tas padara jÅ«su kodu tÄ«rÄku, lasÄmÄku un vieglÄk pÄrvaldÄmu.
- ReproducÄjamÄ«ba: Pipeline objekts iekapsulÄ visu jÅ«su modelÄÅ”anas procesu. JÅ«s varat viegli saglabÄt Å”o vienu objektu (piemÄram, izmantojot `joblib` vai `pickle`) un vÄlÄk to ielÄdÄt, lai veiktu prognozes, nodroÅ”inot, ka katru reizi tiek ievÄroti tieÅ”i tie paÅ”i soļi.
- EfektivitÄte režģa meklÄÅ”anÄ (Grid Search): JÅ«s varat veikt hiperparametru pielÄgoÅ”anu visÄ konveijerÄ vienlaicÄ«gi, atrodot labÄkos parametrus gan priekÅ”apstrÄdes soļiem, gan galÄ«gajam modelim. MÄs izpÄtÄ«sim Å”o spÄcÄ«go funkciju vÄlÄk.
JÅ«su pirmÄ vienkÄrÅ”Ä Pipeline izveide
SÄksim ar pamata piemÄru. IedomÄjieties, ka mums ir skaitliska datu kopa un mÄs vÄlamies mÄrogot datus pirms loÄ£istiskÄs regresijas modeļa apmÄcÄ«bas. LÅ«k, kÄ tam izveidot konveijeru.
Vispirms iestatīsim mūsu vidi un izveidosim dažus parauga datus.
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
# Generate some sample data
X, y = np.random.rand(100, 5) * 10, (np.random.rand(100) > 0.5).astype(int)
# Split data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Tagad definÄsim mÅ«su konveijeru. Konveijers tiek izveidots, norÄdot soļu sarakstu. Katrs solis ir kortežs (tuple), kas satur nosaukumu (jÅ«su izvÄlÄtu virkni) un paÅ”u transformatora vai novÄrtÄtÄja objektu.
# Create the pipeline steps
steps = [
('scaler', StandardScaler()),
('classifier', LogisticRegression())
]
# Create the Pipeline object
pipe = Pipeline(steps)
# Now, you can treat the 'pipe' object as if it were a regular model.
# Let's train it on our training data.
pipe.fit(X_train, y_train)
# Make predictions on the test data
y_pred = pipe.predict(X_test)
# Evaluate the model
accuracy = accuracy_score(y_test, y_pred)
print(f"Pipeline Accuracy: {accuracy:.4f}")
Tas arÄ« viss! Tikai dažÄs rindiÅÄs mÄs esam apvienojuÅ”i mÄrogoÅ”anu un klasifikÄciju. Scikit-learn apstrÄdÄ visu starpposma loÄ£iku. Kad tiek izsaukts pipe.fit(X_train, y_train), tas vispirms izsauc StandardScaler().fit_transform(X_train) un pÄc tam nodod rezultÄtu LogisticRegression().fit(). Kad tiek izsaukts pipe.predict(X_test), tas piemÄro jau apmÄcÄ«to mÄrogotÄju, izmantojot StandardScaler().transform(X_test), pirms veic prognozes ar loÄ£istiskÄs regresijas modeli.
NehomogÄnu datu apstrÄde: ColumnTransformer
ReÄlÄs pasaules datu kopas reti ir vienkÄrÅ”as. TÄs bieži satur dažÄdu datu tipu sajaukumu: skaitliskas kolonnas, kurÄm nepiecieÅ”ama mÄrogoÅ”ana, kategoriskas kolonnas, kurÄm nepiecieÅ”ama kodÄÅ”ana, un varbÅ«t teksta kolonnas, kurÄm nepiecieÅ”ama vektorizÄcija. VienkÄrÅ”s secÄ«gs konveijers tam nav pietiekams, jo jums ir jÄpiemÄro dažÄdas transformÄcijas dažÄdÄm kolonnÄm.
Å eit izceļas ColumnTransformer. Tas ļauj jums piemÄrot dažÄdus transformatorus dažÄdÄm datu kolonnu apakÅ”kopÄm un pÄc tam gudri apvieno rezultÄtus. Tas ir ideÄls rÄ«ks, ko izmantot kÄ priekÅ”apstrÄdes soli lielÄkÄ konveijerÄ.
PiemÄrs: skaitlisko un kategorisko pazÄ«mju apvienoÅ”ana
Izveidosim reÄlistiskÄku datu kopu ar gan skaitliskÄm, gan kategoriskÄm pazÄ«mÄm, izmantojot pandas.
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.impute import SimpleImputer
# Create a sample DataFrame
data = {
'age': [25, 30, 45, 35, 50, np.nan, 22],
'salary': [50000, 60000, 120000, 80000, 150000, 75000, 45000],
'country': ['USA', 'Canada', 'USA', 'UK', 'Canada', 'USA', 'UK'],
'purchased': [0, 1, 1, 0, 1, 1, 0]
}
df = pd.DataFrame(data)
X = df.drop('purchased', axis=1)
y = df['purchased']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Identify numerical and categorical columns
numerical_features = ['age', 'salary']
categorical_features = ['country']
MÅ«su priekÅ”apstrÄdes stratÄÄ£ija bÅ«s:
- SkaitliskajÄm kolonnÄm (
age,salary): AizpildÄ«t trÅ«kstoÅ”Äs vÄrtÄ«bas ar mediÄnu, pÄc tam tÄs mÄrogot. - KategoriskajÄm kolonnÄm (
country): AizpildÄ«t trÅ«kstoÅ”Äs vÄrtÄ«bas ar visbiežÄk sastopamo kategoriju, pÄc tam tÄs kodÄt ar one-hot metodi.
MÄs varam definÄt Å”os soļus, izmantojot divus atseviŔķus mini-konveijerus.
# Create a pipeline for numerical features
numeric_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('scaler', StandardScaler())
])
# Create a pipeline for categorical features
categorical_transformer = Pipeline(steps=[
('imputer', SimpleImputer(strategy='most_frequent')),
('onehot', OneHotEncoder(handle_unknown='ignore'))
])
Tagad mÄs izmantojam `ColumnTransformer`, lai piemÄrotu Å”os konveijerus pareizajÄm kolonnÄm.
# Create the preprocessor with ColumnTransformer
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numerical_features),
('cat', categorical_transformer, categorical_features)
])
`ColumnTransformer` pieÅem `transformers` sarakstu. Katrs transformators ir kortežs, kas satur nosaukumu, transformatora objektu (kas pats var bÅ«t konveijers) un kolonnu nosaukumu sarakstu, kuriem to piemÄrot.
Visbeidzot, mÄs varam ievietot Å”o `preprocessor` kÄ pirmo soli mÅ«su galvenajÄ konveijerÄ, kam seko mÅ«su galÄ«gais novÄrtÄtÄjs.
from sklearn.ensemble import RandomForestClassifier
# Create the full pipeline
full_pipeline = Pipeline(steps=[
('preprocessor', preprocessor),
('classifier', RandomForestClassifier(random_state=42))
])
# Train and evaluate the full pipeline
full_pipeline.fit(X_train, y_train)
print("Model score on test data:", full_pipeline.score(X_test, y_test))
# You can now make predictions on new raw data
new_data = pd.DataFrame({
'age': [40, 28],
'salary': [90000, 55000],
'country': ['USA', 'Germany'] # 'Germany' is an unknown category
})
predictions = full_pipeline.predict(new_data)
print("Predictions for new data:", predictions)
IevÄrojiet, cik eleganti tas pÄrvalda sarežģītu darbplÅ«smu. Parametrs `handle_unknown='ignore'` `OneHotEncoder` ir Ä«paÅ”i noderÄ«gs ražoÅ”anas sistÄmÄm, jo tas novÄrÅ” kļūdas, kad datos parÄdÄs jaunas, neredzÄtas kategorijas.
Progresīvas Pipeline tehnikas
Pipelines piedÄvÄ vÄl vairÄk jaudas un elastÄ«bas. ApskatÄ«sim dažas progresÄ«vas funkcijas, kas ir bÅ«tiskas profesionÄliem maŔīnmÄcīŔanÄs projektiem.
PielÄgotu transformatoru izveide
Dažreiz ar iebÅ«vÄtajiem Scikit-learn transformatoriem nepietiek. Jums varÄtu bÅ«t nepiecieÅ”ams veikt domÄnam specifisku transformÄciju, piemÄram, iegÅ«t pazÄ«mes logaritmu vai apvienot divas pazÄ«mes jaunÄ. JÅ«s varat viegli izveidot savus pielÄgotos transformatorus, kas nevainojami integrÄjas konveijerÄ.
Lai to izdarÄ«tu, jÅ«s izveidojat klasi, kas manto no `BaseEstimator` un `TransformerMixin`. Jums ir jÄimplementÄ tikai `fit()` un `transform()` metodes (un `__init__()`, ja nepiecieÅ”ams).
Izveidosim transformatoru, kas pievieno jaunu pazīmi: `salary` un `age` attiecību.
from sklearn.base import BaseEstimator, TransformerMixin
# Define column indices (can also pass names)
age_ix, salary_ix = 0, 1
class FeatureRatioAdder(BaseEstimator, TransformerMixin):
def __init__(self):
pass # No parameters to set
def fit(self, X, y=None):
return self # Nothing to learn during fit, so just return self
def transform(self, X):
salary_age_ratio = X[:, salary_ix] / X[:, age_ix]
return np.c_[X, salary_age_ratio] # Concatenate original X with new feature
JÅ«s varÄtu ievietot Å”o pielÄgoto transformatoru savÄ skaitlisko datu apstrÄdes konveijerÄ:
numeric_transformer_with_custom = Pipeline(steps=[
('imputer', SimpleImputer(strategy='median')),
('ratio_adder', FeatureRatioAdder()), # Our custom transformer
('scaler', StandardScaler())
])
Å is pielÄgoÅ”anas lÄ«menis ļauj jums iekapsulÄt visu savu pazÄ«mju inženierijas loÄ£iku konveijerÄ, padarot jÅ«su darbplÅ«smu ÄrkÄrtÄ«gi pÄrnÄsÄjamu un reproducÄjamu.
Hiperparametru pielÄgoÅ”ana ar Pipelines, izmantojot `GridSearchCV`
Å is, iespÄjams, ir viens no jaudÄ«gÄkajiem Pipelines pielietojumiem. JÅ«s varat meklÄt labÄkos hiperparametrus visai savai darbplÅ«smai, ieskaitot priekÅ”apstrÄdes soļus un galÄ«go modeli, visu uzreiz.
Lai norÄdÄ«tu, kurus parametrus pielÄgot, jÅ«s izmantojat Ä«paÅ”u sintaksi: `soļa_nosaukums__parametra_nosaukums`.
PaplaÅ”inÄsim mÅ«su iepriekÅ”Äjo piemÄru un pielÄgosim hiperparametrus gan mÅ«su priekÅ”apstrÄdÄtÄja imputerim, gan `RandomForestClassifier`.
from sklearn.model_selection import GridSearchCV
# We use the 'full_pipeline' from the ColumnTransformer example
# Define the parameter grid
param_grid = {
'preprocessor__num__imputer__strategy': ['mean', 'median'],
'classifier__n_estimators': [50, 100, 200],
'classifier__max_depth': [None, 10, 20],
'classifier__min_samples_leaf': [1, 2, 4]
}
# Create the GridSearchCV object
grid_search = GridSearchCV(full_pipeline, param_grid, cv=5, verbose=1, n_jobs=-1)
# Fit it to the data
grid_search.fit(X_train, y_train)
# Print the best parameters and score
print("Best parameters found: ", grid_search.best_params_)
print("Best cross-validation score: ", grid_search.best_score_)
# The best estimator is already refitted on the whole training data
best_model = grid_search.best_estimator_
print("Test set score with best model: ", best_model.score(X_test, y_test))
AplÅ«kojiet uzmanÄ«gi atslÄgas `param_grid`:
'preprocessor__num__imputer__strategy': Tas mÄrÄ·Ä uz `strategy` parametru `SimpleImputer` solim ar nosaukumu `imputer` iekÅ” skaitliskÄ konveijera ar nosaukumu `num`, kas pats atrodas iekÅ” `ColumnTransformer` ar nosaukumu `preprocessor`.'classifier__n_estimators': Tas mÄrÄ·Ä uz `n_estimators` parametru galÄ«gajam novÄrtÄtÄjam ar nosaukumu `classifier`.
To darot, `GridSearchCV` pareizi izmÄÄ£ina visas kombinÄcijas un atrod optimÄlo parametru kopu visai darbplÅ«smai, pilnÄ«bÄ novÄrÅ”ot datu noplÅ«di pielÄgoÅ”anas procesa laikÄ, jo visa priekÅ”apstrÄde tiek veikta katrÄ krusteniskÄs validÄcijas solÄ«.
JÅ«su Pipeline vizualizÄÅ”ana un pÄrbaude
Sarežģīti konveijeri var kļūt grÅ«ti saprotami. Scikit-learn nodroÅ”ina lielisku veidu, kÄ tos vizualizÄt. SÄkot ar versiju 0.23, jÅ«s varat iegÅ«t interaktÄ«vu HTML attÄlojumu.
from sklearn import set_config
# Set display to 'diagram' to get the visual representation
set_config(display='diagram')
# Now, simply displaying the pipeline object in a Jupyter Notebook or similar environment will render it
full_pipeline
Tas Ä£enerÄs diagrammu, kas parÄda datu plÅ«smu caur katru transformatoru un novÄrtÄtÄju, kopÄ ar to nosaukumiem. Tas ir neticami noderÄ«gi atkļūdoÅ”anai, darba kopÄ«goÅ”anai un modeļa struktÅ«ras izpratnei.
JÅ«s varat arÄ« piekļūt atseviŔķiem apmÄcÄ«ta konveijera soļiem, izmantojot to nosaukumus:
# Access the final classifier of the fitted pipeline
final_classifier = full_pipeline.named_steps['classifier']
print("Feature importances:", final_classifier.feature_importances_)
# Access the OneHotEncoder to see the learned categories
onehot_encoder = full_pipeline.named_steps['preprocessor'].named_transformers_['cat'].named_steps['onehot']
print("Categorical features learned:", onehot_encoder.categories_)
BiežÄkÄs kļūdas un labÄkÄs prakses
- ApmÄcÄ«ba ar nepareiziem datiem: VienmÄr, vienmÄr apmÄciet savu konveijeru TIKAI ar apmÄcÄ«bas datiem. Nekad neapmÄciet to ar pilnu datu kopu vai testa kopu. Tas ir galvenais noteikums, lai novÄrstu datu noplÅ«di.
- Datu formÄti: PievÄrsiet uzmanÄ«bu datu formÄtam, ko sagaida katrs solis. Daži transformatori (kÄ mÅ«su pielÄgotajÄ piemÄrÄ) var strÄdÄt ar NumPy masÄ«viem, kamÄr citi ir ÄrtÄki ar Pandas DataFrames. Scikit-learn parasti labi tiek galÄ ar Å”o, bet tas ir kaut kas, par ko jÄbÅ«t informÄtam, Ä«paÅ”i ar pielÄgotiem transformatoriem.
- Konveijeru saglabÄÅ”ana un ielÄdÄÅ”ana: Lai ieviestu savu modeli, jums bÅ«s jÄsaglabÄ apmÄcÄ«tais konveijers. Standarta veids, kÄ to darÄ«t Python ekosistÄmÄ, ir ar `joblib` vai `pickle`. `joblib` bieži ir efektÄ«vÄks objektiem, kas satur lielus NumPy masÄ«vus.
import joblib # Save the pipeline joblib.dump(full_pipeline, 'my_model_pipeline.joblib') # Load the pipeline later loaded_pipeline = joblib.load('my_model_pipeline.joblib') # Make predictions with the loaded model loaded_pipeline.predict(new_data) - Izmantojiet aprakstoÅ”us nosaukumus: PieŔķiriet saviem konveijera soļiem un `ColumnTransformer` komponentiem skaidrus, aprakstoÅ”us nosaukumus (piemÄram, 'numeric_imputer', 'categorical_encoder', 'svm_classifier'). Tas padara jÅ«su kodu lasÄmÄku un vienkÄrÅ”o hiperparametru pielÄgoÅ”anu un atkļūdoÅ”anu.
SecinÄjums: KÄpÄc Pipelines ir neaizstÄjamas profesionÄlÄ ML
Scikit-learn Pipelines nav tikai rÄ«ks tÄ«rÄka koda rakstīŔanai; tÄs pÄrstÄv paradigmas maiÅu no manuÄlas, kļūdÄm pakļautas skriptÄÅ”anas uz sistemÄtisku, robustu un reproducÄjamu pieeju maŔīnmÄcÄ«bai. TÄs ir pamatÄ«gas ML inženierijas prakses mugurkauls.
PieÅemot konveijerus, jÅ«s iegÅ«stat:
- Robustumu: JÅ«s novÄrÅ”at visbiežÄko kļūdu avotu maŔīnmÄcīŔanÄs projektos ā datu noplÅ«di.
- EfektivitÄti: JÅ«s optimizÄjat visu savu darbplÅ«smu, no pazÄ«mju inženierijas lÄ«dz hiperparametru pielÄgoÅ”anai, vienÄ, saskaÅotÄ vienÄ«bÄ.
- ReproducÄjamÄ«bu: JÅ«s izveidojat vienu, serializÄjamu objektu, kas satur visu jÅ«su modeļa loÄ£iku, padarot to viegli izvietojamu un kopÄ«gojamu.
Ja jÅ«s nopietni domÄjat par maŔīnmÄcīŔanÄs modeļu veidoÅ”anu, kas uzticami darbojas reÄlajÄ pasaulÄ, Scikit-learn Pipelines apguve nav izvÄles iespÄja ā tÄ ir bÅ«tiska. SÄciet tos iekļaut savos projektos jau Å”odien, un jÅ«s veidosiet labÄkus, uzticamÄkus modeļus ÄtrÄk nekÄ jebkad agrÄk.