【发布时间】:2021-12-12 13:22:05
【问题描述】:
根据金融机器学习的最新进展(Marcos Lopez del Prado,2018 年),我实现了上述书中描述的“顺序引导”。我想修改 Scikit-learn 类 RandomForestClassifier,以最大限度地提高样本的唯一性,采用“顺序引导”产生的预定义样本系列。我无法获得有关如何修改所述课程的任何指导。有什么想法吗?
如果尝试通过继承基类 RandomForestClassifier 的自定义类 (CustomRF) 进行操作,我注意到如果我们使用帮助函数检查 RandomForestClassifier 继承自哪些方法,则输出如下:
Method resolution order:
CustomRF
sklearn.ensemble._forest.RandomForestClassifier
sklearn.ensemble._forest.ForestClassifier
sklearn.base.ClassifierMixin
sklearn.ensemble._forest.BaseForest
sklearn.base.MultiOutputMixin
sklearn.ensemble._base.BaseEnsemble
sklearn.base.MetaEstimatorMixin
sklearn.base.BaseEstimator
builtins.object
如果我们检查从sklearn.ensemble._forest.BaseForest 继承的内容,我们会得到:
apply(self,X)
decision_path(self,X)
fit(self,X,y,sample_weight = False)
所以这些是我们可以修改的方法。如果我们深入了解这三种方法并专注于fit(self,X,y,sample_weight = False)
它与调用_generate_sample_indices 的私有方法_parallel_build_trees 交互(方法如下所示):
def _generate_sample_indices(random_state, n_samples, n_samples_bootstrap):
"""
Private function used to _parallel_build_trees function."""
random_instance = check_random_state(random_state)
sample_indices = random_instance.randint(0, n_samples, n_samples_bootstrap)
return sample_indices
这是随机抽取样本的地方。我想要的是强制那些 sample_indices 由“sequential bootstrap”产生。那么回到 CustomRF 类,我如何修改 fit() 模型以最终得到 _generate_sample_indices 修改?
【问题讨论】:
标签: python scikit-learn random-forest