Errors when I save the isssus parameters of my optimization in the json file
-
Hello everyone,
I get errors when I save the isssus parameters of my optimization in the json file
I've created a program that takes two parameters param1 and param2. I have otpimized them and I would like to save the parameters in a json file.
here's a snippet of the command used :
#DEBUG#
evaluator will remove cells with such marks before evaluation
result_long = qno.optimize_strategy(
data,
strategy_long,
qno.full_range_args_generator(param1=np.arange(10, 20, 1, dtype=int),param2=np.arange(1, 20, 2, dtype=int),
asset=data.asset.values.tolist()),
workers=10 # you can set more workers on your local PC to speed up
)config = find_best_parameters(result=result_long, asset_count=15, parameter_set_count=3)
If you change the asset_count and/or parameters_count, you will get a new strategy.
json.dump(config, open('config.json', 'w'), indent=2)
display(config)
I get the following errors
TypeError Traceback (most recent call last)
Cell In[10], line 30
27 config = find_best_parameters(result=result_long, asset_count=15, parameter_set_count=3)
28 # If you change the asset_count and/or parameters_count, you will get a new strategy.
---> 30 json.dump(config, open('config.json', 'w'), indent=2)
32 display(config)File /usr/local/lib/python3.10/json/init.py:179, in dump(obj, fp, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)
173 iterable = cls(skipkeys=skipkeys, ensure_ascii=ensure_ascii,
174 check_circular=check_circular, allow_nan=allow_nan, indent=indent,
175 separators=separators,
176 default=default, sort_keys=sort_keys, **kw).iterencode(obj)
177 # could accelerate with writelines in some versions of Python, at
178 # a debuggability cost
--> 179 for chunk in iterable:
180 fp.write(chunk)File /usr/local/lib/python3.10/json/encoder.py:429, in _make_iterencode.<locals>._iterencode(o, _current_indent_level)
427 yield _floatstr(o)
428 elif isinstance(o, (list, tuple)):
--> 429 yield from _iterencode_list(o, _current_indent_level)
430 elif isinstance(o, dict):
431 yield from _iterencode_dict(o, _current_indent_level)File /usr/local/lib/python3.10/json/encoder.py:325, in _make_iterencode.<locals>._iterencode_list(lst, _current_indent_level)
323 else:
324 chunks = _iterencode(value, _current_indent_level)
--> 325 yield from chunks
326 if newline_indent is not None:
327 _current_indent_level -= 1File /usr/local/lib/python3.10/json/encoder.py:405, in _make_iterencode.<locals>._iterencode_dict(dct, _current_indent_level)
403 else:
404 chunks = _iterencode(value, _current_indent_level)
--> 405 yield from chunks
406 if newline_indent is not None:
407 _current_indent_level -= 1File /usr/local/lib/python3.10/json/encoder.py:438, in _make_iterencode.<locals>._iterencode(o, _current_indent_level)
436 raise ValueError("Circular reference detected")
437 markers[markerid] = o
--> 438 o = _default(o)
439 yield from _iterencode(o, _current_indent_level)
440 if markers is not None:File /usr/local/lib/python3.10/json/encoder.py:179, in JSONEncoder.default(self, o)
160 def default(self, o):
161 """Implement this method in a subclass such that it returns
162 a serializable object foro
, or calls the base implementation
163 (to raise aTypeError
).
(...)
177
178 """
--> 179 raise TypeError(f'Object of type {o.class.name} '
180 f'is not JSON serializable')TypeError: Object of type int64 is not JSON serializable
thank you in advance for your help
-
@dark-pidgeot Hello, it seems json doesn't accept numpy data types, replacing
np.arange(10, 20, 1, dtype=int)
withrange(10,20,1)
in full_range_args_generator function input, should fix it.Regards,
-
@support Thank you for your advise, it's ok