前情提要:
(1)回归处理的是连续型变量
(2)分类处理的是分类型变量
回归树:
几乎所有参数,属性及接口都和分类树一摸一样。需要注意的是,在回归树中,没有标签分布是否均衡的问题,因此没有class_weight这样的参数
criterion:
(1)分类树:不纯度的计算。可以选择基尼系数(gini)或者信息熵(entropy)
(2)回归树:没有不纯度的计算。因为处理连续型变量,和分类型变量有区别。
【criterion重要参数】
回归树衡量分枝质量的指标,支持的标准有3种:
(1)mse:均方误差mean squared error。在回归中最常用,mse越小越好。这种方法通过使用叶子节点的均值来最小化L2损失。本质是样本真实数据与回归结果的差异 。
(2)friedman_mse:费尔德曼均方误差。这种指标使用费尔德曼针对潜在分枝中的问题改进后的均方误差。
(3)mae:绝对平均误差mean absolute error。这种指标使用叶节点的中值来最小化L1损失。
【重要属性】
(1)clf.feature_importances_
【重要接口】
apply,fit,predict,score
注意:(1)回归树的接口score返回的是R平方,并不是MSE。
(2)R平方可以为正为负(如果模型的残差平方和远远大于模型的总平方和,模型非常糟糕,R平方就会为负)。而均方误差永远为正。
(3)虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算“负均方误差”
'''
交叉验证cross_val_score:
(1)避免测试集和训练集的划分导致模型不同的常用方法
(2)将数据划分为n份,依此使用其中一份作为测试集,其他n-1份作为训练集。因此用交叉验证n次的结果求出的平均值,是对模型效果的一个更好的度量
'''
from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
'''
【注意】
(1)回归树不需要划分训练集和测试集,因为交叉验证会自动划分数据集。
(2)而分类树需要划分训练集和测试集。
【cross_val_score】
(1)regressor 前面写啥,这里就写啥
(2)boston.data 只需要给出完整数据,不需要划分训练集和测试集
(3)boston.target 只需要给出完整数据,不需要划分训练集和测试集
(4)cv 把数据划分为10份,其中1份作为测试集,而另外9份作为训练集。一共做10次交叉验证。
(5)scoring = 'neg_mean_squared_error' 若不填此值,则返回R平方。若填此值,则返回负的均方误差
【cross_val_score输出结果】
(1)默认返回R平方,可能为正为负。若使用R平方来评估模型,则R平方越接近1越好。 R平方范围:[-1,1],越接近1越好。越大越好。
(2ÿ