use*_*827 5 python scikit-learn
我想让这个 ML 模型与 scikit-learn 兼容: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-learn 兼容性时:
from sklearn.utils.estimator_checks import check_estimator
import merf
check_estimator(merf)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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'
Run Code Online (Sandbox Code Playgroud)
我如何使这个模型与 scikit-learn 兼容?
来自docs,check_estimator
用于“检查估算器是否遵守 scikit-learn 约定”。
这个估计器将运行一个广泛的测试套件,用于输入验证、形状等,确保估计器符合滚动你自己的估计器中详述的 scikit-learn 约定。如果 Estimator 类继承自 sklearn.base 的相应 mixin,则将运行对分类器、回归器、聚类或转换器的其他测试。
所以check_estimator
不仅仅是兼容性检查,它还检查您是否遵循所有约定等。
您可以阅读滚动自己的估算器以确保遵循约定。
然后你需要传递你的 estimator 类的一个实例来检查 esimator like check_estimator(MERF())
。要真正使它遵循所有约定,您必须解决它抛出的每个错误并一一修复它们。
例如,一种这样的检查是该__init__
方法只设置它接受作为参数的那些属性。
MERF 类违反了:
def __init__(
self,
fixed_effects_model=RandomForestRegressor(n_estimators=300, n_jobs=-1),
gll_early_stop_threshold=None,
max_iterations=20,
):
self.gll_early_stop_threshold = gll_early_stop_threshold
self.max_iterations = max_iterations
self.cluster_counts = None
# Note fixed_effects_model must already be instantiated when passed in.
self.fe_model = fixed_effects_model
self.trained_fe_model = None
self.trained_b = None
self.b_hat_history = []
self.sigma2_hat_history = []
self.D_hat_history = []
self.gll_history = []
self.val_loss_history = []
Run Code Online (Sandbox Code Playgroud)
它正在设置属性,例如self.b_hat_history
即使它们不是参数。
像这样的检查还有很多。
我个人的建议是,除非必要,否则不要检查所有这些条件,只需继承 Mixins 和 Base 类,实现所需的方法并使用模型。
归档时间: |
|
查看次数: |
156 次 |
最近记录: |