Pycaretの使い方

pycaretおおまかな操作方法について。
(必要そうな部分のみのメモ)

インストール

pipでインストール
conda でもインストール出来るらしいがエラーが出ることが多いらしい。

pip install pycaret

データの準備

さまざまなオープンデータが用意されている(全部で55のデータセットが利用可能)
get_dataでデータを取得できる
get_data("index")一覧を取得可能)

# データを取得する
from pycaret.datasets import get_data
all_datasets = get_data('index')
all_datasets.head()
DatasetData TypesDefault TaskTarget Variable 1Target Variable 2# Instances# AttributesMissing Values
0anomalyMultivariateAnomaly DetectionNoneNone100010N
1franceMultivariateAssociation Rule MiningInvoiceNoDescription85578N
2germanyMultivariateAssociation Rule MiningInvoiceNoDescription94958N
3bankMultivariateClassification (Binary)depositNone4521117N
4bloodMultivariateClassification (Binary)ClassNone7485N

# データセットを抜きだす
diabetes = get_data('diabetes')
Number of times pregnantPlasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)Class variable
061487235033.60.627501
11856629026.60.351310
28183640023.30.672321
318966239428.10.167210
40137403516843.12.288331

パイプラインの初期化

setupでPyCaretを初期化し、関数内で渡されたデータ・目的変数、その他すべてのパラメータを基に、pipelineを作成する。
setupを実行するとそれぞれの変数の型が自動で判定され、確認を求められる。(回帰 or 分類問題かも判定されるみたい)

setupのパラメータ

  • train_size:学習データの比率
  • silent:Trueとすると変数の型の確認をスキップできる。

また、setupの中で色々前処理が実行できる。(前処理については省略)
以下の三つの前処理はデフォルト設定で実行されるようになっている。

  • 欠損値処理(Missing Value Imputation)
  • カテゴリ変数の(One-Hot Encoding)
  • 訓練・テストデータ分割(Train-Test Split)

setupの設定や、処理後のデータはget_configで出力できる。
(確認できる項目については後述)

from pycaret.classification import *
clf = setup(data=diabetes, target = 'Class variable')
# clf = setup(data=diabetes, target = 'Class variable', silent=True)

# パラメータやデータの確認
# トレーニンングデータの確認
get_config('X_train')
output

 DescriptionValue
0session_id7899
1TargetClass variable
2Target TypeBinary
3Label EncodedNone
4Original Data(768, 9)
5Missing ValuesFalse
6Numeric Features7
7Categorical Features1
8Ordinal FeaturesFalse
9High Cardinality FeaturesFalse
10High Cardinality MethodNone
11Transformed Train Set(537, 22)
12Transformed Test Set(231, 22)
13Shuffle Train-TestTrue
14Stratify Train-TestFalse
15Fold GeneratorStratifiedKFold
16Fold Number10
17CPU Jobs-1
18Use GPUFalse
19Log ExperimentFalse
20Experiment Nameclf-default-name
21USI5dda
22Imputation Typesimple
23Iterative Imputation IterationNone
24Numeric Imputermean
25Iterative Imputation Numeric ModelNone
26Categorical Imputerconstant
27Iterative Imputation Categorical ModelNone
28Unknown Categoricals Handlingleast_frequent
29NormalizeFalse
30Normalize MethodNone
31TransformationFalse
32Transformation MethodNone
33PCAFalse
34PCA MethodNone
35PCA ComponentsNone
36Ignore Low VarianceFalse
37Combine Rare LevelsFalse
38Rare Level ThresholdNone
39Numeric BinningFalse
40Remove OutliersFalse
41Outliers ThresholdNone
42Remove MulticollinearityFalse
43Multicollinearity ThresholdNone
44Remove Perfect CollinearityTrue
45ClusteringFalse
46Clustering IterationNone
47Polynomial FeaturesFalse
48Polynomial DegreeNone
49Trignometry FeaturesFalse
50Polynomial ThresholdNone
51Group FeaturesFalse
52Feature SelectionFalse
53Feature Selection Methodclassic
54Features Selection ThresholdNone
55Feature InteractionFalse
56Feature RatioFalse
57Interaction ThresholdNone
58Fix ImbalanceFalse
59Fix Imbalance MethodSMOTE

モデルの比較

compare_modelsを実行すると、モデルライブラリで利用可能な全ての推定量をクロスバリデーションにより学習し、その性能を評価する。
返り値は最も予測精度の高かった予測モデル(表の一番上のモデル)

使用できるモデル(回帰)
NameReferenceTurbo
ID
lrLinear Regressionsklearn.linear_model._base.LinearRegressionTrue
lassoLasso Regressionsklearn.linear_model._coordinate_descent.LassoTrue
ridgeRidge Regressionsklearn.linear_model._ridge.RidgeTrue
enElastic Netsklearn.linear_model._coordinate_descent.Elast...True
larLeast Angle Regressionsklearn.linear_model._least_angle.LarsTrue
llarLasso Least Angle Regressionsklearn.linear_model._least_angle.LassoLarsTrue
ompOrthogonal Matching Pursuitsklearn.linear_model._omp.OrthogonalMatchingPu...True
brBayesian Ridgesklearn.linear_model._bayes.BayesianRidgeTrue
ardAutomatic Relevance Determinationsklearn.linear_model._bayes.ARDRegressionFalse
parPassive Aggressive Regressorsklearn.linear_model._passive_aggressive.Passi...True
ransacRandom Sample Consensussklearn.linear_model._ransac.RANSACRegressorFalse
trTheilSen Regressorsklearn.linear_model._theil_sen.TheilSenRegressorFalse
huberHuber Regressorsklearn.linear_model._huber.HuberRegressorTrue
krKernel Ridgesklearn.kernel_ridge.KernelRidgeFalse
svmSupport Vector Regressionsklearn.svm._classes.SVRFalse
knnK Neighbors Regressorsklearn.neighbors._regression.KNeighborsRegressorTrue
dtDecision Tree Regressorsklearn.tree._classes.DecisionTreeRegressorTrue
rfRandom Forest Regressorsklearn.ensemble._forest.RandomForestRegressorTrue
etExtra Trees Regressorsklearn.ensemble._forest.ExtraTreesRegressorTrue
adaAdaBoost Regressorsklearn.ensemble._weight_boosting.AdaBoostRegr...True
gbrGradient Boosting Regressorsklearn.ensemble._gb.GradientBoostingRegressorTrue
mlpMLP Regressorsklearn.neural_network._multilayer_perceptron....False
xgboostExtreme Gradient Boostingxgboost.sklearn.XGBRegressorTrue
lightgbmLight Gradient Boosting Machinelightgbm.sklearn.LGBMRegressorTrue
dummyDummy Regressorsklearn.dummy.DummyRegressorTrue
使用できるモデル(分類)
NameReferenceTurbo
ID
lrLogistic Regressionsklearn.linear_model._logistic.LogisticRegressionTrue
knnK Neighbors Classifiersklearn.neighbors._classification.KNeighborsCl...True
nbNaive Bayessklearn.naive_bayes.GaussianNBTrue
dtDecision Tree Classifiersklearn.tree._classes.DecisionTreeClassifierTrue
svmSVM - Linear Kernelsklearn.linear_model._stochastic_gradient.SGDC...True
rbfsvmSVM - Radial Kernelsklearn.svm._classes.SVCFalse
gpcGaussian Process Classifiersklearn.gaussian_process._gpc.GaussianProcessC...False
mlpMLP Classifiersklearn.neural_network._multilayer_perceptron....False
ridgeRidge Classifiersklearn.linear_model._ridge.RidgeClassifierTrue
rfRandom Forest Classifiersklearn.ensemble._forest.RandomForestClassifierTrue
qdaQuadratic Discriminant Analysissklearn.discriminant_analysis.QuadraticDiscrim...True
adaAda Boost Classifiersklearn.ensemble._weight_boosting.AdaBoostClas...True
gbcGradient Boosting Classifiersklearn.ensemble._gb.GradientBoostingClassifierTrue
ldaLinear Discriminant Analysissklearn.discriminant_analysis.LinearDiscrimina...True
etExtra Trees Classifiersklearn.ensemble._forest.ExtraTreesClassifierTrue
xgboostExtreme Gradient Boostingxgboost.sklearn.XGBClassifierTrue
lightgbmLight Gradient Boosting Machinelightgbm.sklearn.LGBMClassifierTrue
dummyDummy Classifiersklearn.dummy.DummyClassifierTrue

compare_modelsのパラメータ

  • sort:表の並び替えに(評価指標に応じたランク付)に使用する評価指標(default:accuracy or R2)
  • include:特定のモデルを指定
  • exclude:使用しないモデルを指定
  • fold:クロスバリデーションでの分割数(デフォルト:10)
  • cross_validation:クロスバリデーションを実行しない場合にはFalseにする(単にhold-out法を実行したい場合など)。精度はテストセットで評価される(おそらく)*

*If you don't want to evaluate models using cross-validation and rather just train them and see the metrics on the test/hold-out set you can set the cross_validation=False.

また、使用できるモデルはmodels()で確認可能。

# 予測精度指標にしたがってソートされた結果が表示される
best = compare_models()

# クロスバリデーションの分割数指定
best = compare_models(fold=5)

# ソートに使う指標は変更可能
best = compare_models(sort = 'F1')

# 特定のモデルを使用したい時
best = compare_models(include = ['lr', 'dt', 'lightgbm'])

# 特定のモデルを使用したくない時
best = compare_models(exclude = ['lr', 'dt', 'lightgbm'])

# 複数のモデルを取得したい時
best = compare_models(n_select = 3)

# クロスバリデーションを実行しない
best = compare_models(cross_validation = False)

# 使えるモデルの確認
models()
 ModelAccuracyAUCRecallPrec.F1KappaMCCTT (Sec)
lrLogistic Regression0.75800.81190.59370.71530.64040.46130.47190.2060
ridgeRidge Classifier0.75060.00000.56790.71130.62160.44040.45280.0110
ldaLinear Discriminant Analysis0.74870.80430.56290.70970.61810.43580.44840.0130
rfRandom Forest Classifier0.74860.82140.56840.70430.62160.43790.44830.1930
gbcGradient Boosting Classifier0.73940.81390.60370.67920.63130.43150.43940.1180
etExtra Trees Classifier0.73940.79620.52790.70240.59610.41030.42360.2180
adaAda Boost Classifier0.73920.79980.60260.68580.62670.42950.44160.1010
xgboostExtreme Gradient Boosting0.72450.77570.58820.64890.60720.39780.40560.1070
lightgbmLight Gradient Boosting Machine0.71880.78850.58290.63490.60300.38660.39070.0320
knnK Neighbors Classifier0.71710.74500.52180.63960.56910.36370.37010.0190
dtDecision Tree Classifier0.70580.68660.61450.60350.60050.37010.37660.0150
nbNaive Bayes0.66870.72780.34030.60210.42630.21840.24050.0160
dummyDummy Classifier0.63320.50000.00000.00000.00000.00000.00000.0270
qdaQuadratic Discriminant Analysis0.58710.59990.44320.51860.39790.11900.14670.0160
svmSVM - Linear Kernel0.58290.00000.40370.55930.33460.09600.14070.0140

モデルの作成

create_modelでクロスバリデーションを用いて,与えられた推定値の学習と性能の評価を行う。
この関数の出力は,foldごとのクロスバリデーションの結果が出力される。

create_modelのパラメータ

  • fold:クロスバリデーションでの分割数(デフォルト:10)
  • cross_validation:クロスバリデーションを実行しない場合にはFalseにする(単にhold-out法を実行したい場合など)
    精度はテストセットで評価される(おそらく)*
  • probability_threshold:分類の閾値の設定
  • その他、各モデルのハイパーパラメータを指定可能

*If you don't want to evaluate models using cross-validation and rather just train them and see the metrics on the test/hold-out set you can set the cross_validation=False.When you disable cross_validation, the model is only trained one time, on the entire training dataset and scored using the test/hold-out set.

# ロジスティック回帰でモデルの学習と性能評価を実行してみる。
lr = create_model('lr')

# クロスバリデーションの分割数を指定可能
lr = create_model('lr',fold = 5)

# クロスバリデーションを行わない場合
lr = create_model('lr', cross_validation = False)

# 閾値を調整する。
lr = create_model('lr', probability_threshold = 0.25)

# ハイパーパラメータを設定することも可能
dt = create_model('dt', max_depth = 5)

# 検証の結果は`pull`で呼び出し可能
dt_results = pull()
 MAEMSERMSER2RMSLEMAPE
Fold      
00.30330.21280.46130.13820.31480.5095
10.28350.20190.4493-0.10430.31880.2924
20.27570.19300.43940.10510.30680.4553
30.28370.17390.41710.25410.28690.3960
40.24530.15430.39280.36080.27030.4003
50.29360.18730.43280.10150.30680.4681
60.36960.25940.5094-0.11260.35680.5166
70.27190.14290.37800.32210.27030.3842
80.30580.19450.44100.18700.30270.4351
90.35340.24380.4938-0.00430.33890.4978
Mean0.29860.19640.44150.12480.30730.4355
Std0.03560.03430.03860.15550.02610.0658

return_train_scoreをTrueにすると、クロスバリデーションにおける訓練データの予測精度も出力できる。これを観察することでオーバーフィット/アンダーフィットの具合を調べることも可能

rf = create_model('rf', fold=5, return_train_score=True)
  MAEMSERMSER2RMSLEMAPE
SplitFold      
CV-Train00.11810.02420.15570.89400.11070.1739
10.12050.02450.15660.89040.11300.1762
20.11870.02480.15740.89340.11410.1634
30.11390.02360.15350.89520.11150.1622
40.12180.02450.15640.89350.11360.1675
CV-Val00.30370.15420.39270.31510.27500.4770
10.31690.16070.40090.33440.27650.4152
20.32870.17360.41660.15640.30060.4448
30.34820.20740.45540.13030.31330.5231
40.29060.14340.37870.34840.26960.3880
CV-TrainMean0.11860.02430.15590.89330.11260.1686
Std0.00270.00040.00130.00160.00130.0056
CV-ValMean0.31760.16790.40890.25690.28700.4496
Std0.01990.02200.02630.09370.01700.0472
Trainnan0.11740.02390.15470.89500.11260.1633

モデルのチューニング

tune_model()を使ってモデルのハイパーパラメータを調整する。(デフォルトはscikit-learnのRandomizedSearchCV)
この関数の出力は、クロスバリデーションにおける各Foldでの評価指標。最適なモデルは optimizeパラメータで定義された指標に基づいて選択される。

tune_modelのパラメータ

  • n_iter:ハイパーパラメータチューニングでのiteration(反復)の回数(default:10)
  • custom_grid:(グリッドサーチでの)探索範囲を指定する場合に使用
  • search_library:RandomizedSearchCV以外のアルゴリズムを指定。
  • return_tuner:Trueにするとtuner objectの中身を確認できる
  • choose_better:Trueにするとデフォルトのハイパーパラメータも含めて最も性能の高いモデルを返す。
boston = get_data('boston') 
from pycaret.regression import * 
reg = setup(data = boston, target = 'medv',silent=True)

dt = create_model('dt')

# tune model
tuned_dt = tune_model(dt)

# iteration数の変更(デフォルトは10)
tuned_dt = tune_model(dt, n_iter = 100)

# グリッドサーチの探索範囲を指定する
params = {"max_depth": np.random.randint(1, (len(boston.columns)*.85),20),
          "max_features": np.random.randint(1, len(boston.columns),20),
          "min_samples_leaf": [2,3,4,5,6]}
tuned_dt = tune_model(dt, custom_grid = params)

# tune model optuna
tuned_dt = tune_model(dt, search_library = 'optuna')
tuned_dt = model(dt, search_library = 'scikit-optimize')
tuned_dt = tune_model(dt, search_library = 'tune-sklearn', search_algorithm = 'hyperopt')

# チューニングの中身の確認(tunerに格納される)
tuned_model, tuner = tune_model(dt, return_tuner=True)

# デフォルトの設定も含めて、最も良いモデルを選択する。
tuned_dt = tune_model(dt, choose_better = True)

その他(チューニング)

Optimize_threshold

学習済みモデルの確率閾値を最適化する。

This function optimizes the probability threshold for a trained model.

calibrate_model

この関数は,等張回帰またはロジスティック回帰を用いて,与えられたモデルの確率を較正する。

This function calibrates the probability of a given model using isotonic or logistic regression.

from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable', silent=True)
dt = create_model('dt')

# Optimize_threshold
optimized_dt = optimize_threshold(dt)

# calibrate model
calibrated_dt = calibrate_model(dt)

結果の可視化

plot_model

plot_modelで、さまざまな方法での予測結果の可視化ができる。

可視化できるグラフ一覧(回帰)
Plot NamePlot
Residuals Plot‘residuals’
Prediction Error Plot‘error’
Cooks Distance Plot‘cooks’
Recursive Feature Selection‘rfe’
Learning Curve‘learning’
Validation Curve‘vc’
Manifold Learning‘manifold’
Feature Importance (top 10)‘feature’
Feature Importance (all)'feature_all'
Model Hyperparameter‘parameter’
可視化できるグラフ一覧(分類)
Plot namePlot
Area Under the Curve‘auc’
Discrimination Threshold‘threshold’
Precision Recall Curve‘pr’
Confusion Matrix‘confusion_matrix’
Class Prediction Error‘error’
Classification Report‘class_report’
Decision Boundary‘boundary’
Recursive Feature Selection‘rfe’
Learning Curve‘learning’
Manifold Learning‘manifold’
Calibration Curve‘calibration’
Validation Curve‘vc’
Dimension Learning‘dimension’
Feature Importance (Top 10)‘feature’
Feature IImportance (all)'feature_all'
Model Hyperparameter‘parameter’
Lift Curve'lift'
Gain Curve'gain'
KS Statistic Plot'ks'

plot_modelのパラメータ

  • scale:グラフのサイズ
  • save:Trueとするとグラフを保存する。
  • use_train_data:Trueとするとトレーニングデータでの検証結果を出力する。
  • plot_kwargs:Yellowbrickで許容される任意の引数(PyCaretはプロット作業のほとんどに Yellowbrickを使用しているため、Yellowbrickのビジュアライザで許容される任意の引数は plot_kwargs パラメータとして渡すことができる)

また、evaluate_model()を使用すると、plot_modelのグラフをまとめて出力することが出来る

clf1 = setup(data = diabetes, target = 'Class variable',silent=True)
lr = create_model('lr')

# plot model
plot_model(lr, plot = 'auc')

# scale設定
plot_model(lr, plot = 'auc', scale = 3)

# 保存の設定
plot_model(lr, plot = 'auc', save = True)

# Yellowbrickの引数設定
plot_model(lr, plot = 'confusion_matrix', plot_kwargs = {'percent' : True})

# トレーニングデータの可視化
plot_model(lr, plot = 'auc', use_train_data = True)

# グラフをまとめて表示
evaluate_model(lr)

(出力したAUCのグラフ)

interpret_model

学習済みモデルから生成された予測値を解析する。この関数のほとんどのプロットは、SHAP (Shapley Additive exPlanations)に基づいて実装されており、非線形の手法を用いた場合でも解析結果を解釈するためのさまざまな可視化手法が用意されている。

SHAPについてはこちらの記事も参照(SHAP を用いた機械学習への解釈性付与

interpret_modelのパラメータ

  • save:Trueにするとプロットを保存する。
  • plot:plotのタイプを変更する。
  • feature:可視化する特徴量を指定する。
  • use_train_data:Trueにするとトレーニングデータを使ってプロットを作成する
  • observation:plot="reason"の時に、ある1つのデータを可視化したい場合に指定するインデックス番号
clf = setup(data = diabetes, target = 'Class variable',silent=True,train_size=0.9)
model = create_model('rf')

# interpret model
plot = interpret_model(model, plot='correlation',scale=3)

# プロットの保存
interpret_model(xgboost, plot='correlation', save=True)

# プロットの保存
interpret_model(xgboost, plot='correlation', use_train_data=True)

# 特徴量を指定
interpret_model(xgboost, plot='correlation', feature='Age (years)')

# ある特定のサンプルについて "reason"グラフを作成
pot = interpret_model(model, plot='reason', observation=1)

(SHAPのアウトプット例)

ダッシュボード

dashbordを使うと、対話型のダッシュボードを生成できる。

from pycaret.datasets import get_data
juice = get_data('juice')
from pycaret.classification import *
exp_name = setup(data=juice, target='Purchase', silent=True)
lr = create_model('lr')

# launch dashboard
dashboard(lr)

予測

predict_model

テストデータにおける予測値とスコアを出力する

predict_modelのパラメータ

  • data:テストデータではない別のデータを使用したい場合に指定。
  • raw_score:probability を出力したい場合にはTrueにする。
  • probability_threshold:クラス分けの閾値を指定したい場合に使用
  • drift_report:drift reportを出力したい場合に使用
# load dataset
diabetes = get_data('diabetes')
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')

xgboost = create_model('xgboost')

# predict on hold-out
predict_result = predict_model(xgboost)

# predict on new data
new_data = diabetes.copy()
new_data.drop('Class variable', axis = 1, inplace = True)
predict_model(xgboost, data = new_data)
output
Plasma glucose concentration a 2 hours in an oral glucose tolerance testDiastolic blood pressure (mm Hg)Triceps skin fold thickness (mm)2-Hour serum insulin (mu U/ml)Body mass index (weight in kg/(height in m)^2)Diabetes pedigree functionAge (years)Number of times pregnant_0Number of times pregnant_1Number of times pregnant_10...Number of times pregnant_3Number of times pregnant_4Number of times pregnant_5Number of times pregnant_6Number of times pregnant_7Number of times pregnant_8Number of times pregnant_9Class variableLabelScore
0113.050.010.085.029.5000000.62625.00.00.00.0...1.00.00.00.00.00.00.0000.7910
1135.054.00.00.026.7000010.68762.00.01.00.0...0.00.00.00.00.00.00.0000.9718
2123.048.032.0165.042.0999980.52026.00.00.00.0...0.00.00.00.00.00.00.0000.6470
3106.060.024.00.026.5000000.29629.00.00.00.0...0.00.00.00.01.00.00.0100.9902
499.068.038.00.032.7999990.14533.00.00.00.0...0.01.00.00.00.00.00.0000.8941
..................................................................
226169.074.019.0125.029.9000000.26831.00.00.00.0...1.00.00.00.00.00.00.0110.9563
227111.072.047.0207.037.0999981.39056.00.00.00.0...0.01.00.00.00.00.00.0110.7743
228106.076.00.00.037.5000000.19726.00.01.00.0...0.00.00.00.00.00.00.0000.9970
229107.072.030.082.030.7999990.82124.00.01.00.0...0.00.00.00.00.00.00.0000.9691
230108.072.043.075.036.0999980.26333.00.00.00.0...0.00.01.00.00.00.00.0000.9642

231 rows × 27 columns

その他の操作(デプロイ)

finalize_model

Hold-outセットを含めたデータ全体で学習を実行

save_model

変換パイプラインと学習済みモデルオブジェクトをpickleファイルとして保存する

load_model

保存したパイプラインをロードする

from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable',silent=True)

rf = create_model('rf')

# finalize a model
finalize_model(rf)

# モデルを保存する。
save_model(rf, 'rf_pipeline')

# モデルを読み込む
loaded_model = load_model('rf_pipeline')
保存したパイプライン

Transformation Pipeline and Model Successfully Saved

(Pipeline(memory=None,
steps=[('dtypes',
DataTypes_Auto_infer(categorical_features=[],
display_types=False, features_todrop=[],
id_columns=[],
ml_usecase='classification',
numerical_features=[],
target='Class variable',
time_features=[])),
('imputer',
Simple_Imputer(categorical_strategy='not_available',
fill_value_categorical=None,
fill_value_numerical=None,
numer...
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=100, n_jobs=-1,
oob_score=False, random_state=7554,
verbose=0, warm_start=False)]],
verbose=False),
'dt_pipeline.pkl')

その他

  • pull:最後に出力されたスコアリンググリッドを返す。
  • models:モデルライブラリのインポートモジュールで利用可能な全てのモデルを含むテーブルを返す。
  • get_config:Setup関数の初期化時に作成されたグローバル変数を確認できる。
  • set_config:グローバル変数を設定する。
  • get_metrics:(クロスバリデーションで使われる)利用可能なすべての評価指標のテーブルを返す。
  • add_metric:自作の評価指標をクロスバリデーションで検証する評価指標のコンテナに追加する。
  • remove_metric:評価指標のコンテナから、指定した評価指標を省く
  • automl:optimizeパラメータに基づいて、現在の設定におけるすべての学習済みモデルのうち、最適なモデルを取得する。
  • get_logs:検証のログのテーブルを返す。(setup関数の初期化時に log_experiment=True としたときのみ動作する)
  • get_system_logs:カレントアクティブディレクトリからlogs.logファイルを読み込んで表示する。
get_configで確認できる変数
  • X: Transformed dataset (X)
  • y: Transformed dataset (y)
  • X_train: Transformed train dataset (X)
  • X_test: Transformed test/holdout dataset (X)
  • y_train: Transformed train dataset (y)
  • y_test: Transformed test/holdout dataset (y)
  • seed: random state set through session_id
  • prep_pipe: Transformation pipeline
  • fold_shuffle_param: shuffle parameter used in Kfolds
  • n_jobs_param: n_jobs parameter used in model training
  • html_param: html_param configured through setup
  • create_model_container: results grid storage container
  • master_model_container: model storage container
  • display_container: results display container
  • exp_name_log: Name of experiment
  • logging_param: log_experiment param
  • log_plots_param: log_plots param
  • USI: Unique session ID parameter
  • fix_imbalance_param: fix_imbalance param
  • fix_imbalance_method_param: fix_imbalance_method param
  • data_before_preprocess: data before preprocessing
  • target_param: name of target variable
  • gpu_param: use_gpu param configured through setup
  • fold_generator: CV splitter configured in fold_strategy
  • fold_param: fold params defined in the setup
  • fold_groups_param: fold groups defined in the setup
  • stratify_param: stratify parameter defined in the setup
from pycaret.datasets import get_data
data = get_data('diabetes')

from pycaret.classification import *
clf1 = setup(data, target = 'Class variable',silent=True)

best_model = compare_models()

# get the scoring grid
results = pull()

# check model library
models()

# reset environment seed
set_config('seed', 999)

# get metrics
get_metrics()

# add metric
from sklearn.metrics import log_loss
add_metric('logloss', 'Log Loss', log_loss, greater_is_better = False)

# remove metric
remove_metric('logloss')

# automl
best = automl(optimize = 'Recall')

# check ML logs
get_logs()

# check system logs
from pycaret.utils import get_system_logs
get_system_logs()

参考

参考HP

関連書籍






udemy