请写一段代码,可视化你刚刚写的随机森林的模型调参过程
时间: 2024-05-06 21:15:07 浏览: 71
这里给出一份Python代码,使用了scikit-learn库的RandomForestRegressor类进行随机森林模型的调参,并使用了matplotlib库进行可视化展示:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 生成模拟数据
X, y = make_regression(n_samples=1000, n_features=10, noise=0.5, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义超参数的范围
n_estimators = [10, 50, 100, 200]
max_depth = [5, 10, 20, 30]
min_samples_split = [2, 5, 10, 20]
min_samples_leaf = [1, 2, 4, 8]
# 初始化空列表,用于记录不同超参数组合下的模型表现
results = []
# 循环遍历所有超参数组合
for n in n_estimators:
for d in max_depth:
for s in min_samples_split:
for l in min_samples_leaf:
# 构建随机森林模型
model = RandomForestRegressor(n_estimators=n, max_depth=d, min_samples_split=s, min_samples_leaf=l, random_state=42)
# 训练模型
model.fit(X_train, y_train)
# 预测结果
y_pred = model.predict(X_test)
# 计算MSE
mse = mean_squared_error(y_test, y_pred)
# 记录结果
results.append((n, d, s, l, mse))
# 将结果转化为numpy数组
results = np.array(results)
# 可视化不同超参数组合下的MSE
plt.figure(figsize=(12, 8))
plt.scatter(results[:, 0], results[:, 4], label='n_estimators')
plt.scatter(results[:, 1], results[:, 4], label='max_depth')
plt.scatter(results[:, 2], results[:, 4], label='min_samples_split')
plt.scatter(results[:, 3], results[:, 4], label='min_samples_leaf')
plt.legend()
plt.xlabel('Hyperparameter value')
plt.ylabel('MSE')
plt.title('Random Forest Hyperparameter Search')
plt.show()
```
这份代码会生成一个散点图,横轴是超参数的值,纵轴是在该超参数组合下的模型MSE。通过观察图像,我们可以看到不同超参数组合下的模型表现如何,从而选择最佳的超参数组合。
阅读全文