qlib workflow_by_code报错

###################################
# train model: double Ensemble
###################################
data_handler_config = {
    "start_time": "2008-01-01",
    "end_time": "2020-08-01",
    "fit_start_time": "2012-01-01",
    "fit_end_time": "2014-12-31",
    "instruments": market,
}

task = {
    "model": {
        "class": "DEnsembleModel",
        "module_path": "qlib.contrib.model.double_ensemble",
        "kwargs": {
            "base_model":"gbm",
            "loss": "mse",
            "num_models": 6,
            "enable_sr": True,##
            "enable_fs": True,##
            "alpha1": 1.0,##
            "alpha2": 1.0,##
            "decay": 0.9,
            "sample_ratios": [0.3, 0.3, 0.2, 0.1, 0.1],
            "sub_weights": [0.3, 0.2, 0.2, 0.1, 0.1, 0.1],
        },
    },
    "dataset": {
        "class": "DatasetH",
        "module_path": "qlib.data.dataset",
        "kwargs": {
            "handler": {
                "class": "Alpha158",
                "module_path": "qlib.contrib.data.handler",
                "kwargs": data_handler_config,
            },
            "segments": {
                "train": ("2008-01-01", "2016-12-31"),
                "valid": ("2017-01-01", "2019-12-31"),
                "test": ("2020-01-01", "2020-09-025"),
            },
        },
    },
}

# model initiaiton
model = init_instance_by_config(task["model"])
dataset = init_instance_by_config(task["dataset"])

# start exp to train model
with R.start(experiment_name="train_model"):
    R.log_params(**flatten_dict(task))
    model.fit(dataset)
    R.save_objects(trained_model=model)
    rid = R.get_recorder().id
Traceback (most recent call last):
  File "C:\Users\Administrator\Anaconda3\lib\multiprocessing\pool.py", line 121, in worker
    result = (True, func(*args, **kwds))
  File "C:\Users\Administrator\Anaconda3\lib\site-packages\pyqlib-0.6.3.99-py3.7-win-amd64.egg\qlib\data\data.py", line 477, in expression_calculator
    obj[field] = ExpressionD.expression(inst, field, start_time, end_time, freq)
  File "C:\Users\Administrator\Anaconda3\lib\site-packages\pyqlib-0.6.3.99-py3.7-win-amd64.egg\qlib\data\data.py", line 663, in expression
    series = expression.load(instrument, max(0, start_index - lft_etd), end_index + rght_etd, freq)
  File "C:\Users\Administrator\Anaconda3\lib\site-packages\pyqlib-0.6.3.99-py3.7-win-amd64.egg\qlib\data\base.py", line 153, in load
    series = self._load_internal(instrument, start_index, end_index, freq)
  File "C:\Users\Administrator\Anaconda3\lib\site-packages\pyqlib-0.6.3.99-py3.7-win-amd64.egg\qlib\data\ops.py", line 306, in _load_internal
    return getattr(np, self.func)(series_left, series_right)
ValueError: operands could not be broadcast together with shapes (0,) (3011,) 
"""

执行qlib workflow_by_code源代码, 数据集已获取成功,但好像这段代码并没有找到数据?

这个错误发生在两个数组的形状不能匹配时。在这种情况下,一个数组有0个元素(空数组),另一个数组有3011个元素。它们无法广播(匹配)在一起。

要解决这个问题,你需要检查代码中使用的numpy数组,并确保它们的形状正确匹配。你可以使用numpy库中的numpy.reshape()函数来改变数组的形状,以匹配另一个数组的形状。你也可以检查你的代码,看看是否有逻辑错误导致了这种形状不匹配的情况。