⛄ grid_search
这篇文章介绍了 CatBoost 中 grid_search 方法的使用方法,该方法用于在指定参数范围内搜索最佳模型参数。1
方法调用格式¶
grid_search(param_grid,
X,
y=None,
cv=3,
partition_random_seed=0,
calc_cv_statistics=True,
search_by_train_test_split=True,
refit=True,
shuffle=True,
stratified=None,
train_size=0.8,
verbose=True,
plot=False,
log_cout=sys.stdout,
log_cerr=sys.stderr)
参数说明¶
param_grid¶
- 描述: 包含参数名称(字符串)作为键,以及要尝试的参数设置列表作为值的字典,或者包含此类字典的列表,在这种情况下,将探索每个字典中跨越的网格。这使得能够搜索任何参数设置序列。
- 可能类型:
dict或list - 默认值: 必填参数 1
X¶
- 描述: 输入训练数据集。
- 可能类型:
catboost.Pool:输入训练数据集。注意,如果在该类的构造函数中指定了非平凡的cat_features参数值,CatBoost 会检查构造函数参数中指定的分类特征索引与该Pool类中的索引是否一致。numpy.ndarray、pandas.DataFrame:输入训练数据集,以二维特征矩阵的形式。pandas.SparseDataFrame、scipy.sparse.spmatrix(除dia_matrix以外的所有子类):输入训练数据集,以二维稀疏特征矩阵的形式。
- 默认值: 必填参数 1
y¶
- 描述: 训练数据集的目标变量(换句话说,对象的标签值)。必须以一维或二维数组的形式。数组中的数据类型取决于要解决的机器学习任务:
- 回归和排序:一维数值数组。
- 多元回归:二维数值数组。第一个索引用于维度,第二个索引用于对象。
- 二元分类:包含以下内容之一的一维数组:
- 布尔值、整数或字符串,表示类的标签(只有两个唯一值)。
- 数值。数值的解释取决于所选的损失函数:
Logloss:如果严格大于target_border训练参数的值,则该值被视为正类。否则,它被视为负类。CrossEntropy:该值被解释为数据集对象属于正类的概率。可能的值在 [0; 1] 范围内。
- 多分类:一维整数或字符串数组,表示类的标签。
- 多标签分类:二维数组。第一个索引用于标签/类,第二个索引用于对象。可能的值取决于所选的损失函数:
MultiLogloss:仅允许 {0, 1} 或 {False, True} 值,指定对象是否属于对应于第一个索引的类。MultiCrossEntropy:范围在 [0; 1] 内的数值,被解释为数据集对象属于对应于第一个索引的类的概率。
- 可能类型:
list、numpy.ndarray、pandas.DataFrame、pandas.Series - 默认值:
None - 注意: 如果输入训练数据集(在
X参数中指定)的类型为catboost.Pool,则不要使用此参数。 1
cv¶
- 描述: 交叉验证拆分策略。此参数的解释取决于输入数据类型:
None:使用默认的三折交叉验证。int:交叉验证中的折数。(Stratified)KFold对象:scikit-learn 拆分器类之一,具有split方法。- 可迭代对象,生成训练和测试拆分作为索引数组。
- 可能类型:
int、scikit-learn splitter object、cross-validation generator iterable - 默认值:
None1
partition_random_seed¶
- 描述: 将此作为数据随机排列的种子值。排列在拆分数据进行交叉验证之前执行。每个种子生成唯一的拆分。
- 可能类型:
int - 默认值:
01
calc_cv_statistics¶
- 描述: 使用交叉验证和找到的最佳参数来估计质量。模型使用这些参数进行拟合。如果
search_by_train_test_split参数设置为True,则可以启用此选项。 - 可能类型:
bool - 默认值:
True1
search_by_train_test_split¶
- 描述: 将源数据集拆分为训练和测试部分。模型在训练部分上进行训练,而参数通过测试数据集上的损失函数得分进行比较。建议对大型数据集启用此选项,而对小型数据集禁用此选项。
- 可能类型:
bool - 默认值:
True1
refit¶
- 描述: 使用找到的最佳参数在整个数据集上重新拟合估计器。
- 可能类型:
bool - 默认值:
True1
shuffle¶
- 描述: 打乱数据集对象。
- 可能类型:
bool - 默认值:
True1
stratified¶
- 描述: 是否对数据进行分层采样。
- 可能类型:
bool - 默认值:
None1
train_size¶
- 描述: 训练集的大小。
- 可能类型:
float - 默认值:
0.81
verbose¶
- 描述: 启用详细输出。
- 可能类型:
bool - 默认值:
True1
plot¶
- 描述: 是否绘制结果。
- 可能类型:
bool - 默认值:
False1
log_cout¶
- 描述: 用于输出标准 C++ 流的对象。
- 可能类型:
object - 默认值:
sys.stdout1
log_cerr¶
- 描述: 用于输出错误 C++ 流的对象。
- 可能类型:
object - 默认值:
sys.stderr1
返回值类型¶
grid_search 方法返回一个 catboost.CatBoostModel 对象,该对象已使用找到的最佳参数进行拟合。 1
示例¶
from catboost import CatBoost
import numpy as np
train_data = np.random.randint(1, 100, size=(100, 10))
train_labels = np.random.randint(2, size=100)
model = CatBoost()
grid = {'learning_rate': [0.03, 0.1],
'depth': [4, 6, 10],
'l2_leaf_reg': [1, 3, 5, 7, 9]}
grid_search_result = model.grid_search(grid,
X=train_data,
y=train_labels,
plot=True)
model.get_params()
这个示例展示了如何使用 grid_search 方法在指定参数范围内搜索最佳模型参数。 1