用Python训练随机森林回归模型,基于袋外误差率计算自变量的特征重要度,并将结果可视化
时间: 2024-05-15 10:16:35 浏览: 130
python与随机森林实现分类与回归
5星 · 资源好评率100%
以下是使用Python训练随机森林回归模型,基于袋外误差率计算自变量的特征重要度,并将结果可视化的示例代码:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
# 读取数据
data = pd.read_csv('data.csv')
# 将自变量和因变量分开
X = data.drop(['y'], axis=1).values
y = data['y'].values
# 训练随机森林回归模型
rf = RandomForestRegressor(n_estimators=100, oob_score=True, random_state=42)
rf.fit(X, y)
# 计算袋外误差率
oob_error = 1 - rf.oob_score_
print('袋外误差率:', oob_error)
# 计算特征重要度
importances = rf.feature_importances_
# 将特征重要度按降序排序
indices = np.argsort(importances)[::-1]
# 输出每个特征的重要度和排名
for f in range(X.shape[1]):
print('%d. 特征 %d (%f)' % (f + 1, indices[f], importances[indices[f]]))
# 可视化特征重要度
plt.figure()
plt.title('特征重要度')
plt.bar(range(X.shape[1]), importances[indices])
plt.xticks(range(X.shape[1]), indices)
plt.xlim([-1, X.shape[1]])
plt.show()
```
其中,`data.csv`是包含自变量和因变量的数据文件。在训练随机森林回归模型时,我们设置了100棵树,并启用了袋外误差率计算。在计算特征重要度时,我们使用了随机森林模型的`feature_importances_`属性,它返回一个数组,其中每个元素表示对应特征的重要度。最后,我们按降序排序并可视化特征重要度。
阅读全文