1. 使用sklearn实现随机森林分类,并分析特征的重要性
时间: 2023-11-22 12:53:47 浏览: 83
随机森林是一种集成学习算法,它由多个决策树组成。每个决策树都是根据输入数据的随机子集和随机特征构建的。在分类问题中,最终的预测结果是所有决策树的投票结果。在sklearn中,我们可以使用RandomForestClassifier类来实现随机森林分类。
下面是一个使用随机森林分类的示例:
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 创建随机森林分类器
rfc = RandomForestClassifier(n_estimators=100, random_state=0)
# 训练模型
rfc.fit(X_train, y_train)
# 预测测试集
y_pred = rfc.predict(X_test)
# 输出准确率
print("Accuracy:", rfc.score(X_test, y_test))
```
在上面的示例中,我们使用了sklearn自带的iris数据集,并将其分割为训练集和测试集。然后创建了一个有100个决策树的随机森林分类器,并使用训练集对其进行训练。最后,我们使用测试集进行预测,并输出了预测准确率。
要分析特征的重要性,我们可以使用sklearn中的`feature_importances_`属性。这个属性返回一个数组,其中每个元素表示每个特征的重要性得分。我们可以将这些得分可视化,以便更好地理解哪些特征对分类结果的影响最大。
下面是一个使用`feature_importances_`属性进行特征重要性分析的示例:
```python
import matplotlib.pyplot as plt
# 获取特征重要性得分
importances = rfc.feature_importances_
# 将得分可视化
plt.bar(range(X.shape[1]), importances)
plt.xticks(range(X.shape[1]), iris.feature_names, rotation=90)
plt.show()
```
在上面的示例中,我们首先使用`feature_importances_`属性获取每个特征的重要性得分。然后使用matplotlib库将这些得分可视化。其中,X.shape[1]表示数据集中的特征数量,iris.feature_names是数据集中每个特征的名称。我们还使用`rotation=90`旋转了x轴标签,以便更好地显示它们。
通过这个示例,我们可以看到哪些特征对于分类结果的影响最大。
阅读全文