我使用Python的pycaret模块来分析大数据集。我正确地设置,compare_model, create_model,但是当我尝试使用我创建的模型来预测我从开始分裂的unseen_date时,只有一行来了,假设有100k行需要预测。我确实跳过了曲调部分,因为它花了太长时间,但我认为这不是原因
TSLASAMPLE = TSLA.sample(frac=0.8)
data_unseen = TSLA.drop(TSLASAMPLE.index)
TSLASAMPLE.reset_index(drop=True, inplace=True)
data_unseen .reset_index(drop=True, inplace=True)
TSLAinput = setup(data = TSLASAMPLE, target= 'prtPrice', use_gpu=True,html=False,silent=True)
dt = create_model('dt')
prediction = predict_model(dt,data=data_unseen)
输出:
Model MAE MSE RMSE R2 RMSLE MAPE
0 Decision Tree Regressor 0.1842 1.8393 1.3562 0.9996 0.0303 0.0082
这是预期的。您看到的结果(1行)是对未看到的数据的度量。实际的预测在你的预测变量中。
这是因为">create_model";返回训练模型的列表,其中第一个元素是基于精度结果的最佳模型。
如果你想对每个模型的未知数据进行预测,你应该循环遍历compare_model的每个实例(这是模型列表):
你可以尝试这样做:
model_list = compare_models()
predictions = []
for model in model_list:
model_prediction = predict_model(model, data=data_unseen)
predictions.append(model_prediction)
"预测"列表存储了每个模型的结果。顺序与'compare_models()'
中的顺序相同