其他设置参数

所有其他设置相关参数

必需参数

setup 函数中只有两个必需参数。

参数

  • data: 类 dataframe = None

    数据集,形状为 (n_samples, n_features),其中 n_samples 是样本数,n_features 是特征数。如果 data 不是 pandas dataframe,它将被转换为 dataframe 并使用默认列名。

  • data_func: Callable[[], DATAFRAME_LIKE] = None

    用于生成 data(类 dataframe 输入)的函数。当数据集很大且需要并行操作(例如 compare_models)时,此函数非常有用。它可以避免将大型数据集从驱动程序广播到 worker。注意,datadata_func 中必须且只能设置一个。

  • target: float, int, str 或 sequence, 默认 = -1

    如果是 int 或 str,则分别表示 data 中目标列的索引或名称。默认值选择数据集中的最后一列。如果是 sequence,其形状应为 (n_samples,)。

  • index: bool, int, str 或 sequence, 默认 = False

    处理 data dataframe 中的索引。

    • 如果为 False:重置为 RangeIndex。

    • 如果为 True:保留提供的索引。

    • 如果为 int:要用作索引的列的位置。

    • 如果为 str:要用作索引的列的名称。

    • 如果为 sequence:形状为 (n_samples,) 的数组,用作索引。

实验日志记录

PyCaret 可以自动记录整个实验,包括设置参数、模型超参数、性能指标和管道工件。默认设置使用 MLflow 作为日志记录后端。wandbcometmldagshub 也可用作后端。可以在 setup 中启用一个参数来自动跟踪所有指标、超参数和模型工件。

参数

  • log_experiment: bool or str or BaseLogger or list of str or BaseLogger, default = False PyCaret BaseLogger(或其列表)或 str(mlflowwandbcomet_mldagshub 之一),对应一个日志记录器,用于确定要使用的实验日志记录器。设置为 True 将仅使用 MLFlow

  • experiment_name: str, 默认 = None

    用于日志记录的实验名称。当 log_experiment = False 时忽略。

  • experiment_custom_tags: dict, 默认 = None 传递给 mlflow.set_tags 的 tag_name: String -> value: (String,如果不是则会转换为字符串) 字典,用于为实验添加新的自定义标签。

  • log_plots: bool 或 list, 默认 = False

    设置为 True 时,某些图将自动记录在 MLFlow 服务器中。要更改要记录的图类型,请传递包含图 ID 的列表。请参阅 plot_model 的文档。当 log_experiment = False 时忽略。

  • log_profile: bool, 默认 = False

    设置为 True 时,数据概况将作为 HTML 文件记录在 MLflow 服务器上。

    log_experiment = False 时忽略。

  • log_data: bool, 默认 = False 设置为 True 时,训练集和测试集将记录为 CSV 文件。

示例

# load dataset
from pycaret.datasets import get_data
data = get_data('diabetes')

# init setup
from pycaret.classification import *
clf1 = setup(data, target = 'Class variable', log_experiment = True, experiment_name = 'diabetes1')

# model training
best_model = compare_models() 

要初始化 MLflow 服务器,您必须在 notebook 内或从命令行运行以下命令。服务器初始化后,您可以在 https://localhost:5000 上跟踪您的实验。

# init server
!mlflow ui

配置 MLflow 跟踪服务器

当没有配置后端时,数据会存储在提供的本地文件(如果为空则为 ./mlruns)。要配置后端,请在执行 setup 函数之前使用 mlflow.set_tracking_uri

  • 一个空字符串,或以 file:/ 开头的本地文件路径。数据存储在提供的本地文件(如果为空则为 ./mlruns)。

  • 一个 HTTP URI,例如 https://my-tracking-server:5000。

  • 一个 Databricks 工作区,作为字符串“databricks”提供,或者,要使用 Databricks CLI 配置文件,提供“databricks://<profileName>”。

# set tracking uri 
import mlflow 
mlflow.set_tracking_uri('file:/c:/users/mlflow-server')

# load dataset
from pycaret.datasets import get_data
data = get_data('diabetes')

# init setup
from pycaret.classification import *
clf1 = setup(data, target = 'Class variable', log_experiment = True, experiment_name = 'diabetes1')

Databricks 上的 PyCaret

在 Databricks 上使用 PyCaret 时,setup 中的 experiment_name 参数必须包含完整的存储路径。请参阅下面的示例,了解如何在 Databricks 上使用时记录实验。

# load dataset
from pycaret.datasets import get_data
data = get_data('diabetes')

# init setup
from pycaret.classification import *
clf1 = setup(data, target = 'Class variable', log_experiment = True, experiment_name = '/Users/username@domain.com/experiment-name-here')

模型选择

setup 中的以下参数可用于设置模型选择过程的参数。这些参数与数据预处理无关,但会影响您的模型选择过程。

参数

  • train_size: float, 默认 = 0.7 用于训练和验证的数据集比例。

  • test_data: 类 dataframe 或 None, 默认 = None

    如果不为 None,则 test_data 用作保留集,并忽略 train_size 参数。 datatest_data 中的列必须匹配。

  • data_split_shuffle: bool, 默认 = True 设置为 False 时,防止在 train_test_split 期间对行进行洗牌。

  • data_split_stratify: bool or list, 默认 = True 控制 train_test_split 期间的分层。设置为 True 时,将按目标列进行分层。要在其他任何列上分层,请传递列名列表。当 data_split_shuffleFalse 时忽略。

  • fold_strategy: str or scikit-learn CV 生成器对象, 默认 = ‘stratifiedkfold’ 交叉验证策略的选择。可能的值有

    • ‘kfold’

    • ‘stratifiedkfold’

    • ‘groupkfold’

    • ‘timeseries’

    • 与 scikit-learn 兼容的自定义 CV 生成器对象。

    • 对于 groupkfold,列名必须在 fold_groups 参数中传递。示例:setup(fold_strategy="groupkfold", fold_groups="COLUMN_NAME")

  • fold: int, 默认 = 10 交叉验证中使用的折叠数。必须至少为 2。这是一个全局设置,可以通过使用 fold 参数在函数级别覆盖。当 fold_strategy 是自定义对象时忽略。

  • fold_shuffle: bool, 默认 = False 控制 CV 的 shuffle 参数。仅当 fold_strategykfoldstratifiedkfold 时适用。当 fold_strategy 是自定义对象时忽略。

  • fold_groups: str 或 数组状对象 (array-like), 形状为 (n_samples,), 默认 = None

    当交叉验证使用 ‘GroupKFold’ 时可选的分组标签。它接受形状为 (n_samples, ) 的数组,其中 n_samples 是训练数据集中的行数。传递字符串时,它被解释为数据集中包含分组标签的列名。

其他参数

setup 中的以下参数可用于控制其他实验设置,例如使用 GPU 进行训练或设置实验的详细程度。它们不会以任何方式影响数据。

参数

  • n_jobs: int, 默认 = -1 并行运行的作业数(对于支持并行处理的函数)-1 表示使用所有处理器。要在单个处理器上运行所有函数,请设置 n_jobs = None

  • use_gpu: bool 或 str, 默认 = False 设置为 True 时,将使用支持 GPU 的算法进行训练,如果不可用则回退到 CPU。设置为 force 时,将仅使用启用 GPU 的算法,并在不可用时引发异常。当 False 时,所有算法仅使用 CPU 训练。启用 GPU 的算法

    • Extreme Gradient Boosting,无需额外安装

    • CatBoost Classifier,无需额外安装(仅当数据 > 50,000 行时启用 GPU 训练)

    • Light Gradient Boosting Machine,需要安装 GPU 教程

    • Logistic Regression, Ridge Classifier, Random Forest, K Neighbors Classifier, Support Vector Machine,需要 cuML >= 0.15 cuML

  • session_id: int, 默认 = None 控制实验的随机性。它等同于 scikit-learn 中的 random_state。当为 None 时,会生成一个伪随机数。这可用于以后重现整个实验。

  • verbose: bool, 默认 = True 设置为 False 时,不打印信息网格。

  • profile: bool, 默认 = False 设置为 True 时,将显示交互式 EDA 报告。

  • profile_kwargs: dict, 默认 = {} (空字典) 传递给用于创建 EDA 报告的 ProfileReport 方法的参数字典。如果 profile 为 False 则忽略。

  • custom_pipeline: (str, transformer) 的 list, dict 或 Pipeline, 默认 = None

    其他自定义转换器。如果传入,它们将在所有内置转换器之后,最后应用于管道。

  • custom_pipeline_position: int, 默认 = -1 自定义管道在整个预处理管道中的位置。默认值将自定义管道添加到最后。

  • preprocess: bool, 默认 = True 设置为 False 时,除了 train_test_split 和在 custom_pipeline 参数中传递的自定义转换之外,不应用任何转换。当 preprocess 设置为 False 时,数据必须已准备好进行建模(无缺失值、无日期、类别数据已编码)。

  • system_log: bool 或 str 或 logging.Logger, 默认 = True

    是否保存系统日志文件(命名为 logs.log)。如果输入是字符串,则将其用作日志文件的路径。如果输入已经是 logger 对象,则直接使用该对象。

  • memory: str, bool 或 Memory, 默认=True

    用于缓存管道中已拟合的转换器。

    • 如果为 False:不执行缓存。

    • 如果为 True:使用默认临时目录。

    • 如果为 str:缓存目录的路径。

最近更新

这有帮助吗?