我非常喜欢使用 pycaret 来处理我分析中的大部分跑腿工作。我在预处理中大量使用
setup()
方法来处理数据中的标准化、目标转换和特征选择。运行训练/测试后,我的目标是在看不见的数据集上运行模型以模拟现实世界的应用程序。最好利用 pycaret 预处理来处理看不见的数据集。
Towards datascience 这里有一个关于使用 pycaret 进行分析的很棒的教程,但是在预处理设置方法中使用了各种转换之后,他们似乎只是将原始
data_unseen
集输入到 predict_model()
方法中,而没有任何明显的准备。有没有办法在非训练/测试分割的后续数据集上使用 pycaret 的预处理器?或者我们需要在没有 pycaret 的情况下做到这一点吗?
这是他们的代码:
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 教程