python机器学习——实现bagging及随机森林(回归)

实现bagging及随机森林(回归)

本文我们依然使用波士顿房价数据作为案例,进行分析。

数据预处理

# 从 sklearn.datasets 导入波士顿房价数据读取器。
from sklearn.datasets import load_boston
# 从读取房价数据存储在变量 boston 中。
boston = load_boston()

# 从sklearn.cross_validation 导入数据分割器。
from sklearn.model_selection import train_test_split
X = boston.data
y = boston.target
# 随机采样 25% 的数据构建测试样本,其余作为训练样本。
X_train, X_test, y_train, y_test = train_test_split(X,
                                                    y,
                                                    random_state=33,
                                                    test_size=0.25)
                                                    
# 从 sklearn.preprocessing 导入数据标准化模块。
from sklearn.preprocessing import StandardScaler
# 分别初始化对特征和目标值的标准化器。
ss_X = StandardScaler()
ss_y = StandardScaler()
# 分别对训练和测试数据的特征以及目标值进行标准化处理。
X_train = ss_X.fit_transform(X_train)
X_test = ss_X.transform(X_test)
y_train = ss_y.fit_transform(y_train.reshape(-1,1))
y_test = ss_y.transform(y_test.reshape(-1,1))                                                

bagging 实现

from sklearn.ensemble import BaggingRegressor
bagr = BaggingRegressor()
bagr.fit(X_train, y_train)
bagr_y_predict = bagr.predict(X_test)

from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
# 使用 R-squared、MSE 以及 MAE 指标对默认配置的随机回归森林在测试集上进行性能评估。
print('R-squared value of BaggingRegressor:', bagr.score(X_test, y_test))

print('The mean squared error of BaggingRegressor:', mean_squared_error(
    ss_y.inverse_transform(y_test), ss_y.inverse_transform(bagr_y_predict)))

print('The mean absoluate error of BaggingRegressor:', mean_absolute_error(
    ss_y.inverse_transform(y_test), ss_y.inverse_transform(bagr_y_predict)))

在这里插入图片描述

随机森林实现

from sklearn.ensemble import RandomForestRegressor
rfr = RandomForestRegressor()

rfr.fit(X_train, y_train)

rfr_y_predict = rfr.predict(X_test)

from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error
# 使用 R-squared、MSE 以及 MAE 指标对默认配置的随机回归森林在测试集上进行性能评估。
print('R-squared value of RandomForestRegressor:', rfr.score(X_test, y_test))

print('The mean squared error of RandomForestRegressor:', mean_squared_error(
    ss_y.inverse_transform(y_test), ss_y.inverse_transform(rfr_y_predict)))

print('The mean absoluate error of RandomForestRegressor:', mean_absolute_error(
    ss_y.inverse_transform(y_test), ss_y.inverse_transform(rfr_y_predict)))

在这里插入图片描述

我们可以看出,随机森林 R 2 R^2 R2要高于bagging,在MAE和MSE,方面随机森林要小于bagging,因此我们验证了一般情况下相较于bagging模型,随机森林的优越性。

**注意:**这里的bagging模型的基模型为决策树。

参考

[1] 李航. 统计学习方法[M]. 清华大学出版社, 北京, 2012.
[2] 周志华. 机器学习[M]. 清华大学出版社, 北京, 2016.
[3] 范淼,李超.Python 机器学习及实践[M].清华大学出版社, 北京, 2016.

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
随机森林回归是一种机器学习算法,适用于回归问题。它通过在不同的随机选择的样本子集上训练多个决策树,并对预测结果取平均,来进行整体预测。这个过程被称为Bagging。 在Python中,使用Scikit-Learn模块来实现随机森林回归相对简单,并且不需要了解所有细节。下面是随机森林回归的一般步骤: 1. 导入必要的库和模块,例如`sklearn.ensemble`中的`RandomForestRegressor`。 2. 准备好特征矩阵和标签向量,将数据集分为训练集和测试集。 3. 创建随机森林回归模型对象,并设置相关参数,如决策树的数量、最大深度等。 4. 使用训练集来拟合模型,即训练随机森林回归模型。 5. 使用测试集来评估模型的性能,可以使用各种指标,如均方误差(MSE)和决定系数(R^2)等。 6. 可以根据需要对模型进行调优,例如调整参数,或者使用交叉验证等。 随机森林回归算法比其他常见且流行的算法更适合回归问题,因为它对训练集中的噪声不敏感,并且更有利于得到一个稳健的模型。它比单个决策树更稳健,因为它使用一组不相关的决策树,从而避免过拟合的问题。 然而,随机森林回归也有一些缺点。主要的缺点是它的复杂性。由于需要将大量的决策树连接在一起,随机森林回归需要更多的计算资源和时间进行训练。此外,随机森林也可能存在过拟合的问题,需要进行相应的调优和控制。 综上所述,通过使用Python中的Scikit-Learn模块,可以相对简单地实现随机森林模型回归,并且它在处理回归问题时具有较好的性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [用Python实现随机森林回归](https://blog.csdn.net/wokaowokaowokao12345/article/details/109441753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值