【发布时间】:2014-06-04 04:38:44
【问题描述】:
我的目标是使用一个模型来选择最重要的变量,并使用另一个模型来使用这些变量进行预测。在下面的示例中,我使用了两个 RandomForestClassifier,但第二个模型可以是任何其他分类器。
RF 有一个带有阈值参数的变换方法。我想对不同的可能阈值参数进行网格搜索。
这里是一个简化的代码sn-p:
# Transform object and classifier
rf_filter = RandomForestClassifier(n_estimators=200, n_jobs=-1, random_state=42, oob_score=False)
clf = RandomForestClassifier(n_jobs=-1, random_state=42, oob_score=False)
pipe = Pipeline([("RFF", rf_filter), ("RF", clf)])
# Grid search parameters
rf_n_estimators = [10, 20]
rff_transform = ["median", "mean"] # Search the threshold parameters
estimator = GridSearchCV(pipe,
cv = 3,
param_grid = dict(RF__n_estimators = rf_n_estimators,
RFF__threshold = rff_transform))
estimator.fit(X_train, y_train)
错误是ValueError: Invalid parameter threshold for estimator RandomForestClassifier
我认为这会起作用,因为the docs 说:
如果 None 并且如果可用,则使用对象属性阈值。
我尝试在网格搜索(rf_filter.threshold = "median")之前设置阈值属性并且它起作用了;但是,我不知道如何对其进行网格搜索。
有没有一种方法可以迭代通常期望在分类器的变换方法中提供的不同参数?
【问题讨论】:
标签: python machine-learning scikit-learn pipeline