用2500条数据,其二分类比例为2.5:1的数据训练随机森林模型,参数如何调整的代码
时间: 2024-02-09 20:10:38 浏览: 109
首先,我们需要将数据集划分为训练集和测试集,一般建议将数据集的70%作为训练集,30%作为测试集。可以使用sklearn中的train_test_split函数进行划分。示例代码如下:
```python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
其中,X表示特征矩阵,y表示标签向量,test_size表示测试集占比,random_state表示随机种子。
接下来,我们需要建立随机森林模型,并调整模型参数。常用的模型参数包括n_estimators(决策树个数)、max_depth(最大深度)、min_samples_split(最小分割样本数)等。可以使用sklearn中的RandomForestClassifier类进行建模,并使用GridSearchCV函数进行网格搜索调参。示例代码如下:
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
# 建立随机森林模型
rf = RandomForestClassifier(random_state=42)
# 设置参数范围
param_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [None, 10, 20, 30],
'min_samples_split': [2, 5, 10],
}
# 网格搜索调参
grid_search = GridSearchCV(rf, param_grid=param_grid, cv=5, scoring='roc_auc')
grid_search.fit(X_train, y_train)
# 输出最佳参数
print("Best parameters: {}".format(grid_search.best_params_))
# 在测试集上评估模型性能
rf_best = grid_search.best_estimator_
y_pred = rf_best.predict(X_test)
print("Accuracy on test set: {:.3f}".format(rf_best.score(X_test, y_test)))
```
其中,cv表示交叉验证折数,scoring表示评估指标,例如roc_auc(ROC曲线下面积)、accuracy(准确率)等。
最后,我们可以使用测试集评估模型性能,并输出最佳参数。
阅读全文