制作组中英文书名:Python精简标识符机器学习库PyCaret 2.0正式发布
英文书名:Announcing PyCaret 2.0
译者:学雷锋制作组(Shangru)
他们兴奋的正式宣布,PyCaret第三版那时正式发布!
PyCaret是两个开放源码的,低标识符的Python机器学习库,意在智能化机器学习组织工作流。它是端到端机器学习和数学模型管理软件。它能快速机器学习的试验周期性,提升你的组织工作效率。
和其它开放源码机器学习库较之,PyCaret是低标识符的。它能用两个单字替代上千行标识符。这大大降低了试验的速率和组织工作效率。在版表明 release notes 中查阅PyCaret 2.0的更多技术细节。
为何要用PyCaret
统计数据预备 数学模型体能训练 超模块Listary(右面)
预测和截屏 数学模型优先选择 试验笔记历史记录(右面)
PyCaret 2.0 机能
加装PyCaret 2.0
加装PyCaret比较简单,只须要几秒钟天数。他们雷西县采用虚拟环境,以防止和其它库的潜在性武装冲突。下列实例标识符建立了两个conda自然环境,并在该conda自然环境下加装pycaret
# 建立两个 conda 自然环境
conda create –name yourenvname python=3.6
# 激活自然环境
conda activate yourenvname
# 加装 pycaret
pip install pycaret==2.0 # create notebook kernel linked with the conda environment python -m ipykernel install –user –name yourenvname –display-name “display-name”
如果你采用Azure notebook或者Google Colab,运行下列标识符加装PyCaret
!pip install pycaret==2.0
所有的依赖项会在采用pip加装PyCaret时自动加装。点击Click here这里查阅完整的依赖列表。
开始PyCaret 2.0
在PyCaret中,任何机器学习试验的第一步是配置自然环境。这须要导入相关数学模型并通过传递统计数据框(dataframe)和目标变量的名字来初始化配置函数。实例标识符如下:
# 导入模块
from pycaret.classification import *
# 初始化配置 (在Notebook自然环境内)
clf1 = setup(data, target = target-variable)
# 初始化配置 (在 Notebook 自然环境外)
clf1 = setup(data, target = target-variable, html = False)
# 初始化配置 (在 Kaggle / GitHub actions / CI-CD 管道等远程执行)
clf1 = setup(data, target = target-variable, html = False, silent = True)
输出实例:
输出片段
所有的预处理变换在配置函数中被调用。PyCaret提供了超过20种不同的,可在配置函数内调用的预处理变换。点击这里 Click here 了解PyCaret更多的预处理能力。
样本和划分:体能训练/测试划分;采样
统计数据预备:缺失统计数据补全;独热编码;内在顺序编码;Cardinal编码;不平衡修正
缩放和转换:归一化;转换
特征工程:特征交互;多项式特征;组特征;二元数值特征
特征优先选择:特征重要性;共线性移除;PCA;忽略低方差
无监督:建立聚类;异常移除
Preprocessing
数学模型比较
这是所有监督学习数学模型任务中,他们推荐的第一步。该函数会采用数学模型的默认超模块来体能训练所有数学模型,并通过交叉检验来评估性能。它返回两个已体能训练的数学模型的对象类。可采用的评估测度包括:
分类:准确度,AUC,召回率,精确率,F1,Kappa,MCC
回归: MAE, MSE, RMSE, R2, RMSLE, MAPE
这里有几种采用 compare_models 函数的方法:
# 导入 classification 模块
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target)
# 返回最优数学模型
best = compare_models()
# 返回基于召回率的最有数学模型
best = compare_models(sort = Recall) #默认为准确率 Accuracy
# 比较特定数学模型
best_specific = compare_models(whitelist = [dt,rf,xgboost])
# 排除特定数学模型
best_specific = compare_models(blacklist = [catboost,svm])
# 返回3个基于准确率的最有数学模型
top3 = compare_models(n_select = 3)
输出实例:
数学模型建立
数学模型建立函数采用默认超模块体能训练数学模型并采用交叉验证评估数学模型性能。该函数是几乎所有其它PyCaret函数的底。它返回体能训练数学模型对象类。下列是几种数学模型采用方法:
# 导入 classification 模块
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target)
# 体能训练 logistic 回归数学模型
lr = create_model(lr) #lr is the id of the model
# 通过数学模型库来查阅所有数学模型
models()
# 采用5折交叉验证体能训练随机森林数学模型
rf = create_model(rf, fold = 5)
# 不适用交叉验证体能训练SVM数学模型
svm = create_model(svm, cross_validation = False)
# 体能训练xgboost数学模型,其中 max_depth = 10
xgboost = create_model(xgboost, max_depth = 10)
# 在gpu上体能训练xgboost数学模型
xgboost_gpu = create_model(xgboost, tree_method = gpu_hist, gpu_id = 0) #0 is gpu-id
# 在多个learning_rate下 体能训练多个lightgbm 数学模型
lgbms = [create_model(lightgbm, learning_rate = i) for i in np.arange(0.1,1,0.1)]
# 体能训练自定义数学模型
from gplearn.genetic import SymbolicClassifier
symclf = SymbolicClassifier(generation = 50)
sc = create_model(symclf)
输出实例:
create_model函数的输出实例
要了解更多关于数学模型建立函数,点击这里 click here.
数学模型Listary
数学模型Listary函数以估计器的形式Listary数学模型超模块。它在预设定的Listary网格( 可完全定制化 )上进行随机网格搜索。下列是几种函数采用方法:
# 导入classification 模块
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target)
# 体能训练两个决策树数学模型
dt = create_model(dt)
# Listary决策树的两个超模块
tuned_dt = tune_model(dt)
# 增加n_iter来调参
tuned_dt = tune_model(dt, n_iter = 50)
# 基于最优化AUC调参
tuned_dt = tune_model(dt, optimize = AUC) #default is Accuracy
# 在 custom_grid 上调参
params = {“max_depth”: np.random.randint(1, (len(data.columns)*.85),20),
“max_features”: np.random.randint(1, len(data.columns),20),
“min_samples_leaf”: [2,3,4,5,6],
“criterion”: [“gini”, “entropy”]
}
tuned_dt_custom = tune_model(dt, custom_grid = params)
# 动态Listary多个数学模型
top3 = compare_models(n_select = 3)
tuned_top3 = [tune_model(i) for i in top3]
要了解更多数学模型Listary函数,点击这里 click here.
数学模型集成
有几种函数可用于集成底学习器。 ensemble_model, blend_models 和stack_models是其中三种。 下列是几种函数采用方法:
# 导入classification 数学模型
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target)
# 体能训练两个决策树数学模型
dt = create_model(dt)
# 基于dt体能训练两个 bagging 分类器
bagged_dt = ensemble_model(dt, method = Bagging)
# 基于dt体能训练两个带有100个估计器的adaboost 分类器
boosted_dt = ensemble_model(dt, method = Boosting, n_estimators = 100)
# 体能训练两个包括库中所有数学模型的投票分类器
blender = blend_models()
# 体能训练两个基于特定数学模型的投票分类器
dt = create_model(dt)
rf = create_model(rf)
adaboost = create_model(ada)
blender_specific = blend_models(estimator_list = [dt,rf,adaboost], method = soft)
# 动态体能训练两个投票分类器
blender_top5 = blend_models(compare_models(n_select = 5))
# 体能训练两个堆叠分类器
stacker = stack_models(estimator_list = [dt,rf], meta_model = adaboost)
# 动态堆叠多个数学模型
top7 = compare_models(n_select = 7)
stacker = stack_models(estimator_list = top7[1:], meta_model = top7[0])
要了解更多数学模型集成函数,点击这里 click here.
数学模型预测
和名字一样,该函数用于推理/预测。下列是采用方法:
# 体能训练两个 catboost 数学模型
catboost = create_model(catboost)
# 基于留一(holdout)集预测 (当统计数据以及传入)
pred_holdout = predict_model(catboost)
# 在新统计数据集上预测
new_data = pd.read_csv(new-data.csv)
pred_new = predict_model(catboost, data = new_data
数学模型作图
数学模型作图函数可用于评估体能训练已完成的机器学习数学模型的性能评估。实例如下:
# 导入classification 模块
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target)
# 体能训练两个adaboost 数学模型
adaboost = create_model(ada)
# AUC 作图
plot_model(adaboost, plot = auc)
# 决策边界
plot_model(adaboost, plot = boundary)
# PR曲线
plot_model(adaboost, plot = pr)
# 验证曲线
plot_model(adaboost, plot = vc)
plot_model函数的输出实例
Click here 点击这里了解PyCaret中不同的可视化方法
另外,你能在notebook的用户交互界面中采用 evaluate_model 函数来查阅图
PyCaret中的 evaluate_model函数
Util函数
PyCaret 2.0包括了几种新的util函数。当你在PyCaret中管理机器学习试验时能方便的采用。其中一些如下所示:
# 在当前运行中优先选择并完成最优数学模型
best_model = automl() #返回基于交叉验证分数的最优数学模型
# 优先选择并完成基于hold_out集上的 F1 分数的最优数学模型
best_model_holdout = automl(optimize = F1, use_holdout = True)
# 保存数学模型
save_model(model, c:/path-to-directory/model-name)
# 加载数学模型
model = load_model(c:/path-to-directory/model-name)
# 以pandas df格式返回分数
dt = create_model(dt)
dt_results = pull() #这会以pandas df格式保存 dt 分数网格
# 读取全局变量
X_train = get_config(X_train) #返回预处理后的 X_train 统计数据集
seed = get_config(seed) # 从全局变量中返回 seed
# 设置全局变量
set_seed(seed, 999) #在当前运行中将全局变量seed 设为 999
# 以csv文件形式得到试验笔记
logs = get_logs() # 默认为当前运行
# 得到数学模型笔记
system_logs = get_system_logs() #从当前文件夹读取logs.log 文件
在正式发布表明 release notes. 中查阅PyCaret 2.0中所有的新函数,
Experiment笔记
PyCaret 2.0以后端API的形式嵌入了机器学习组织工作流的追踪组件,并提供UI在你运行机器学习标识符时历史记录模块,标识符版,度量以及输出文件,以供之后的结果可视化。你能如下历史记录你PyCaret中的试验:
# 导入classification 模块
from pycaret.classification import *
# 初始化配置
clf1 = setup(data, target = name-of-target, log_experiment = True, experiment_name = exp-name-here)
# 比较数学模型
best = compare_models()
# 在localhost:5000运行mlflow 服务器(采用notebook时)
!mlflow ui
输出(在 localhost:5000 )
整合——建立你自己的AutoML软件
通过采用这些函数,让他们建立两个简单的命令行软件来采用默认模块来体能训练多个数学模型,对最好的两个候选数学模型进行超模块Listary,尝试不同的集成技术并返回/保存最优数学模型。下列是命令行脚本:
# 导入库
import pandas as pd
import sys
# 定义命令行模块
data = sys.argv[1]
target = sys.argv[2]
# 加载统计数据 (在采用自己的脚本时替换掉这部分)
from pycaret.datasets import get_data
input_data = get_data(data)
# 初始化配置
from pycaret.classification import *
clf1 = setup(data = input_data, target = target, log_experiment = True)
# 比较基准数学模型并选取前5个
top5 = compare_models(n_select = 5)
# 对前5个数学模型模块Listary
tuned_top5 = [tune_model(i) for i in top5]
# 集成前5个Listary后的数学模型
bagged_tuned_top5 = [ensemble_model(i, method = Bagging) for i in tuned_top5]
# 混合前5个数学模型
blender = blend_models(estimator_list = top5)
# 堆叠前5个数学模型
stacker = stack_models(estimator_list = top5[1:], meta_model = top5[0])
# 基于召回率优先选择最优数学模型
best_model = automl(optimize = Recall)
# 保存数学模型
save_model(best_model, c:/path-to-directory/final-model)
该脚本动态优先选择并保存最佳数学模型。只须要短短几行标识符,你就开发好了自己的AutoML软件,还带有完整的笔记系统和漂亮榜单的UI界面。
通过这个轻量级组织工作流智能化Python库,你能完成无限可能。
学雷锋制作组是两个由 AI 爱好者组成的译者团队,汇聚五百多位志愿者的力量,分享最新的海外AI资讯,交流关于人工智能技术领域的行业变革与技术创新的见解。
团队成员有大统计数据专家、算法工程师、图像处理工程师、产品经理、产品运营、IT咨询人、在校师生;志愿者们来自IBM、AVL、Adobe、阿里、百度等知名企业,北大、清华、港大、中科院、南卡罗莱纳大学、早稻田大学等海内外高校研究所。