CatBoost¶
O Snowflake ML Model Registry oferece suporte a modelos criados com CatBoost (modelos derivados de catboost.CatBoost,como catboost.CatBoostClassifier, catboost.CatBoostRegressor e catboost.CatBoostRanker).
As seguintes opções adicionais podem ser usadas no dicionário options quando você chamar log_model:
Opção |
Descrição |
|---|---|
|
Uma lista dos nomes dos métodos disponíveis no objeto de modelo. Os modelos CatBoost têm os seguintes métodos de destino por padrão, assumindo que o método existe: |
|
Indica se a explicabilidade deve ser ativada para o modelo que usa SHAP. O padrão é |
|
A versão do tempo de execução CUDA a ser usada ao implantar em uma plataforma com GPU; o padrão é 11.8. Se definido manualmente como |
Você deve especificar o parâmetro sample_input_data ou signatures ao registrar um modelo CatBoost para que o registro conheça as assinaturas dos métodos de destino.
Exemplos¶
Estes exemplos pressupõem que reg seja uma instância de snowflake.ml.registry.Registry.
CatBoostClassifier¶
O exemplo a seguir demonstra as etapas principais para treinar um classificador CatBoost, registrá-lo no Snowflake ML Model Registry e usar o modelo registrado para inferência e explicabilidade. O fluxo de trabalho inclui:
Treinar um classificador CatBoost em um conjunto de dados de amostra.
Registrar o modelo no Snowflake ML Model Registry.
Fazer previsões e recuperar as probabilidades de previsão.
Obter valores SHAP para as previsões do modelo.
import catboost
from sklearn import datasets, model_selection
# Load dataset
cal_data = datasets.load_breast_cancer(as_frame=True)
cal_X = cal_data.data
cal_y = cal_data.target
# Normalize column names (replace spaces with underscores)
cal_X.columns = [col.replace(' ', '_') for col in cal_X.columns]
cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
cal_X, cal_y, test_size=0.2
)
# Train CatBoost Classifier
classifier = catboost.CatBoostClassifier(
iterations=100,
learning_rate=0.1,
depth=6,
verbose=False
)
classifier.fit(cal_X_train, cal_y_train)
# Log the model
model_ref = reg.log_model(
model=classifier,
model_name="my_catboost_classifier",
version_name="v1",
sample_input_data=cal_X_test,
)
# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")
# Get prediction probabilities
proba_df = model_ref.run(cal_X_test[-10:], function_name="predict_proba")
# Get explanations (SHAP values)
explanations_df = model_ref.run(cal_X_test[-10:], function_name="explain")
CatBoostRegressor¶
O exemplo a seguir demonstra as etapas principais para treinar um regressor CatBoost, registrá-lo no Snowflake ML Model Registry e usar o regressor registrado para inferência. O fluxo de trabalho inclui:
Treina um regressor CatBoost com base em um conjunto de dados de amostra.
Registrar o modelo no Snowflake ML Model Registry.
Faz previsões.
import catboost
from sklearn import datasets, model_selection
# Load dataset
cal_data = datasets.load_diabetes(as_frame=True)
cal_X = cal_data.data
cal_y = cal_data.target
cal_X_train, cal_X_test, cal_y_train, cal_y_test = model_selection.train_test_split(
cal_X, cal_y, test_size=0.2
)
# Train CatBoost Regressor
regressor = catboost.CatBoostRegressor(
iterations=100,
learning_rate=0.1,
depth=6,
verbose=False
)
regressor.fit(cal_X_train, cal_y_train)
# Log the model
model_ref = reg.log_model(
model=regressor,
model_name="my_catboost_regressor",
version_name="v1",
sample_input_data=cal_X_test,
)
# Make predictions
result_df = model_ref.run(cal_X_test[-10:], function_name="predict")
Desabilitando a explicabilidade¶
Se você não precisa de recursos de explicabilidade, é possível desabilitá-los durante o registro para reduzir o tamanho do modelo e as dependências:
model_ref = reg.log_model(
model=classifier,
model_name="my_catboost_classifier_no_explain",
version_name="v1",
sample_input_data=cal_X_test,
options={"enable_explainability": False},
)