我想使此ML型号scikit学习兼容: https://github.com/manifoldai/merf
为此,我按照这里的说明:https://danielhnyk.cz/creating-your-own-estimator-scikit-learn/并导入
from sklearn.base import BaseEstimator, RegressorMixin
并像这样从他们那里继承:
class MERF(BaseEstimator, RegressorMixin):
但是,当我检查scikit学习兼容性时:
from sklearn.utils.estimator_checks import check_estimator
import merf
check_estimator(merf)
我得到这个错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\hap\anaconda3\envs\a1\lib\site-packages\sklearn\utils\estimator_checks.py", line 500, in check_estimator
for estimator, check in checks_generator:
File "C:\Users\hap\anaconda3\envs\a1\lib\site-packages\sklearn\utils\estimator_checks.py", line 340, in _generate_instance_checks
yield from ((estimator, partial(check, name))
File "C:\Users\hap\anaconda3\envs\a1\lib\site-packages\sklearn\utils\estimator_checks.py", line 340, in <genexpr>
yield from ((estimator, partial(check, name))
File "C:\Users\hap\anaconda3\envs\a1\lib\site-packages\sklearn\utils\estimator_checks.py", line 232, in _yield_all_checks
tags = estimator._get_tags()
AttributeError: module 'merf' has no attribute '_get_tags'
如何使此模型与scikit学习兼容
在docs中,
check_estimator
用于“检查估计器是否遵守scikit学习约定。”所以
check_estimator
不仅仅是一个兼容性检查,它还检查您是否遵循所有约定等你可以仔细阅读rolling your own estimator以确保遵守惯例
然后,您需要传递estimator类的一个实例来检查类似于
check_estimator(MERF())
的esimator。要使它真正遵循所有约定,您必须解决它抛出的每个错误,并逐一修复它们例如,一个这样的检查是
__init__
方法只设置它接受作为参数的那些属性MERF类违反以下规定:
它正在设置
self.b_hat_history
等属性,即使它们不是参数还有很多像这样的支票
我个人的建议是,除非必要,否则不要检查所有这些条件,只需继承mixin和基类,实现所需的方法并使用模型
相关问题 更多 >
编程相关推荐