提问人:neanderslob 提问时间:10/21/2023 最后编辑:neanderslob 更新时间:10/28/2023 访问量:50
在模型比较之外使用 pycaret 的异常值和归一化特征
Using pycaret's outlier and normalization features outside of model comparison
问:
我非常喜欢 pycaret 来处理我分析中的大部分跑腿工作。我在预处理中大量使用该方法来处理数据中的归一化、目标转换和特征选择。在创建和验证我的模型后,使用 pycaret 生成的训练/测试集,我的目标是在看不见的数据集上运行模型,以模拟现实世界的应用程序。利用 pycaret 预处理来处理看不见的数据集上的跑腿工作会很好,就像我对训练/测试所做的那样。setup()
Towards datascience 在这里有一个关于使用 pycaret 进行分析的精彩教程,但在预处理设置方法中使用了各种转换后,它们似乎只是将原始集输入到方法中,而没有任何明显的准备。有没有办法在不是训练/测试拆分的后续数据集上使用 pycaret 的预处理器?还是我们需要在没有 pycaret 的情况下做到这一点?data_unseen
predict_model()
这是他们的代码:
import pandas as pddf = pd.read_csv('source/heart.csv')
df.head()
data = df.sample(frac=0.95, random_state=42)
data_unseen = df.drop(data.index)
data.reset_index(inplace=True, drop=True)
data_unseen.reset_index(inplace=True, drop=True)
print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))
Data for Modeling: (288, 14)
Unseen Data For Predictions: (15, 14)
from pycaret.classification import *
from imblearn.over_sampling import RandomOverSampler
model = setup(data = data, target = 'output', normalize = True, normalize_method='minmax', train_size = 0.8,fix_imbalance = True, fix_imbalance_method=RandomOverSampler(), session_id=123)
best = compare_models()
tuned_best = tune_model(best)
plot_model(tuned, plot = 'pr')
final_best = finalize_model(tuned_best)
predict_model(final_best)
predict_model(final_best, data = data_unseen)
答:
需要澄清:首先,你的问题需要更多的澄清,你的目的不明确,也不清楚你想自动化哪些部分(避免手动工作)。
以下是分类的一般流程: https://pycaret.gitbook.io/docs/
# Classification Functional API Example
# loading sample dataset
from pycaret.datasets import get_data
data = get_data('juice')
# init setup
s = setup(data, target = 'Purchase', session_id = 123)
# model training and selection
best = compare_models()
# evaluate trained model
evaluate_model(best)
# predict on hold-out/test set
pred_holdout = predict_model(best)
# predict on new data
new_data = data.copy().drop('Purchase', axis = 1)
predictions = predict_model(best, data = new_data)
# save model
save_model(best, 'best_pipeline')
您需要在 之后致电。然后,您可以使用此处命名的所选模型。compare_models()
setup()
best
教程:此外,PyCaret 的二元分类教程也可以对您有所帮助: Colab - 二元分类
这是本教程的 github 链接: Github - 二元分类
有关更多 PyCaret 教程:PyCaret 教程
评论
PyCaret 库自动执行数据的预处理(清理)。通过使用该函数,您可以获得清理后的数据:get_config()
PyCaret 提供 “pycaret.regression.get_config()” 函数。get_config 函数检索初始化 setup 函数时创建的全局变量。
使用该函数后,您可以使用它来获取没有目标变量列的已清理数据集(所有数据集)。setup()
X = get_config('X')
整个数据集 = X + y。
此外,整个数据集 = X_train + X_test + y_train + y_test。
要获取目标变量列,请使用 。同样,您可以使用 和 .y = get_config('y')
X_train = get_config('X_train')
y_train = get_config('y_train')
一些可访问的变量是:
- X:转换后的数据集 (X)
- y:转换后的数据集 (y)
- X_train:转换后的训练数据集 (X)
- X_test:转换后的测试/维持数据集 (X)
- y_train:转换后的训练数据集 (y)
- y_test:转换后的测试/维持数据集 (y)
这是一个更好的链接: pycaret.gitbook.io get_configget_config()
我认为你需要的是这个:dataset_transformed = get_config('dataset_transformed')
注意:您可以将整个数据集发送到函数,而无需拆分它。(或者你可以给拆分参数 1.0:setup()
train_size=1.0
)
评论
Invalid value for the target parameter.
评论