Когда я запускаю predict_proba
на фрейме данных без многопроцессорной обработки, я получаю ожидаемое поведение.Код выглядит следующим образом:
probabilities_data = classname.perform_model_prob_predictions_nc(prediction_model, vectorized_data)
где: perform_model_prob_predictions_nc
равно:
def perform_model_prob_predictions_nc(model, dataFrame):
try:
return model.predict_proba(dataFrame)
except AttributeError:
logging.error("AttributeError occurred",exc_info=True)
Но когда я пытаюсь запустить ту же функцию, используя чанки и многопроцессорную обработку:
probabilities_data = classname.perform_model_prob_predictions(prediction_model, chunks, cores)
где perform_model_prob_predictions
:
def perform_model_prob_predictions(model, dataFrame, cores=4):
try:
with Pool(processes=cores) as pool:
result = pool.map(model.predict_proba, dataFrame)
return result
except Exception:
logging.error("Error occurred", exc_info=True)
Я получаю следующую ошибку:
PicklingError: Can't pickle <function OneVsRestClassifier.predict_proba at 0x14b1d9730>: it's not the same object as sklearn.multiclass.OneVsRestClassifier.predict_proba
В качестве ссылки:
cores = 4
vectorized_data = pd.DataFrame(...)
chunk_size = len(vectorized_data) // cores + cores
chunks = [df_chunk for g, df_chunk in vectorized_data.groupby(np.arange(len(vectorized_data)) // chunk_size)]