鸢尾花——随机森林分类模型(RandomForestClassifier)

采用随机森林分类模型(RandomForestClassifier)再次训练上述鸢尾花数据集,具体要求如下:

1、使用pandas库再次读取数据集,得到相应矩阵,并进项相应的数据预处理:包括数据标准化与鸢尾花类别编码等。

2、采用决策树模型训练鸢尾花数据集,测试集取30%,训练集取70%。

3、特征选择标准criterion请选择 “entropy”,随机森林的子树个数“n_estimators”取值为10,在控制台打印出其测试集正确率。请分析该正确率是否比决策树分类模型正确率更高。

4、为了提升模型的泛化能力,请分别使用十折交叉验证,确定随机森林分类模型的参数max_depth(子树的最大深度)与n_estimators(子树个数)的最优取值。max_depth取值范围为1-5,n_estimators的取值范围为1-20。请在控制台输出这两个参数的最优取值。

from sklearn.model_selection import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
import pandas as pd
from sklearn.model_selection import ShuffleSplit
from sklearn.model_selection import cross_val_s
### 随机森林模型分类和回归任务中的应用 #### 分类任务的应用 随机森林作为一种集成学习方法,在分类任务中表现出色。该算法通过构建多个决策树,并采用多数表决法决定最终的类别标签[^2]。具体来说,每棵决策树都会独立地对输入数据进行分类预测;随后,整个随机森林会统计所有单个决策树给出的不同类别票数,选取得票最高的那一类作为最终输出。 这种机制有效降低了单一决策树可能带来的偏差风险,提高了模型的整体稳定性和准确性。此外,由于各子树之间存在一定的差异性(因为训练过程中引入了样本扰动和属性扰动),所以即使某些个体树出现了错误判断,也不太可能导致整体结果失真。 ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier import numpy as np # 加载鸢尾花数据集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3) # 创建随机森林分类器实例 clf = RandomForestClassifier(n_estimators=100) # 训练模型 clf.fit(X_train, y_train) # 测试模型精度 accuracy = clf.score(X_test, y_test) print(f'Accuracy on the test set is {np.round(accuracy*100, 2)}%') ``` #### 回归任务的应用 当应用于回归场景时,随机森林同样遵循类似的逻辑框架——即先建立一系列基于不同抽样集合生长出来的弱回归树,再通过对这些基础估计量求均值得到全局最优解[^3]。这种方法有助于平滑掉由单独一棵树所造成的过度拟合现象,使得预测曲线更加贴近真实分布趋势而不至于过分贴合噪声点。 值得注意的是,在执行回归分析之前,通常还需要考虑如何合理设置参数以优化性能表现,比如调整最大深度、最小分割节点数目等超参配置项。这样做可以在保持良好泛化能力的同时尽可能提升效率。 ```python from sklearn.datasets import make_regression from sklearn.model_selection import cross_val_score from sklearn.ensemble import RandomForestRegressor # 构造人工合成的回归问题 X_reg, y_reg = make_regression(n_samples=1000, n_features=20, noise=0.1) # 初始化随机森林回归器对象 regressor = RandomForestRegressor() # 使用交叉验证评估模型得分 scores = cross_val_score(regressor, X_reg, y_reg, cv=5) mean_score = scores.mean() std_deviation = scores.std() print(f'Mean Cross-Validated Score: {mean_score:.4f}') print(f'Standard Deviation of Scores: {std_deviation:.4f}') ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值