【发布时间】:2016-07-30 06:37:45
【问题描述】:
我正在使用下面的工作流程来训练随机森林分类器以供生产使用。我正在使用 RandomizedSearchCV 通过打印结果来调整分类器的参数,然后使用 RandomizedSearchCV 的结果创建一个新管道。我认为必须有一种方法可以简单地将 RandomizedSearchCV 的最佳结果指向分类器,这样我就不必手动执行此操作,但我不知道如何操作。
select = sklearn.feature_selection.SelectKBest(k=40)
clf = sklearn.ensemble.RandomForestClassifier()
steps = [('feature_selection', select),
('random_forest', clf)]
parameters = {"random_forest__max_depth": [3, None],
"random_forest__max_features": sp_randint(1, 21),
"random_forest__min_samples_split": sp_randint(1, 21),
"random_forest__min_samples_leaf": sp_randint(1, 21),
"random_forest__bootstrap": [True, False],
"random_forest__criterion": ["gini", "entropy"]}
pipeline = sklearn.pipeline.Pipeline(steps)
n_iter_search = 20
cv = RandomizedSearchCV(pipeline, param_distributions = parameters, n_iter=n_iter_search)
cv.fit(X,y)
【问题讨论】:
-
你能提供更多关于你想要做什么的细节吗?你试过什么代码?
-
我想我实际上可能已经解决了我自己的问题。我没有意识到 cv 对象实际上是一个随机森林分类器,它找到了最好的参数(这是我想要的)。我想我需要创建一个新的 RF 分类器并传递搜索结果。
标签: python scikit-learn data-science