如何自定义继承Sklearn RandomForestRegressor的类?解决继承报错
问题分析与解决
错误原因
你当前代码的核心问题是继承了RandomForestRegressor的实例对象clf,而非类本身。Python中类继承必须以类作为父类,不能用已经实例化的对象,这直接导致了后续初始化时的类型错误和参数传递混乱。
正确实现方式
下面是符合需求的代码,既保留原类全部功能,又能添加自定义方法:
from sklearn import ensemble class CustomRandomForestRegressor(ensemble.RandomForestRegressor): def __init__(self, **kwargs): # 调用父类初始化,保留所有原类参数 super().__init__(**kwargs) def inSampleAccuracy(self): # 可根据实际需求实现准确率计算逻辑,示例仅打印提示 print("样本内准确率已计算") # 测试:可传入原类支持的所有参数 testModel = CustomRandomForestRegressor(max_depth=None) # 调用自定义方法 testModel.inSampleAccuracy() # 调用原类方法,比如拟合数据(示例) # testModel.fit(X_train, y_train)
关键说明
- 继承目标必须是
ensemble.RandomForestRegressor类,而非它的实例。 - 使用
super().__init__(**kwargs)可以完整继承父类的所有初始化参数,确保原类的所有功能都能正常使用。 - 自定义方法可自由添加,不会影响原类的任何功能。
内容的提问来源于stack exchange,提问作者Alex Plastow
相关产品推荐
相关产品推荐

