def deserialize_iforest(model_dict):
    model = IsolationForest(**model_dict['params'])

    for param in list(model_dict.keys())[4:-1]:
        setattr(model, param, model_dict[param])

    model.base_estimator_ = ExtraTreeRegressor(**model_dict['base_estimator_'])

    estimators_features_ = list(
        map(lambda x: np.array(x), model_dict['estimators_features_']))
    model.estimators_features_ = estimators_features_

    _seeds = np.array(model_dict['_seeds'])
    model._seeds = _seeds

    new_estimators = []
    for est_dict in model_dict['estimators_']:
        est = ExtraTreeRegressor(**est_dict['params'])
        for param in list(est_dict.keys())[1:-1]:
            setattr(est, param, est_dict[param])
        est.tree_ = reg.deserialize_tree(est_dict['tree_'],
                                         est_dict['n_features_'],
                                         est.n_classes_[0],
                                         est_dict['n_outputs_'])
        new_estimators.append(est)
    model.estimators_ = new_estimators

    return model