树回归

本文探讨了如何应对数据集中输入与目标变量间的非线性关系,重点介绍了通过树回归来建模,包括回归树和模型树。CART算法被用于构建既能处理离散又能处理连续数据的二元树,并且通过预剪枝和后剪枝来防止过拟合。文章还提供了树回归的实现代码示例。
摘要由CSDN通过智能技术生成

  数据集中经常包含一些复杂的相互关系,使得输入数据和目标变量之间呈现非线性关系。对复杂的关系建模,一种方式用树对预测值分段,包括分段常数(回归树)和分段直线(模型树)。

        CART算法可以用于构建二元树并处理离散型或连续型数据的切分,对于过拟合可以采取剪枝的办法:预剪枝(在树的构建过程中剪枝)和后剪枝(当树构建完毕进行剪枝)。

       

       树回归的具体实现代码如下:

 

'''
Tree-Based Regression Methods

'''
from numpy import *

def loadDataSet(fileName):      #general function to parse tab -delimited floats
    dataMat = []                #assume last column is target value
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')
        fltLine = map(float,curLine) #map all elements to float()
        dataMat.append(fltLine)
    return dataMat

def binSplitDataSet(dataSet, feature, value):
    mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:][0]
    mat1 = dataSet[nonzero(dataSet[:,feature] <= value)[0],:][0]
    return mat0,mat1

def regLeaf(dataSet):#returns the value used for each leaf
    return mean(dataSet[:,-1])

def regErr(dataSet):
    return var(dataSet[:,-1]) * shape(dataSet)[0]

def linearSolve(dataSet):   #helper function used in two places
    m,n = shape(dataSet)
    X = mat(ones((m,n))); Y = mat(ones((m,1)))#create a copy of data with 1 in 0th postion
    X[:,1:n] = dataSet[:,0:n-1]; Y = dataSet[:,-1]#and strip out Y
    xTx = X.T*X
    if linalg.det(xTx) == 0.0:
        raise NameError('This matrix is singular, cannot do inverse,\n\
        try increasing the second value of ops'
在sklearn中,决策回归是通过构建回归来进行预测的。回归的结构与分类类似,但在叶节点上存储的是一个连续值,而不是离散的类别。通过对特征的逐层划分,回归可以将输入的样本分成不同的区域,并为每个区域预测一个连续的输出值。 决策回归的基本概念包括: 1. 回归的构建:从根节点开始,按照决策的分类属性逐层往下划分,直到叶节点,获得分类结果。 2. 分裂准则:决策回归使用的分裂准则一般是最小化平方误差(MSE)或平均绝对误差(MAE)。 3. 剪枝:为了防止过拟合,决策回归可以通过剪枝操作来降低模型复杂度。 在sklearn中,可以使用DecisionTreeRegressor类来构建决策回归模型。通过fit方法传入训练数据,模型会自动学习并构建回归。然后可以使用predict方法对新的数据进行预测,得到连续的输出值。 总结起来,sklearn的决策回归是一种基于回归的预测方法,通过对特征的逐层划分,将输入的样本分成不同的区域,并为每个区域预测一个连续的输出值。它是一种灵活且易于解释的预测模型,适用于处理连续型的目标变量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [sklearn中的决策回归)](https://blog.csdn.net/qq_33761152/article/details/123976106)[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_1"}}] [.reference_item style="max-width: 50%"] - *2* [机器学习--sklearn之决策(分类+回归)](https://blog.csdn.net/qq_36758914/article/details/104298371)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值