贝叶斯优化随机森林代码
时间: 2023-09-16 13:06:34 浏览: 115
下面是一个简单的贝叶斯优化随机森林的代码示例,使用了scikit-learn和scikit-optimize库:
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from skopt import BayesSearchCV
from skopt.space import Real, Integer, Categorical
# 生成随机数据集
X, y = make_classification(n_samples=1000, n_features=10, n_informative=3, n_redundant=0, random_state=42)
# 定义超参数搜索空间
search_space = {
'n_estimators': Integer(10, 100),
'max_depth': Integer(2, 10),
'min_samples_split': Integer(2, 20),
'min_samples_leaf': Integer(1, 10),
'max_features': Categorical(['auto', 'sqrt', 'log2']),
'bootstrap': Categorical([True, False])
}
# 定义贝叶斯优化搜索器
clf = RandomForestClassifier()
opt = BayesSearchCV(clf, search_space, n_iter=50, random_state=42)
# 进行优化搜索
opt.fit(X, y)
# 输出最优参数和准确率
print("Best parameters: ", opt.best_params_)
print("Best accuracy: ", opt.best_score_)
```
在这个例子中,我们使用make_classification函数生成了一个包含1000个样本和10个特征的随机二分类数据集。然后,我们定义了随机森林的超参数搜索空间,包括n_estimators(树的数量)、max_depth(树的最大深度)、min_samples_split(分裂节点所需的最小样本数)、min_samples_leaf(每个叶子节点所需的最小样本数)、max_features(每个节点可用于拆分的最大特征数)和bootstrap(是否使用bootstrap样本)。然后,我们使用BayesSearchCV搜索器在这个搜索空间中进行了50次迭代的贝叶斯优化搜索。最后,我们输出了找到的最优参数和对应的准确率。
阅读全文