PyCaret解决二分类任务教程示例

news2024/11/26 19:25:03

PyCaret是一个Python中的开源、低代码机器学习库,可以自动化机器学习工作流。它是一个端到端的机器学习和模型管理工具,可以成倍地加快实验周期,提高工作效率。
与其他开源机器学习库相比,PyCaret是一个替代的低代码库,可以用几行代码替换数百行代码。这使得实验以指数方式快速和高效。PyCaret本质上是几个机器学习库和框架的Python包装器,例如scikit-learn,XGBoost,LightGBM,CatBoost,spaCy,Optuna,Hyperopt,Ray等等。
PyCaret的设计和简单性受到了公民数据科学家的新兴角色的启发,这是Gartner首次使用的术语。公民数据科学家是高级用户,他们可以执行简单和中等复杂的分析任务,这些任务以前需要更多的技术专业知识。

💻 安装

PyCaret在以下64位系统上测试和支持:

  • Python 3.7 – 3.10
  • Python 3.9 for Ubuntu only
  • Ubuntu 16.04 or later
  • Windows 7 or later

你可以使用Python的pip包管理器安装PyCaret:

pip install pycaret

PyCaret的默认安装不会自动安装所有额外的依赖项。您必须安装完整版本:

pip install pycaret[full]

或者根据您的使用情况,您可以安装以下变体之一:

  • pip install pycaret[analysis]
  • pip install pycaret[models]
  • pip install pycaret[tuner]
  • pip install pycaret[mlops]
  • pip install pycaret[parallel]
  • pip install pycaret[test]
# check installed version
import pycaret
pycaret.__version__

'''
'3.0.0'
'''

🚀 快速开始

PyCaret的分类模块是一个监督机器学习模块,用于将元素分类到组中。目标是预测离散和无序的类别标签。
一些常见的用例包括预测客户违约(是或否)、预测客户流失(客户将离开或留下)、发现疾病(阳性或阴性)。
该模块可用于二进制或多类问题。它提供了几个预处理功能,通过设置功能为建模准备数据。它有超过18个现成的算法和几个图来分析训练模型的性能。
PyCaret中的一个典型工作流程包括以下5个步骤:
在这里插入图片描述

# loading sample dataset from pycaret dataset module
from pycaret.datasets import get_data
data = get_data('diabetes')

在这里插入图片描述

Setup

此函数初始化训练环境并创建转换管道。在执行PyCaret中的任何其他函数之前,必须调用Setup函数。它只有两个必需的参数,即数据和目标。所有其他参数都是可选的。

# import pycaret classification and init setup
from pycaret.classification import *
s = setup(data, target = 'Class variable', session_id = 123)

在这里插入图片描述
一旦设置成功执行,它将显示包含实验级信息的信息网格。
Session id: 作为种子分布在所有函数中的伪随机数,用于以后的可重复性。如果没有传递session_id,则会自动生成一个随机数,并将其分发给所有函数。.
Target type: 二进制、多类或回归。自动检测目标类型。
Label Encoding: 当Target变量是字符串类型(即“是”或“否”)而不是1或0时,它会自动将标签编码为1和0,并显示映射(0:否,1:是)供参考。在本教程中,不需要标签编码,因为目标变量是数值类型。
Original data shape: 原始数据在任何变换之前的形状。
Transformed train set shape : 变换训练集形状
Transformed test set shape : 变换测试集形状
Numeric features : 数值特征
Categorical features : 分类特征
PyCaret有两套API可以使用。(1)函数式(如上所述)和(2)面向对象的API。
使用面向对象的API,而不是直接执行函数,您将导入一个类并执行类的方法。

# import ClassificationExperiment and init the class
from pycaret.classification import ClassificationExperiment
exp = ClassificationExperiment()
# check the type of exp
type(exp)

'''
pycaret.classification.oop.ClassificationExperiment
'''
# init setup on exp
exp.setup(data, target = 'Class variable', session_id = 123)

在这里插入图片描述
你可以使用这两种方法中的任何一种,即函数式或OOP,甚至可以在两组API之间来回切换。方法的选择不会影响结果,并已进行一致性检测。

Compare Models

此函数使用交叉验证为模型库中可用的所有估计量定型并评估其性能。该函数的输出是一个评分网格,其中包含平均交叉验证分数。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# compare baseline models
best = compare_models()

在这里插入图片描述

Analyze Model

# plot confusion matrix
plot_model(best, plot = 'confusion_matrix')

在这里插入图片描述

# plot AUC
plot_model(best, plot = 'auc')

在这里插入图片描述

# plot feature importance
plot_model(best, plot = 'feature')

在这里插入图片描述

Prediction

# predict on test set
holdout_pred = predict_model(best)

在这里插入图片描述
同样的函数也适用于预测看不见的数据集上的标签。让我们创建原始数据的副本并删除Class变量。然后,我们可以使用没有标签的新数据帧进行评分。

# copy data and drop Class variable

new_data = data.copy()
new_data.drop('Class variable', axis=1, inplace=True)
new_data.head()

在这里插入图片描述

# predict model on new_data
predictions = predict_model(best, data = new_data)
predictions.head()

在这里插入图片描述

Save Model

# save pipeline
save_model(best, 'my_first_pipeline')

在这里插入图片描述

👇 详细的功能概述

✅ Setup

# init setup function
s = setup(data, target = 'Class variable', session_id = 123)

要访问设置函数创建的所有变量,如转换的数据集,random_state等,您可以使用get_config方法。

# check all available config
get_config()

'''
{'USI',
 'X',
 'X_test',
 'X_test_transformed',
 'X_train',
 'X_train_transformed',
 'X_transformed',
 '_available_plots',
 '_ml_usecase',
 'data',
 'dataset',
 'dataset_transformed',
 'exp_id',
 'exp_name_log',
 'fix_imbalance',
 'fold_generator',
 'fold_groups_param',
 'fold_shuffle_param',
 'gpu_n_jobs_param',
 'gpu_param',
 'html_param',
 'idx',
 'is_multiclass',
 'log_plots_param',
 'logging_param',
 'memory',
 'n_jobs_param',
 'pipeline',
 'seed',
 'target_param',
 'test',
 'test_transformed',
 'train',
 'train_transformed',
 'variable_and_property_keys',
 'variables',
 'y',
 'y_test',
 'y_test_transformed',
 'y_train',
 'y_train_transformed',
 'y_transformed'}
'''
# lets access X_train_transformed
get_config('X_train_transformed')

在这里插入图片描述

# another example: let's access seed
print("The current seed is: {}".format(get_config('seed')))

# now lets change it using set_config
set_config('seed', 786)
print("The new seed is: {}".format(get_config('seed')))

'''
The current seed is: 123
The new seed is: 786
'''
# init setup with normalize = True

s = setup(data, target = 'Class variable', session_id = 123,
          normalize = True, normalize_method = 'minmax')

在这里插入图片描述

# lets check the X_train_transformed to see effect of params passed
get_config('X_train_transformed')['Number of times pregnant'].hist()

在这里插入图片描述
请注意,所有的值都在0和1之间。这是因为我们在setup函数中传递了normalize=True。如果你不记得它是如何与实际数据进行比较的,我们也可以使用get_config访问未转换的值,然后进行比较。见下文,注意x轴上的值范围,并将其与上面的直方图进行比较。

get_config('X_train')['Number of times pregnant'].hist()

在这里插入图片描述

✅ Compare Models

best = compare_models()

在这里插入图片描述
compare_models默认使用模型库中的所有估计量(Turbo=False的模型除外)。要查看所有可用的模型,可以使用函数models()

# check available models
models()

在这里插入图片描述
您可以使用compare_models中的include和exclude参数来只训练选定模型,或者通过在exclude参数中传递模型id来从训练中排除特定模型。

compare_tree_models = compare_models(include = ['dt', 'rf', 'et', 'gbc', 'xgboost', 'lightgbm', 'catboost'])

在这里插入图片描述

compare_tree_models

'''
RandomForestClassifier(bootstrap=True, ccp_alpha=0.0, class_weight=None,
                       criterion='gini', max_depth=None, max_features='sqrt',
                       max_leaf_nodes=None, max_samples=None,
                       min_impurity_decrease=0.0, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       n_estimators=100, n_jobs=-1, oob_score=False,
                       random_state=123, verbose=0, warm_start=False)
'''

上面的函数返回训练好的模型对象作为输出。评分网格仅显示而不返回。如果你需要访问计分网格,你可以使用pull函数来访问dataframe。

compare_tree_models_results = pull()
compare_tree_models_results

在这里插入图片描述
默认情况下,compare_models根据sort参数中定义的度量返回单个性能最佳的模型。让我们改变我们的代码,返回3个基于Recall的顶级模型。

best_recall_models_top3 = compare_models(sort = 'Recall', n_select = 3)

在这里插入图片描述

# list of top 3 models by Recall
best_recall_models_top3

'''
[GaussianNB(priors=None, var_smoothing=1e-09),
 GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,
                            learning_rate=0.1, loss='log_loss', max_depth=3,
                            max_features=None, max_leaf_nodes=None,
                            min_impurity_decrease=0.0, min_samples_leaf=1,
                            min_samples_split=2, min_weight_fraction_leaf=0.0,
                            n_estimators=100, n_iter_no_change=None,
                            random_state=123, subsample=1.0, tol=0.0001,
                            validation_fraction=0.1, verbose=0,
                            warm_start=False),
 LinearDiscriminantAnalysis(covariance_estimator=None, n_components=None,
                            priors=None, shrinkage=None, solver='svd',
                            store_covariance=False, tol=0.0001)]
'''

✅ Set Custom Metrics

# check available metrics used in CV
get_metrics()
# create a custom function
import numpy as np

def custom_metric(y, y_pred):
    tp = np.where((y_pred==1) & (y==1), (100), 0)
    fp = np.where((y_pred==1) & (y==0), -5, 0)
    return np.sum([tp,fp])

# add metric to PyCaret
add_metric('custom_metric', 'Custom Metric', custom_metric)

'''
Name                                                  Custom Metric
Display Name                                          Custom Metric
Score Function       <function custom_metric at 0x000002E24B0EA430>
Scorer                                   make_scorer(custom_metric)
Target                                                         pred
Args                                                             {}
Greater is Better                                              True
Multiclass                                                     True
Custom                                                         True
Name: custom_metric, dtype: object
'''
# now let's run compare_models again
compare_models()

在这里插入图片描述

✅ Create Model

该函数使用交叉验证来训练和评估给定估计器的性能。此函数的输出是一个评分网格,其中包含按倍数显示的CV评分。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。所有可用的模型都可以使用模型功能访问。

# check all the available models
models()
# train logistic regression with default fold=10
lr = create_model('lr')

在这里插入图片描述

上面的函数返回训练好的模型对象作为输出。评分网格仅显示而不返回。如果你需要访问计分网格,你可以使用pull函数来访问dataframe。

lr_results = pull()
print(type(lr_results))
lr_results

在这里插入图片描述

# train logistic regression with fold=3
lr = create_model('lr', fold=3)

在这里插入图片描述

# train logistic regression with specific model parameters
create_model('lr', C = 0.5, l1_ratio = 0.15)

在这里插入图片描述

# train lr and return train score as well alongwith CV
create_model('lr', return_train_score=True)

在这里插入图片描述

# change the probability threshold of classifier from 0.5 to 0.66
create_model('lr', probability_threshold = 0.66)

在这里插入图片描述

✅ Tune Model

该函数调整模型的超参数。该函数的输出是一个评分网格,其中包含按倍数交叉验证的分数。根据优化参数中定义的度量选择最佳模型。可以使用get_metrics函数访问交叉验证期间评估的度量。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# train a dt model with default params
dt = create_model('dt')

在这里插入图片描述

# tune hyperparameters of dt
tuned_dt = tune_model(dt)

在这里插入图片描述
要优化的指标可以在优化参数中定义(默认值= ‘Accuracy’)。此外,可以使用custom_grid参数传递自定义的调优网格。

dt

'''
DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                       max_depth=None, max_features=None, max_leaf_nodes=None,
                       min_impurity_decrease=0.0, min_samples_leaf=1,
                       min_samples_split=2, min_weight_fraction_leaf=0.0,
                       random_state=123, splitter='best')
'''
# define tuning grid
dt_grid = {'max_depth' : [None, 2, 4, 6, 8, 10, 12]}

# tune model with custom grid and metric = F1
tuned_dt = tune_model(dt, custom_grid = dt_grid, optimize = 'F1')

在这里插入图片描述

# to access the tuner object you can set return_tuner = True
tuned_dt, tuner = tune_model(dt, return_tuner=True)

在这里插入图片描述

# model object
tuned_dt

'''
DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
                       max_depth=1, max_features=1.0, max_leaf_nodes=None,
                       min_impurity_decrease=0.01, min_samples_leaf=6,
                       min_samples_split=5, min_weight_fraction_leaf=0.0,
                       random_state=123, splitter='best')
'''
# tuner object
tuner

'''
RandomizedSearchCV(cv=StratifiedKFold(n_splits=10, random_state=None, shuffle=False),
                   error_score=nan,
                   estimator=Pipeline(memory=FastMemory(location=C:\Users\owner\AppData\Local\Temp\joblib),
                                      steps=[('clean_column_names',
                                              TransformerWrapper(exclude=None,
                                                                 include=None,
                                                                 transformer=CleanColumnNames(match='[\\]\\[\\,\\{\\}\\"\\:]+'))),
                                             ('numerical_imputer',
                                              Tra...
                                        'actual_estimator__max_features': [1.0,
                                                                           'sqrt',
                                                                           'log2'],
                                        'actual_estimator__min_impurity_decrease': [0,
                                                                                    0.0001,
                                                                                    0.001,
                                                                                    0.01,
                                                                                    0.0002,
                                                                                    0.002,
                                                                                    0.02,
                                                                                    0.0005,
                                                                                    0.005,
                                                                                    0.05,
                                                                                    0.1,
                                                                                    0.2,
                                                                                    0.3,
                                                                                    0.4,
                                                                                    0.5],
                                        'actual_estimator__min_samples_leaf': [2,
                                                                               3,
                                                                               4,
                                                                               5,
                                                                               6],
                                        'actual_estimator__min_samples_split': [2,
                                                                                5,
                                                                                7,
                                                                                9,
                                                                                10]},
                   pre_dispatch='2*n_jobs', random_state=123, refit=False,
                   return_train_score=False, scoring='accuracy', verbose=1)
'''

默认的搜索算法是来自sklearn的RandomizedSearchCV。这可以通过使用search_library和search_algorithm参数来更改。

# tune dt using optuna
tuned_dt = tune_model(dt, search_library = 'optuna')

在这里插入图片描述

✅ Ensemble Model

该函数集成给定的估计量。此函数的输出是一个评分网格,其中包含按倍数显示的CV评分。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# ensemble with bagging
ensemble_model(dt, method = 'Bagging')

在这里插入图片描述

# ensemble with boosting
ensemble_model(dt, method = 'Boosting')

在这里插入图片描述

✅ Blend Models

此函数为estimator_list参数中传递的选择模型训练软投票/多数规则分类器。此函数的输出是一个评分网格,其中包含按倍数显示的CV评分。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# top 3 models based on recall
best_recall_models_top3

'''
[GaussianNB(priors=None, var_smoothing=1e-09),
 GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,
                            learning_rate=0.1, loss='log_loss', max_depth=3,
                            max_features=None, max_leaf_nodes=None,
                            min_impurity_decrease=0.0, min_samples_leaf=1,
                            min_samples_split=2, min_weight_fraction_leaf=0.0,
                            n_estimators=100, n_iter_no_change=None,
                            random_state=123, subsample=1.0, tol=0.0001,
                            validation_fraction=0.1, verbose=0,
                            warm_start=False),
 LinearDiscriminantAnalysis(covariance_estimator=None, n_components=None,
                            priors=None, shrinkage=None, solver='svd',
                            store_covariance=False, tol=0.0001)]
'''
# blend top 3 models
blend_models(best_recall_models_top3)

在这里插入图片描述

✅ Stack Models

此函数通过estimator_list参数中传递的选定估计器训练元模型。此函数的输出是一个评分网格,其中包含按倍数显示的CV评分。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# stack models
stack_models(best_recall_models_top3)

在这里插入图片描述

✅ Plot Model

该函数分析训练模型在保留集上的性能。在某些情况下,可能需要重新训练模型。

# plot class report
plot_model(best, plot = 'class_report')

在这里插入图片描述

# to control the scale of plot
plot_model(best, plot = 'class_report', scale = 2)

在这里插入图片描述

# to save the plot
plot_model(best, plot = 'class_report', save=True)

'''
'Class Report.png'
'''

✅ Interpret Model

该函数分析从训练模型生成的预测。此函数中的大多数图都是基于SHAP(Shapley加法解释)实现的。有关此方面的更多信息,请访问https://shap.readthedocs.io/en/latest/

# train lightgbm model
lightgbm = create_model('lightgbm')

在这里插入图片描述

# interpret summary model
interpret_model(lightgbm, plot = 'summary')

在这里插入图片描述

✅ Calibrate Model

该函数使用等渗或逻辑回归校准给定模型的概率。此函数的输出是一个评分网格,其中包含按倍数显示的CV评分。可以使用get_metrics函数访问CV期间评估的指标。可以使用add_metric和remove_metric函数添加或删除自定义指标。

# check calbiration of default dt
plot_model(dt, plot = 'calibration')

在这里插入图片描述

# calibrate default dt
calibrated_dt = calibrate_model(dt)

在这里插入图片描述

# check calbiration of calibrated dt
plot_model(calibrated_dt, plot = 'calibration')

在这里插入图片描述

✅ Get Leaderboard

此函数返回在当前设置中训练的所有模型的排行榜。

# get leaderboard
lb = get_leaderboard()
lb

在这里插入图片描述

# select the best model based on F1
lb.sort_values(by='F1', ascending=False)['Model'].iloc[0]

'''
Pipeline(memory=FastMemory(location=C:\Users\owner\AppData\Local\Temp\joblib),
         steps=[('clean_column_names',
                 TransformerWrapper(exclude=None, include=None,
                                    transformer=CleanColumnNames(match='[\\]\\[\\,\\{\\}\\"\\:]+'))),
                ('numerical_imputer',
                 TransformerWrapper(exclude=None,
                                    include=['Number of times pregnant',
                                             'Plasma glucose concentration a 2 '
                                             'hours in an oral glu...
                                                              strategy='most_frequent',
                                                              verbose='deprecated'))),
                ('normalize',
                 TransformerWrapper(exclude=None, include=None,
                                    transformer=MinMaxScaler(clip=False,
                                                             copy=True,
                                                             feature_range=(0,
                                                                            1)))),
                ['trained_model',
                 LinearDiscriminantAnalysis(covariance_estimator=None,
                                            n_components=None, priors=None,
                                            shrinkage=None, solver='svd',
                                            store_covariance=False,
                                            tol=0.0001)]],
         verbose=False)
'''

✅ AutoML

此函数基于优化参数返回当前设置中所有已训练模型中的最佳模型。可以使用get_metrics函数访问评估的指标。

automl()

'''
RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True, fit_intercept=True,
                max_iter=None, normalize='deprecated', positive=False,
                random_state=123, solver='auto', tol=0.001)
'''

✅ Check Fairness

有许多方法可以将公平概念化。check_fairness函数遵循称为组公平性的方法,该方法要求:哪些群体的个人有遭受伤害的风险。check_fairness提供不同组(也称为子群体)之间的公平性相关度量。

# check fairness
check_fairness(best, sensitive_features = ['Number of times pregnant'])

在这里插入图片描述
在这里插入图片描述

✅ Dashboard

仪表板功能为训练模型生成交互式仪表板。仪表板使用ExplainerDashboard实现。

# dashboard function
dashboard(dt, display_format ='inline')

'''
Note: model_output=='probability', so assuming that raw shap output of DecisionTreeClassifier is in probability space...
Generating self.shap_explainer = shap.TreeExplainer(model)
Building ExplainerDashboard..
The explainer object has no decision_trees property. so setting decision_trees=False...
Warning: calculating shap interaction values can be slow! Pass shap_interaction=False to remove interactions tab.
Generating layout...
Calculating shap values...
Calculating prediction probabilities...
Calculating metrics...
Calculating confusion matrices...
Calculating classification_dfs...
Calculating roc auc curves...
Calculating pr auc curves...
Calculating liftcurve_dfs...
Calculating shap interaction values... (this may take a while)
Reminder: TreeShap computational complexity is O(TLD^2), where T is the number of trees, L is the maximum number of leaves in any tree and D the maximal depth of any tree. So reducing these will speed up the calculation.
Calculating dependencies...
Calculating permutation importances (if slow, try setting n_jobs parameter)...
Calculating predictions...
Calculating pred_percentiles...
Reminder: you can store the explainer (including calculated dependencies) with explainer.dump('explainer.joblib') and reload with e.g. ClassifierExplainer.from_file('explainer.joblib')
Registering callbacks...
Starting ExplainerDashboard inline (terminate it with ExplainerDashboard.terminate(8050))
'''

✅ EDA

此功能使用AutoViz库生成自动探索性数据分析(EDA)。您必须单独安装Autoviz pip install autoviz才能使用此功能。

# eda function
eda()

'''
Imported v0.1.58. After importing, execute '%matplotlib inline' to display charts in Jupyter.
    AV = AutoViz_Class()
    dfte = AV.AutoViz(filename, sep=',', depVar='', dfte=None, header=0, verbose=1, lowess=False,
               chart_format='svg',max_rows_analyzed=150000,max_cols_analyzed=30, save_plot_dir=None)
Update: verbose=0 displays charts in your local Jupyter notebook.
        verbose=1 additionally provides EDA data cleaning suggestions. It also displays charts.
        verbose=2 does not display charts but saves them in AutoViz_Plots folder in local machine.
        chart_format='bokeh' displays charts in your local Jupyter notebook.
        chart_format='server' displays charts in your browser: one tab for each chart type
        chart_format='html' silently saves interactive HTML files in your local machine
Shape of your Data Set loaded: (768, 9)
#######################################################################################
######################## C L A S S I F Y I N G  V A R I A B L E S  ####################
#######################################################################################
Classifying variables in data set...
Data cleaning improvement suggestions. Complete them before proceeding to ML modeling.
'''

在这里插入图片描述

✅Create App

# create gradio app
create_app(best)

'''
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
'''

✅ Finalize Model

该函数在整个数据集上训练给定模型,包括留出集。

final_best = finalize_model(best)
final_best

'''
Pipeline(memory=FastMemory(location=C:\Users\owner\AppData\Local\Temp\joblib),
         steps=[('clean_column_names',
                 TransformerWrapper(exclude=None, include=None,
                                    transformer=CleanColumnNames(match='[\\]\\[\\,\\{\\}\\"\\:]+'))),
                ('numerical_imputer',
                 TransformerWrapper(exclude=None,
                                    include=['Number of times pregnant',
                                             'Plasma glucose concentration a 2 '
                                             'hours in an oral glu...
                                                              verbose='deprecated'))),
                ('normalize',
                 TransformerWrapper(exclude=None, include=None,
                                    transformer=MinMaxScaler(clip=False,
                                                             copy=True,
                                                             feature_range=(0,
                                                                            1)))),
                ('actual_estimator',
                 RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,
                                 fit_intercept=True, max_iter=None,
                                 normalize='deprecated', positive=False,
                                 random_state=123, solver='auto', tol=0.001))],
         verbose=False)
'''

✅ Convert Model

此函数将训练好的机器学习模型的决策函数转换为不同的编程语言,如Python、C、Java、Go、C#等。如果您想将模型部署到无法安装正常Python堆栈以支持模型推理的环境中,则此函数非常有用。

# transpiles learned function to java
print(convert_model(best, language = 'java'))

'''
public class Model {
    public static double score(double[] input) {
        return -2.4222329408494767 + input[0] * 0.5943492729771869 + input[1] * 2.3273354603187455 + input[2] * -0.41637843900032867 + input[3] * 0.10259178891131746 + input[4] * -0.3134524281639536 + input[5] * 1.4903417391961826 + input[6] * 0.5019685413792472 + input[7] * 0.12389520576261319;
    }
}

'''

✅ Save / Load Model

# save model
save_model(best, 'my_first_model')

'''
Transformation Pipeline and Model Successfully Saved
(Pipeline(memory=FastMemory(location=C:\Users\owner\AppData\Local\Temp\joblib),
          steps=[('clean_column_names',
                  TransformerWrapper(exclude=None, include=None,
                                     transformer=CleanColumnNames(match='[\\]\\[\\,\\{\\}\\"\\:]+'))),
                 ('numerical_imputer',
                  TransformerWrapper(exclude=None,
                                     include=['Number of times pregnant',
                                              'Plasma glucose concentration a 2 '
                                              'hours in an oral glu...
                                                               verbose='deprecated'))),
                 ('normalize',
                  TransformerWrapper(exclude=None, include=None,
                                     transformer=MinMaxScaler(clip=False,
                                                              copy=True,
                                                              feature_range=(0,
                                                                             1)))),
                 ('trained_model',
                  RidgeClassifier(alpha=1.0, class_weight=None, copy_X=True,
                                  fit_intercept=True, max_iter=None,
                                  normalize='deprecated', positive=False,
                                  random_state=123, solver='auto', tol=0.001))],
          verbose=False),
 'my_first_model.pkl')
'''

# load model
loaded_from_disk = load_model('my_first_model')
loaded_from_disk

✅ Save / Load Experiment

此功能将所有实验变量保存在磁盘上,允许稍后恢复而无需重新运行设置功能。

# save experiment
save_experiment('my_experiment')
# load experiment from disk
exp_from_disk = load_experiment('my_experiment', data=data)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多分类问题与卷积模型的优化

文章目录 1. 创建自定义Dataset类2. 基础卷积模型3. Dropout抑制过拟合4. 批标准化5. 学习速率衰减6. 最终优化整合代码 首先导入用到的库: import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim import numpy as np import matp…

文章写作的诀窍:10个技巧让你的文章升华

首先要找到自己的写作声音和确定文章的中心思想&#xff0c;其次要使用简单明了和描述性的语言&#xff0c;增加细节并结构化文章&#xff1a; 找到你的写作声音&#xff1a;找到适合自己的写作风格和声音&#xff0c;这有助于让读者更容易地理解和记住你的文章。确定文章的中心…

QxRibbon 知:搭建 CMake 构建环境

文章目录 前言安装 cmake问题处理qtcreator 检测 CMake 异常 参考资料 前言 高版本的 QtCreator 已经集成了 cmake 工具&#xff0c;并支持以 CMakelists.txt 文件作为工程开发项目。 https://www.qt.io/blog/2019/07/30/update-on-cmake-project-support-in-qt-creator 安装…

NodeLocal DNS介绍及部署应用

目录 一、NodeLocal DNS是什么&#xff1f; 二、为什么使用NodeLocal DNS&#xff1f; 三、工作原理 四、安装NodeLocal DNS 五、在应用中使用NodeLocal DNSCache 六、验证 一、NodeLocal DNS是什么&#xff1f; NodeLocal DNSCache 通过在集群节点上运行一个 DaemonSet …

qrcodejs2生成二维码,通过canvas绘制带边框+中间logo的二维码图片,下载二维码

文章目录 一、通过qrcodejs2生成一个二维码二、点击【下载配置服务器二维码】来下载二维码1、通过canvas去绘制 边框二维码logo&#xff08;1&#xff09;为canvas增加绘制圆角矩形的方法&#xff08;canvas本身不提供&#xff09;&#xff08;2&#xff09;通过canvas绘制 圆角…

饮酒过多和腌制食品是导致中风的最大导火索

中风是一种常见的疾病&#xff0c;它的发生和饮食习惯有很大关系。近年来&#xff0c;我国中风病患人数和病发率都呈现出了不同程度的上升趋势&#xff0c;这给我们的健康带来了很大的威胁。下面我们可以通过数据可视化大屏来了解一下饮食健康与预防中风有哪些影响&#xff0c;…

ESP32-S3 边缘人工智能|使用加速度计数据和 ESP-DL 识别人体活动

边缘计算是一种分布式计算范例&#xff0c;指在更靠近设备的地方进行数据存储和计算。边缘人工智能&#xff08;边缘 AI&#xff09;是边缘计算中一项振奋人心的成果&#xff0c;可以令传统技术更高效地运行&#xff0c;在降低功耗的同时又有更好的性能。训练好的神经网络可以在…

通信算法之167: (低空无人机)机载视频通信传输系统基带算法设计

一.物理层基带仿真 通信系统的链路级仿真主要可以分成5个部分。 1.系统参数 2.发送机算法 3.信道模型 4.接收机算法 5.统计性能 其中主要组成部分很明显是中间三部分&#xff0c;即发送&#xff0c;信道&#xff0c;接收。但系统参数和统计性能这两部分的适当设计会大大…

linux基础命令系列之10 分钟掌握 ln 命令:创建链接,软链接,硬链接,递归链接,打印详细输出

文章目录 前言一. ln命令介绍二. 语法格式及常用选项三. 参考案例3.1 ln命令创建硬链接3.1.1 创建硬链接3.1.2 源文件被删除&#xff0c;不影响链接文件的正常使用3.1.3 硬链接不能跨分区创建 3.2 为什么目录刚刚创建的时候&#xff0c;链接数为23.3 ln -s 软链接的创建3.3.1 l…

【漏洞修复】node-exporter被检测出来pprof调试信息泄露漏洞

node-exporter被检测出来pprof调试信息泄露漏洞 说在前面解决方法结语 说在前面 惯例开篇吐槽&#xff0c;有些二五仔习惯搞点自研的安全扫描工具&#xff0c;然后加点DIY元素&#xff0c;他也不管扫的准不准&#xff0c;就要给你报个高中危的漏洞&#xff0c;然后就要去修复&…

C++元模板技术与traits解析:根据类型的特性来调整代码的行为,解决没有重载运算符的情况

C元模板技术与traits解析 第一章、C元模板技术简介 (C Meta-template Introduction)1.1 元模板的定义与概念 (Definition and Concepts)1.2 元模板技术的发展历程 (Evolution of Meta-templates)1.3 元模板应用场景举例 (Examples of Meta-template Applications) 第二章、 tra…

[数据结构初阶]顺序表

目录 静态顺序表 动态顺序表 初始化 销毁 尾插 ​编辑 尾删 头插 头删 Insert erase find查找 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改。 静态顺序表 定义结构体&#xff1…

Talk | 北卡罗来纳州立大学唐圣坤浙江大学张磊: 数据为中心的高效视觉语言学习—动态退出与数据蒸馏

本期为TechBeat人工智能社区第504期线上Talk&#xff01; 北京时间6月8日(周四)20:00&#xff0c;北卡罗来纳州立大学在读博士生—唐圣坤与浙江大学硕士生—张磊的Talk将准时在TechBeat人工智能社区开播&#xff01; 他们与大家分享的主题是: “数据为中心的高效视觉语言学习…

基于jsp+mysql+mybatis的SpringBoot美容院后台管理系统

运行环境: 最好是java jdk 1.8&#xff0c;我在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以&#xff0c;如果编译器的版本太低&#xff0c;需要升级下编译器&#xff0c;不要弄太低的版本 tomcat服务器环…

【嵌入式环境下linux内核及驱动学习笔记-(15)linux总线、设备、驱动模型之I2C总线】

目录 1、 I2C总线机制1.1 导入1.2 时序1.3 地址格式 2、华清fs4412上I2C的实现2.1 寄存器2.2 寄存器位具体含义2.3 fs4412上针对具本设备的I2C工作逻辑2.3.1 主机读写工作流程**2.3.1.1 主机发送时序及操作流程2.3.1.2 主机接收的时序及流程 2.3.2 从机读写工作流程 3、LINUX内…

Redis-认识NoSQl和Redis常见的通用命令

1. 认识NoSQL 非关系型数据库 NoSQL是指一类非关系型数据库&#xff0c;它们采用的数据模型不同于传统的关系模型&#xff0c;它通常使用键值对、文档、图形等非传统的数据结构进行数据存储&#xff0c;不遵循预定义的模式和模型。NoSQL数据库通常分布式、高可扩展性&#xff0…

【项目一】GCC(gcc,g++)、静态库、动态库、MakeFile、GDB调试

GCC、静态库 1.2 GCC(1&#xff09;gcc&#xff08;1&#xff09;常用命令&#xff08;2&#xff09; C程序编译过程&#xff08;3&#xff09;GCC工作流程 1.3 GCC(2&#xff09;g1.3静态库的制作1.5静态库的使用1.6动态库的制作1.7动态库加载失败的原因1.8解决动态库加载失败…

秋招必看,Java后端高频面试题1000题、拒绝简单背诵,深入浅出近30个技术栈

Java 面试随着时间的改变而改变。在过去的日子里&#xff0c;当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试&#xff0c;但是现在问题变得越来越高级&#xff0c;面试官问的问题也更深入。 在我初入职场的时候&#xff0c;类似于 Vector 与 Array 的区别…

面试专题:计算机网络常见面试点总结

socket、tcp、udp、http 的认识及区别 socket、tcp、udp、http 的认识及区别​ 一、先来一个讲TCP、UDP和HTTP关系的 1、TCP/IP是个协议组&#xff0c;可分为三个层次&#xff1a;网络层、传输层和应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 在传…

10分钟让你彻底了解Loadrunner性能测试工具

目录 Loadrunner简介 Loadrunner原理 Loadrunner工具组件 1、VUGen&#xff08;虚拟用户生成器&#xff09; 2、Controller&#xff08;控制器&#xff09; 3、Load Generator&#xff08;负载生成器&#xff09; 4、Analysis分析器 性能测试工具&#xff0c;从广义上讲…