ImportError: Module 'outputs/rules/rules' not found
TrulsKarlsson opened this issue · 1 comments
I have chefboost==0.0.18 and perform the following code:
from chefboost import Chefboost as chef
config = {'algorithm': 'C4.5'}#, 'enableParallelism': False}
tmp_df = df[["distance", "Decision"]]
model = chef.fit(tmp_df, config)
and I get the following error message:
24-05-05 17:46:31 - [INFO]: 4 CPU cores will be allocated in parallel running
24-05-05 17:46:31 - C4.5 tree is going to be built...
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
Cell In[23], line 1
----> 1 model = chef.fit(tmp_df, config)
File ~/Exjobb/BachelorThesis/env/lib/python3.11/site-packages/chefboost/Chefboost.py:275, in fit(df, config, target_label, validation_df, silent)
272 json_file = "outputs/rules/rules.json"
273 functions.createFile(json_file, "[\n")
--> 275 trees = Training.buildDecisionTree(
276 df,
277 root=root,
278 file=file,
279 config=config,
280 dataset_features=dataset_features,
281 parent_level=0,
282 leaf_id=0,
283 parents="root",
284 validation_df=validation_df,
285 main_process_id=process_id,
286 )
288 if silent is False:
289 logger.info("-------------------------")
File ~/Exjobb/BachelorThesis/env/lib/python3.11/site-packages/chefboost/training/Training.py:711, in buildDecisionTree(df, root, file, config, dataset_features, parent_level, leaf_id, parents, tree_id, validation_df, main_process_id)
703 if (
704 config["enableRandomForest"] != True
705 and config["enableGBM"] != True
706 and config["enableAdaboost"] != True
707 ):
708 # this is reguler decision tree. find accuracy here.
710 module_name = "outputs/rules/rules"
--> 711 myrules = load_module(module_name) # rules0
712 models.append(myrules)
714 return models
File ~/Exjobb/BachelorThesis/env/lib/python3.11/site-packages/chefboost/commons/module.py:20, in load_module(module_name)
18 spec = importlib.util.find_spec(module_name)
19 if spec is None:
---> 20 raise ImportError(f"Module '{module_name}' not found")
22 module = importlib.util.module_from_spec(spec)
23 spec.loader.exec_module(module)
ImportError: Module 'outputs/rules/rules' not found
Anyone know how to fix!? Thanks in advance!
I found the temporary fix.
Go to chefboost/chefboost/commons/module.py
Change the following statement:
python if sys.version_info >= (3, 11):
to
python if sys.version_info >= (3, 12):
And it will work okay.
The key here is the importlib module does not work well.
So as a fallback, we should rely on the else block here.
So whatever your Python version is, you set the second parameter +1 to that of.
For instance, if your Python version is 3.11 then you set :
python if sys.version_info >= (3, 12):
and if your Python version is 3.10, then you set it as:
python if sys.version_info >= (3, 11):
And so on.
It is a temporary fix.
I will try to provide a permanent fix after my exams.