PyCaret compare_models() 函数的输出显示的模型少于支持的 PyCaret 模型

Output for PyCaret compare_models() function shows less models than PyCaret models supported

PyCaret 上的新功能,我不了解这个库的几个方面:

  1. 根据本教程,https://github.com/pycaret/pycaret/blob/master/tutorials/Regression%20Tutorial%20Level%20Beginner%20-%20REG101.ipynbPyCaret 模型库中有 25 个可用的回归器。

我正在使用 PyCaret 进行回归。 但是 compare_models() 函数的输出显示的模型较少。更准确地说,我建立了一个微分并且缺少以下模型:ard, tr, kr, svm, mlp, xgboost, catboost.

也许这些模型不适合回归? 或者我是否必须创建单独的模型:

ard = create_model('ard', ply = 5)
tr = create_model('tr', ply = 5)
kr = create_model('kr', ply = 5)
svm = create_model('svm', ply=5)
mlp = create_model('mlp', ply=5)
xgboot = create_model('xgboost', ply=5)
catboost = create_model('catboost', ply=5)
  1. 我初始化了 PyCaret 环境感谢setup()函数:

    回归=设置(数据=dataset_predictions_meteo,目标='TEMPERATURE_OBSERVEE',categorical_features=['MonthNumber','origine','LIB_SOURCE'] , numeric_features = ['DIFF_HOURS' , 'TEMPERATURE_PREDITE'],
    session_id=123, train_size=0.8, 归一化=真, #transform_target=真 remove_perfect_collinearity = 真)

预处理管道之前,我的原始数据集是:

    LIB_SOURCE  TEMPERATURE_PREDITE     DIFF_HOURS  TEMPERATURE_OBSERVEE    MonthNumber     origine
gfs_025     10.376662   348.0   5.9500  12  Sencrop
gfs_025     8.688105    351.0   6.6200  12  Sencrop
gfs_025     5.323708    354.0   1.1250  12  Sencrop
gfs_025     5.271800    357.0   -1.5425     12  Sencrop
gfs_025     6.889182    324.0   5.9500  12  Sencrop
gfs_025     15.815905   336.0   23.7150     5   Visiogreen
gfs_025     15.294277   339.0   19.5925     5   Visiogreen
gfs_025     19.515454   342.0   25.3750     5   Visiogreen
gfs_025     25.983438   345.0   34.1500     5   Visiogreen
gfs_025     28.534859   348.0   37.6650     5   Visiogreen

预处理管道后,我的数据集是:

get_config('X')

TEMPERATURE_PREDITE     DIFF_HOURS  LIB_SOURCE_arome_001    LIB_SOURCE_arpege_01    LIB_SOURCE_gfs_025  MonthNumber_1   MonthNumber_10  MonthNumber_11  MonthNumber_12  MonthNumber_2   MonthNumber_3   MonthNumber_4   MonthNumber_5   MonthNumber_8   origine_Sencrop
    -0.142182   2.887928    0.0     0.0     1.0     0.0     0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     1.0
    -0.446260   2.921703    0.0     0.0     1.0     0.0     0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     1.0
    -1.052127   2.955477    0.0     0.0     1.0     0.0     0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     1.0
    -1.061474   2.989251    0.0     0.0     1.0     0.0     0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     1.0
    -0.770213   2.617735    0.0     0.0     1.0     0.0     0.
0.837327    2.752832    0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     1.0     0.0     0.0
0.743391    2.786606    0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     1.0     0.0     0.0
1.503548    2.820380    0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     1.0     0.0     0.0
2.668314    2.854154    0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     1.0     0.0     0.0
3.127778    2.887928    0.0     0.0     1.0     0.0     0.0     0.0     0.0     0.0     0.0     0.0     1.0     0.0     0.0

所以因为我在 setup() 函数中设置了 remove_perfect_collinearity to True,所以我希望对于具有 3 个值的分类变量 LIB_SOURCE,PyCaret 只保留 2 列,但事实并非如此。对于具有 2 个值的 origine 变量,在处理管道后,PyCaret 似乎只保留 1 列。

此外,对于数值特征 DIFF_HOURSTEMPERATURE_PREDITE,PyCaret 会转换它们,因为 setup() 函数中的 normalize 设置为 True。但对我来说,归一化应该在 0 和 1 之间转换值,但事实并非如此。

谢谢。

显示的模型取决于安装在您的环境中的模型库以及您的设置。它可能会有所不同,因为您提到的许多模型库默认情况下都没有安装。

根据 pycaret,此代码示例仅适用于回归模型,但正如您在教程中看到的,它包括所有模型。

from pycaret.regression import *

使用您的模型如下所示;

exp_reg101 = setup(data = data, target = 'Price', session_id=123) 

这不需要拆分您的数据 x 和 y 只需将您的整个数据包括您的目标变量即可指定您的目标。 比较您的模型,如下面的代码块;

best = compare_models()

这种没有任何参数和零基础的代码用法,你可以添加参数,它应该给你所有的回归模型比较。我不认为它与环境有关,但以防万一在 colab 上使用它来尝试一下。

关于你的另一个问题,我认为 stardartscale 和 minmaxscale 之间存在混淆。如果您希望数据范围在 0 到 1 之间并且没有负值,则应该寻找 mixmaxscale。我不能说更多,但检查秤类型据我所知有 3 种类型; StandardScaler、MinMaxScaler 和 RobustScaler。