当前位置: 首页 > article >正文

bagging(main: RF随机森林) 回归器

"""
  一个原始数据的bagging回归
  编辑代码思想的步骤:
             1. 根据要实现的需求,导入数据处理和功能调用的包/模块
             2. 创建数据
             3. 创建变量n_tree:集成回归器棵数
             4. 创建存储回归器的存储器
             5. 循环1-n_tree的训练和预测:
                                     训练 01:训练循环体中选用抽取方式并调用
                                     训练 02:将x,y从数据表格中取出
                                     训练 03:实例化回归器
                                     训练 04:训练
                                     训练 05:每循环一次回归器存储到存储器
                                     预测 01:重新创建X,Y变量取出数据
                                     预测 02:初始化回归器计算的总值total
                                     预测 03:预测循环体中存储器每一次的predict()
                                     预测 04:total/n_tree 求平均
                                     预测 05:预测y
             6. 打分
"""
# 集成学习有3种思想:bagging(RF随机森林), boosting(AdaBoost and GBDT), and stacking
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import r2_score

df_r = pd.DataFrame([[1, 10.56],
                   [2, 27],
                   [3, 39.1],
                   [4, 40.4],
                   [5, 58],
                   [6, 60.5],
                   [7, 79],
                   [8, 87],
                   [9, 90],
                   [10, 95]],
                    columns=['X', 'Y'])
print(df_r)

n_T = 10
Models = []

for i in range(n_T):
    df2 = df_r.sample(frac=1.0, replace=True)
    X = df_r.iloc[:, :-1]
    Y = df_r.iloc[:, -1]
    model = DecisionTreeRegressor(max_depth=1)
    model.fit(X, Y)
    Models.append(model)

# 预测
x = df_r.iloc[:,:-1]
y = df_r.iloc[:,-1]
total = np.zeros(df_r.shape[0])
for t in range(n_T):
    total += Models[t].predict(x)
y_hat = total/n_T
print('y_hat:', y_hat)
# 打分
print("R:", r2_score(y, y_hat))

# 回归器只回归一次的案例
model02 = DecisionTreeRegressor(max_depth=1)
model02.fit(x, y)
y_hat02 = model02.predict(x)
print('#' * 100)
print("y_hat02:", y_hat02)
print("One R:", r2_score(y, y_hat02))


    X      Y
0   1  10.56
1   2  27.00
2   3  39.10
3   4  40.40
4   5  58.00
5   6  60.50
6   7  79.00
7   8  87.00
8   9  90.00
9  10  95.00
y_hat: [29.265 29.265 29.265 29.265 78.25  78.25  78.25  78.25  78.25  78.25 ]
R: 0.7622123252516444
####################################################################################################
y_hat02: [29.265 29.265 29.265 29.265 78.25  78.25  78.25  78.25  78.25  78.25 ]
One R: 0.7622123252516444

Process finished with exit code 0
 


http://www.kler.cn/a/15531.html

相关文章:

  • sql中的聚合函数
  • DB Type
  • 数据库的隔离机制---对MySQL 默认隔离级别的理解
  • http响应码https的区别
  • 针对股票评论的情感分类器
  • 开源共建 | 长安链开发常见问题及规避
  • 神奇的饼状图:如何用最简单的方式呈现复杂的数据
  • layui入门使用文档(包含几个重要的组件)
  • mysql语句高级用法使用记录和sql_mode=only_full_group_by错误解决
  • LeetCode笔记:Weekly Contest 342
  • 快手智能处理与编码算法产品化之路
  • 7-4 多态练习-计算面积
  • 如何实现U盘低格?这样操作快速搞定!
  • [python][vpython]用vpython实现小球砸弹簧代码
  • 十四、51单片机之AD转换
  • 第五章 资源包使用
  • 代码随想录算法训练营第58天|739. 每日温度,496.下一个更大元素 I
  • MongoDB (一) Java使用MongoDB[CURD]
  • python@可变对象和不可变对象@按值传递和引用传递@python运行可视化工具
  • Leetcode力扣秋招刷题路-0852
  • 优思学院|精益生产为企业带来革命性转变的效益
  • Linux centos重装yum
  • GCM与CCM的的规格和加解密过程
  • 网页爬虫之WebPack模块化解密(JS逆向)
  • 学习笔记-主成分分析法
  • SpringBoot+Vue3实现登录验证码功能