Mango 使用教程

Mango 使用教程

mango Parallel Hyperparameter Tuning in Python mango 项目地址: https://gitcode.com/gh_mirrors/mango38/mango

1. 项目介绍

Mango 是一个用于寻找机器学习分类器最优超参数的 Python 库。它支持在连续、离散和分类值上并行优化复杂的搜索空间。Mango 的特点包括:

  • 易于定义与 scikit-learn 兼容的复杂搜索空间。
  • 一种新颖的无梯度优化器,适用于连续/离散/分类值。
  • 模块化设计,可以在本地、集群或云基础架构上调度目标函数。
  • 应用层故障检测,可在通用硬件上进行扩展。
  • 由于在生产环境中的测试和使用,新功能持续添加。

2. 项目快速启动

以下是如何快速启动 Mango 项目的步骤:

首先,使用 pip 安装 Mango:

pip install arm-mango

或者从源代码安装:

git clone https://github.com/ARM-software/mango.git
cd mango
pip3 install .

接下来,通过以下示例代码最小化一个二次函数,其输入是一个介于 -10 和 10 之间的整数。

from mango import scheduler, Tuner

# 搜索空间
param_space = dict(
    x=range(-10, 10)
)

# 二次目标函数
@scheduler.serial
def objective(x):
    return x * x

# 初始化并运行 Tuner
tuner = Tuner(param_space, objective)
results = tuner.minimize()
print(f'最优参数值:{results["best_params"]},目标函数值:{results["best_objective"]}')
# 输出:最优参数值:{'x': 0},目标函数值:0

3. 应用案例和最佳实践

以下是一个使用 Mango 进行超参数调优的案例:

from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import cross_val_score
from mango import Tuner, scheduler

# KNN 分类器的超参数搜索空间
param_space = dict(
    n_neighbors=range(1, 50),
    algorithm=['auto', 'ball_tree', 'kd_tree', 'brute']
)

# 目标函数
@scheduler.serial
def objective(**params):
    X, y = datasets.load_breast_cancer(return_X_y=True)
    clf = KNeighborsClassifier(**params)
    score = cross_val_score(clf, X, y, scoring='accuracy').mean()
    return score

# 调用 Tuner 进行最大化
tuner = Tuner(param_space, objective)
results = tuner.maximize()
print('最佳参数:', results['best_params'])
print('最佳准确率:', results['best_objective'])
# 输出:最佳参数:{'algorithm': 'ball_tree', 'n_neighbors': 11}
# 输出:最佳准确率:0.9332401800962584

请注意,最佳参数可能会不同,但准确率应该接近 0.93。更多示例可在项目的 examples 目录中找到。

4. 典型生态项目

Mango 可以与多种机器学习框架和库一起使用,例如 scikit-learn、XGBoost 和 SVM。以下是一些典型的生态项目配置示例:

  • 随机森林分类器
param_space = dict(
    max_features=['sqrt', 'log2', 0.1, 0.3, 0.5, 0.7, 0.9],
    n_estimators=range(10, 1000, 50),
    bootstrap=[True, False],
    max_depth=range(1, 20),
    min_samples_leaf=range(1, 10)
)
  • XGBoost 分类器
from scipy.stats import uniform
from mango.domain.distribution import loguniform

param_space = {
    'n_estimators': range(10, 2001, 100),
    'max_depth': range(1, 15),
    'reg_alpha': loguniform(-3, 6),
    'booster': ['gbtree', 'gblinear'],
    'colsample_bylevel': uniform(0.05, 0.95),
    'colsample_bytree': uniform(0.05, 0.95),
    'learning_rate': loguniform(-3, 3),
    'reg_lambda': loguniform(-3, 6),
    'min_child_weight': loguniform(0, 2),
    'subsample': uniform(0.1, 0.89)
}
  • SVM
param_dict = {
    'kernel': ['rbf', 'sigmoid'],
    'gamma': uniform(0.1, 4),
    'C': loguniform(-7, 8)
}

以上代码块展示了如何定义不同模型的搜索空间。在实际应用中,可以根据具体的模型和需求调整搜索空间参数。

mango Parallel Hyperparameter Tuning in Python mango 项目地址: https://gitcode.com/gh_mirrors/mango38/mango

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

余媛奕Lowell

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值