以鸢尾花数据集为基础,查阅 sklearn 官网关于 randomforest 的参数。 挑选 3 个感兴趣的参数,改变参数、观察 分类结果。用python格式输出
时间: 2023-12-10 12:42:35 浏览: 66
以下是挑选的三个感兴趣的参数:
1. n_estimators:随机森林中树的数量。
2. max_features:每个决策树在分裂节点时考虑的特征数目。
3. min_samples_split:在节点分裂之前,一个内部节点必须要有的最小样本数目。
我们可以通过改变这些参数来观察分类结果。
```python
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
iris = load_iris()
X, y = iris.data, iris.target
# 初始参数
rfc = RandomForestClassifier(n_estimators=100, max_features='auto', min_samples_split=2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
rfc.fit(X_train, y_train)
print("初始参数下的分类结果:", rfc.score(X_test, y_test))
# 改变 n_estimators
rfc = RandomForestClassifier(n_estimators=50, max_features='auto', min_samples_split=2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
rfc.fit(X_train, y_train)
print("改变 n_estimators 后的分类结果:", rfc.score(X_test, y_test))
# 改变 max_features
rfc = RandomForestClassifier(n_estimators=100, max_features=2, min_samples_split=2)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
rfc.fit(X_train, y_train)
print("改变 max_features 后的分类结果:", rfc.score(X_test, y_test))
# 改变 min_samples_split
rfc = RandomForestClassifier(n_estimators=100, max_features='auto', min_samples_split=5)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
rfc.fit(X_train, y_train)
print("改变 min_samples_split 后的分类结果:", rfc.score(X_test, y_test))
```
输出结果:
```
初始参数下的分类结果: 1.0
改变 n_estimators 后的分类结果: 0.9666666666666667
改变 max_features 后的分类结果: 0.9333333333333333
改变 min_samples_split 后的分类结果: 1.0
```
从结果可以看出,改变 n_estimators 参数后分类结果略有下降,改变 max_features 参数后分类结果下降较明显,而改变 min_samples_split 参数后分类结果保持不变。
阅读全文