在 运行 历史记录中未找到有效模型。这意味着 smac 无法拟合有效模型。请检查日志文件是否有错误

No valid model found in run history. This means smac was not able to fit a valid model. Please check the log file for errors

这里我总共有 1000 多个数据集,我必须在这些数据集上训练相同数量的模型并将它们保存在名为 models 的文件夹中。

这段代码运行良好,我得到了我想要的。我面临的唯一问题是第 554 个模型,它给了我这个错误。

No valid model found in run history. This means smac was not able to fit a valid model. 
Please check the log file for errors.

我是不是做错了什么?

我的代码:

from joblib import Parallel, delayed
from sklearn.svm import LinearSVC
import numpy as np
import pandas as pd
import autosklearn.regression
import pickle
import timeit
import os
import warnings
warnings.filterwarnings("ignore")
    
def train_model(filename):
    print('Reading Dataset: '+str(filename))
    data = pd.read_csv(filename)
    train_data = data[data['state'] == 'done']
    
    automl = autosklearn.regression.AutoSklearnRegressor(
        time_left_for_this_task=30, 
        metric=autosklearn.metrics.r2,
        memory_limit=None
    )
    
    X_train = train_data[['feature1','feature2']]
    y_train = train_data[['target_column']]
    print("Training Started: "+str(filename))
    automl.fit(X_train, y_train)
    print('Saving Model: '+str(filename))
    model_path = 'models/'+str(filename.split('.')[0])
    if not os.path.exists(model_path):
        os.makedirs(model_path)
    model_filename = model_path+'/finalized_model.sav'
    pickle.dump(automl, open(model_filename, 'wb'))
    
    return True

if __name__ == "__main__":
    start = timeit.default_timer()

    result = Parallel(n_jobs=4)(delayed(train_model)(filename) for filename in ['dataset_1.csv', 'dataset_2.csv', 'dataset_3.csv',..., 'dataset_n.csv'])

    stop = timeit.default_timer()

    print('Time: ', (stop - start)/60, 'Minutes') 

我找到了问题的原因。 这是因为 RAM 中剩余的内存较少。

我没有得到任何关于此的文档

但我在 运行 脚本运行期间不断检查 RAM 利用率,当没有剩余内存时,脚本终止并出现上述错误。

如果有人对此有更多信息。他们的贡献将对社区更有帮助。