超参数优化框架

optuna的Python项目详细描述


optuna:一个超参数优化框架

pypiGitHub licenseCircleCIRead the DocsCodecov

Website |Docs |Install Guide |Tutorial

optuna是一个自动超参数优化软件框架,特别是 用于机器学习。它具有一个命令式的define by run样式的用户api。感谢我们 define by runapi,使用optuna编写的代码具有很高的模块性,并且 optuna可以动态地构造超参数的搜索空间。

主要功能

Optuna具有以下现代功能:

  • 并行分布式优化
  • 删减没有希望的试验
  • 轻量级、多用途和平台无关的体系结构

基本概念

我们使用术语studytrial如下:

  • 研究:基于目标函数的优化
  • 试验:单次执行目标函数

请参考下面的示例代码。一项研究的目标是找出 通过多次试验得出的超参数值(例如classifiersvm_c)(例如, n_trials=100)。Optuna是为自动化和加速 优化研究

import...# Define an objective function to be minimized.defobjective(trial):# Invoke suggest methods of a Trial object to generate hyperparameters.regressor_name=trial.suggest_categorical('classifier',['SVR','RandomForest'])ifregressor_name=='SVR':svr_c=trial.suggest_loguniform('svr_c',1e-10,1e10)regressor_obj=sklearn.svm.SVR(C=svr_c)else:rf_max_depth=trial.suggest_int('rf_max_depth',2,32)regressor_obj=sklearn.ensemble.RandomForestRegressor(max_depth=rf_max_depth)X,y=sklearn.datasets.load_boston(return_X_y=True)X_train,X_val,y_train,y_val=sklearn.model_selection.train_test_split(X,y,random_state=0)regressor_obj.fit(X_train,y_train)y_pred=regressor_obj.predict(X_val)error=sklearn.metrics.mean_squared_error(y_val,y_pred)returnerror# A objective value linked with the Trial object.study=optuna.create_study()# Create a new study.study.optimize(objective,n_trials=100)# Invoke optimization of the objective function.

安装

要安装Optuna,请按如下方式使用pip

$ pip install optuna

Optuna支持Python2.7和Python3.5或更新版本。

贡献

欢迎对Optuna的任何贡献!当您发送拉取请求时,请按照 contribution guide

许可证

麻省理工学院许可证(见LICENSE)。

参考

Takuya Akiba、Shotaro Sano、Toshihiko Yanase、Takeru Ohta和Masanori Koyama。2019年。 optuna:下一代超参数优化框架。在kdd中(出现)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
写入远程文件java   在java中尝试播放音频时出现音频流错误。wav文件   用户界面如何在Java中禁用GUI按钮   在java中如何使用条件拆分字符串   java从一个方法在数组中设置,从另一个方法获取   java如何忽略“”而不是“”   java证书。木卫一。IOException:密钥库被篡改,或密码不正确   java Android onCreate不调用   在play framework(i18n)中未正确显示德语Umlautes的java显示   使用java从eclipse运行MacOSX命令的macos   java是检查数组中备用项的最有效方法   如何使用java流编写包含循环、if/else和返回语句的代码   为什么在Java中,循环内的声明似乎比循环外的声明更快?   java软件包不存在mvn clean install