1、预测模型
一旦使用deploy_model将模型成功部署到云中,或者使用save_model在本地成功部署了模型,就可以使用predict_model函数将其用于看不见的数据进行预测。 此功能采用训练有素的模型对象和数据集进行预测。 它将自动应用实验过程中创建的整个转换管道。 对于分类,将基于50%的概率创建预测标签,但是如果您选择使用通过optimize_threshold获得的不同阈值,则可以在predict_model中传递概率_threshold参数。 此功能还可用于生成保留/测试集的预测。
(1)Predictions on hold-out / test set
from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create a model xgboost = create_model('xgboost') # predict on hold-out pred_holdout = predict_model(xgboost)
(2) Predictions on unseen data
# Importing dataset from pycaret.datasets import get_data boston = get_data('boston') # Importing module and initializing setup from pycaret.regression import * reg1 = setup(data = boston, target = 'medv') # create a model lr = create_model('lr') # finalize a model lr_final = finalize_model(lr) # importing unseen data import pandas as pd data_unseen = pd.read_csv('data_unseen.csv') # generate predictions on unseen data predictions = predict_model(lr_final, data = data_unseen)
(3)Predictions on unseen data directly from cloud
# Importing dataset from pycaret.datasets import get_data boston = get_data('boston') # Importing module and initializing setup from pycaret.regression import * reg1 = setup(data = boston, target = 'medv') # create a model lr = create_model('lr') # finalize a model lr_final = finalize_model(lr) # deploy a model deploy_model(lr_final, model_name = 'lr_aws', platform = 'aws', authentication = {'bucket' : 'pycaret-test'}) # importing unseen data import pandas as pd data_unseen = pd.read_csv('data_unseen.csv') # generate predictions directly from AWS predictions = predict_model('lr_aws', data = data_unseen, platform = 'aws', authentication = {'bucket' : 'pycaret-test'})
2、完成模型
最终确定模型是典型的受监督实验工作流程中的最后一步。当使用设置在PyCaret中开始实验时,将创建模型训练中未使用的保留集。默认情况下,如果在设置中未定义train_size参数,则保留集包含30%的数据集样本。 PyCaret中的所有功能都使用剩余的70%作为训练集来创建,调整或集成模型。因此,保持集是最终保证,可用于诊断过拟合/欠拟合。但是,一旦使用predict_model在保留集上生成了预测,并且选择了部署特定模型,就希望在包括保留在内的整个数据集上对模型进行最后一次训练。在整个数据集上完成模型的编写就像编写finalize_model一样容易。此函数接受训练的模型对象,并返回已在整个数据集中训练的模型。
该函数仅在pycaret.classification和pycaret.regression模块中可用。
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create a model rf = create_model('rf') # finalize a model final_rf = finalize_model(rf)
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None, criterion='gini', max_depth=None, max_features='auto', max_leaf_nodes=None, max_samples=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=None, oob_score=False, random_state=123, verbose=0, warm_start=False)
3、部署模型
使用finalize_model确定模型后,即可进行部署。 可以使用save_model功能在本地使用经过训练的模型,该功能将转换管道和经过训练的模型保存为最终用户应用程序可以作为二进制pickle文件使用。 或者,可以使用PyCaret将模型部署在云上。 在云上部署模型就像编写deploy_model一样简单。
对于AWS用户
在将模型部署到AWS S3(“ aws”)之前,必须使用命令行界面配置环境变量。 要配置AWS环境变量,请在python命令行中输入aws configure。 需要以下信息,可以使用您的亚马逊控制台帐户的身份和访问管理(IAM)门户生成以下信息:
AWS访问密钥ID
AWS密钥访问
默认区域名称(可以在您的AWS控制台的“全局设置”下看到)
默认输出格式(必须留空)
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create a model lr = create_model('lr') # finalize a model final_lr = finalize_model(lr) # Deploy a model deploy_model(final_lr, model_name = 'lr_aws', platform = 'aws', authentication = { 'bucket' : 'pycaret-test' })
# Importing unseen dataset import pandas as pd data_unseen = pd.read_csv('data_unseen.csv') # Generate predictions using deployed model from pycaret.classification import * predictions = predict_model(model_name = 'lr_aws', data = data_unseen, platform = 'aws', authentication = { 'bucket' : 'pycaret-test' })
4、保存模型
在PyCaret中保存训练好的模型就像编写save_model一样简单。 该函数采用经过训练的模型对象,并将整个转换管道和经过训练的模型对象保存为可传输的二进制pickle文件,以备后用。
# Importing dataset from pycaret.datasets import get_data diabetes = get_data('diabetes') # Importing module and initializing setup from pycaret.classification import * clf1 = setup(data = diabetes, target = 'Class variable') # create a model dt = create_model('dt') # save a model save_model(dt, 'dt_saved_07032020')
# Loading the saved model dt_saved = load_model('dt_saved_07032020')