随机森林调参_随机森林调参实战(信用卡欺诈预测)
时间: 2023-09-04 17:09:31 浏览: 114
随机森林是一种常用的机器学习算法,它可以用来解决分类和回归问题。在实际应用中,我们需要对随机森林进行调参来提高模型的性能。下面我们以信用卡欺诈预测为例,介绍如何进行随机森林的调参。
首先,我们加载数据集并进行预处理:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# 加载数据集
data = pd.read_csv('creditcard.csv')
# 特征选择,去掉时间列和标签列
features = data.iloc[:, 1:30].columns
# 数据标准化
scaler = StandardScaler()
data[features] = scaler.fit_transform(data[features])
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(data[features], data['Class'], test_size=0.3, random_state=0)
```
接着,我们构建随机森林模型,并进行初始训练:
```python
from sklearn.ensemble import RandomForestClassifier
# 构建随机森林模型
rfc = RandomForestClassifier()
# 训练模型
rfc.fit(X_train, y_train)
```
然后,我们可以使用交叉验证来选择最优的超参数组合。这里我们选择网格搜索的方式进行超参数调优:
```python
from sklearn.model_selection import GridSearchCV
# 设置超参数范围
param_grid = {
'n_estimators': [10, 50, 100, 200],
'max_depth': [3, 5, 7, 9],
'min_samples_split': [2, 4, 6],
'min_samples_leaf': [1, 2, 4]
}
# 网格搜索
grid_search = GridSearchCV(rfc, param_grid, cv=5, n_jobs=-1, verbose=1)
grid_search.fit(X_train, y_train)
# 输出最优参数组合
print(grid_search.best_params_)
```
最后,我们使用最优的超参数组合来训练模型,并在测试集上进行评估:
```python
# 使用最优超参数进行训练
rfc_best = RandomForestClassifier(**grid_search.best_params_)
rfc_best.fit(X_train, y_train)
# 在测试集上进行评估
y_pred = rfc_best.predict(X_test)
print('Accuracy:', metrics.accuracy_score(y_test, y_pred))
print('Precision:', metrics.precision_score(y_test, y_pred))
print('Recall:', metrics.recall_score(y_test, y_pred))
```
通过网格搜索,我们得到了最优的超参数组合,然后使用该组合训练模型,在测试集上得到了较好的性能。
阅读全文