Zephyrnet-logo

Aan de slag met PyCaret

Datum:

Aan de slag met PyCaret
Afbeelding door redacteur
 

Elke training en implementatie van een AI-model doorloopt een lange datareis. Sommige van deze stappen zijn standaard en kunnen worden geautomatiseerd, waardoor een snelle ontwikkeling en implementatie van modellen mogelijk wordt. PyCaret is een van de pakketten die is ontwikkeld om modellen voor machinaal leren op fabrieksschaal uit te rollen. Laten we beginnen met erover te leren.

PyCaret is een open-source, low-code data science-pakket in Python dat de experimentcyclus versnelt door ML-workflows te automatiseren. Het vervangt honderden regels code door slechts een paar regels, wat sneller en efficiënter experimenteren mogelijk maakt. 

Het is een wrapper rond meerdere ML-bibliotheken en frameworks zoals scikit-learn, stimulerende bibliotheken zoals LightGBM/XGBoost/CatBoost, spaCy, Hyperopt, Ray, enz., wat zorgt voor een naadloze en flexibele ontwikkeling.

 

Aan de slag met PyCaret
Afbeelding door pycaret
 

PyCaret is eenvoudig en gebruiksvriendelijk, waarbij de bewerkingen opeenvolgend worden opgeslagen in een pijplijn die gereed is voor implementatie. PyCaret automatiseert preprocessing, feature engineering en hyperparameter tuning, allemaal out of the box.

 

Aan de slag met PyCaret
Afbeelding door Moez Ali
 

De modellenverzameling bevat meer dan 70 ongetrainde modellen voor taken zoals classificatie, regressie, clustering, enz. met een uitzonderlijke spreiding van modules, waaronder gesuperviseerde en niet-gesuperviseerde methoden.

PyCaret heeft alles gedekt - of het nu gaat om integratie met het SHAP-framework voor uitlegbaarheid of met MLFlow voor het volgen van experimenten.

Pycaret kan worden geïnstalleerd met behulp van pip. De standaardinstallatie installeert alleen de harde afhankelijkheden zoals hieronder weergegeven.

pip install pycaret

 

Voer de onderstaande opdracht uit in uw terminal/opdrachtregel om de volledige versie te installeren.

pip install pycaret[full]

 

Pycaret biedt wat standaard aan datasets uit de doos. We zullen de dataset "Boston Housing Prices" gebruiken (boston.csv) voor deze zelfstudie.

Laten we eerst bibliotheken zoals "get_data" van PyCaret importeren om de gegevens in de Jupyter-omgeving te laden en "plotly express" voor het in kaart brengen/plotten.

from pycaret.datasets import get_data
import plotly.express as px
from pycaret.regression import *

 

Als u een fout ziet tijdens het importeren van de bibliotheken, kan dit komen door afhankelijkheidsproblemen die eerst moeten worden opgelost. Houd er rekening mee dat PyCaret nog niet compatibel is met Python 3.9. Voor deze demo wordt Python 3.7 gebruikt Google Colab.

Laad de dataset in de Jupyter Notebook met behulp van de functie get_data die eerder is geïmporteerd uit pycaret.datasets. De functie get_data retourneert een gegevensframe dat kan worden opgeslagen zoals hieronder weergegeven.

data = get_data('boston')

 

PyCaret toont standaard de bovenste vijf rijen van het dataframe. Daarom hoeft u de functie dataframe.head() niet expliciet aan te roepen.

 

Aan de slag met PyCaret
 

Elke rij in de dataset vertegenwoordigt een buitenwijk of een stad in de regio Boston. De gegevens zijn oorspronkelijk ontleend aan de Boston Standard Metropolitan Statistical Area (SMSA) in het jaar 1970 met een datadictionary afkomstig van hier.  

We lossen een regressieprobleem op gezien de continue aard van de doelvariabele MEDV.

Het onderstaande diagram vertegenwoordigt een van de interessante spreidingsdiagrammen met de volgende kenmerken:

  • Bivariate verdeling tussen de mediane waarde van koopwoningen in $ 1000s (MEDV) en het percentage van de lagere status van de bevolking (LSTAT)
  • Een index van toegankelijkheid tot radiale snelwegen (RAD) voor de vergelijking als een gefacetteerde kolom (equivalent aan "tint" in Seaborn)
  • Een trendlijn die gebruikmaakt van het trendlijnargument met waarde als "OLS" die gewone kleinste kwadraten vertegenwoordigt
  • De kleur van de trendlijn is rood gekozen voor gemakkelijke zichtbaarheid met behulp van het argument trendline_color_override
fig = px.scatter(x = data['lstat'], y = data['medv'], facet_col = data['rad'], opacity = 0.2, trendline = 'ols', trendline_color_override = 'red')
fig.show()

 

De grafiek laat een sterk negatief verband zien tussen de mediane huizenprijzen en de lagere status van de bevolking. Dit betekent dat hoe zwakker de financiële situatie van de bevolking is, hoe lager het beschikbare inkomen, en dus hoe lager de huizenprijzen.

 

Aan de slag met PyCaret
 

De RAD-waarde van 24 past goed bij de gegevens, afgezien van enkele uitschieters, en heeft behoorlijke ondersteuning met betrekking tot het aantal records.

Kijkend naar de verdeling van de doelvariabele, dwz MEDV, lijkt deze redelijk normaal verdeeld te zijn, enkele uitschieters daargelaten.

fig = px.histogram(data, x=["medv"])
fig.show()

 

Aan de slag met PyCaret
 

Het opzetten van een PyCaret-experiment is vrij eenvoudig met behulp van de setup-functie. De functie gebruikt de volgende argumenten als invoer: het dataframe, de naam van de doelvariabele, een boolean om de experimentresultaten te loggen en de naam.

s = setup(data, target = 'medv', log_experiment = True, experiment_name = 'housing_prices')

 

Zoals blijkt uit de uitvoer van PyCaret, doet het een scala aan dingen automatisch, inclusief maar niet beperkt tot het identificeren van ontbrekende waarden, continue en categorische kenmerken, de kardinaliteit van variabelen, het splitsen van trein- en testsets en het uitvoeren van kruisvalidaties die anders veel tijd en moeite zouden kosten. bronnen.

 

Aan de slag met PyCaret
 

Zodra het experiment is opgezet, moet u Compare_Models() uitvoeren om te experimenteren met een groot aantal algoritmen voor een bepaald probleem. De onderstaande code slaat het beste model op in een variabele.

best_model = compare_models()

 

De bovenstaande code traint en test het model op verschillende algoritmen en rangschikt ze in oplopende volgorde van de fout. Het toont ook de trainingstijd in seconden, die wordt aangegeven met 'TT (Sec)' in de laatste kolom.

De trainingstijd is met name gebaseerd op het gebruik van alle CPU-kernen in dit specifieke voorbeeld en kan per machine verschillen.

 

Aan de slag met PyCaret
 

De methode "get_params()" wordt gebruikt om de hyperparameters van het beste model op te halen, in ons voorbeeld de Extra Tree Regressor.

best_model.get_params()
{'bootstrap': False 'ccp_alpha': 0.0, 'criterion': 'mse', 'max_depth': None, 'Max_features': 'auto', 'max_leaf_nodes': None, 'max_samples': None, 'min_impurity_decrease': 0.0, 'min_impurity_split': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'n_estimators': 100, 'n_jobs': -1, 'oob_score': False, 'random _state': 8773, 'verbose': 0, 'warm_start': False}

 

Het belang van functies kan worden uitgezet met behulp van de onderstaande code.

plot_model(best_model, plot = 'feature')

 

Aan de slag met PyCaret

 

De visualisatie maakt het gemakkelijker om de top n kenmerken te identificeren, met het belangrijkste kenmerk bovenaan.

Modelvoorspellingen worden gegenereerd met behulp van de predict_model() functie.

data_cpy = data.copy()
data_cpy.drop(‘medv’, axis = 1, inplace = True)
y_pred = predict_model(best_model, data = data_cpy)

 

De functie save_model() wordt gebruikt om het getrainde model op te slaan voor eenvoudige implementatie.

save_model(best_model, 'my_best_pipeline')

In dit bericht heb je geleerd hoe PyCaret het leven van veel datawetenschappers en machine learning-ingenieurs gemakkelijker maakt door veel alledaagse taken te automatiseren. De post liet ook zien hoe de standaardstappen in een pijplijn voor machine learning kunnen worden geautomatiseerd met behulp van het PyCaret-pakket.

 
 
Vidhi Chugh is een AI-strateeg en leider op het gebied van digitale transformatie en werkt op het snijvlak van product, wetenschap en engineering om schaalbare machine learning-systemen te bouwen. Ze is een bekroonde innovatieleider, een auteur en een internationale spreker. Ze is op een missie om machine learning te democratiseren en het jargon te doorbreken zodat iedereen deel kan uitmaken van deze transformatie.
 

spot_img

Laatste intelligentie

spot_img