1.11.2. Random forests and other randomized tree ensembles 使用random forest对load_wine数据集进行分类(调参)画出图
时间: 2024-10-06 16:05:38 浏览: 30
php_Elgg开源SNS系统 v1.11.2.zip.zip
随机森林是一种集成学习方法,它通过构建众多决策树并取其平均结果来提高预测性能和减少过拟合的风险。在Python中,我们可以使用Scikit-learn库中的`RandomForestClassifier`来处理load_wine数据集。
首先,我们需要加载数据集,这里假设已经导入了pandas和sklearn的相关模块:
```python
import pandas as pd
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
# 加载wine数据集
wine = load_wine()
X = wine.data
y = wine.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建随机森林分类器,默认参数即可,也可以尝试调整参数如n_estimators(树的数量)
rf_clf = RandomForestClassifier()
# 训练模型
rf_clf.fit(X_train, y_train)
# 预测并计算准确率
y_pred = rf_clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
# 可视化随机森林重要特征
feature_importances_ = rf_clf.feature_importances_
sorted_idx = np.argsort(feature_importances_)
plt.figure(figsize=(10,5))
plt.barh(wine.feature_names[sorted_idx], feature_importances_[sorted_idx])
plt.title('Feature Importances')
plt.xlabel('Importance')
plt.show()
```
在这个例子中,我们没有特别调参,而是用了默认设置。如果你想优化随机森林,可以尝试调整`n_estimators`(树的数量)、`max_depth`(树的最大深度)等参数,并使用交叉验证来寻找最佳参数组合。绘制重要特征图可以帮助我们理解哪些特征对分类影响最大。
阅读全文