【解答】决策树是分类还是回归

目录

一、决策树是分类还是回归

二、CART回归树和CART分类树的区别

2.1 CART分类树

2.2 CART回归树

三、CART分类树与回归树的实现

3.1 sklearn实现分类树

3.2 sklearn实现回归树


本文部分图文借鉴自《老饼讲解-机器学习》

一、决策树是分类还是回归

如果直接问决策树是分类还是回归,那么决策树既可以做分类,也可以做回归,

但这样的问答是不准确的,因为决策树有很多种

决策树从技术主线上来分,有两类:CART决策树、ID3系列决策树

其中ID3系列都是用于做分类的,只有CART之下的有关于做回归的回归树,也称为CART回归树

所以,准确来说,决策树有做分类的,也有做回归的,做分类的叫分类树,做回归的叫回归树

关于ID3和CART的区别可以参考:

老饼讲解|【决策树】决策树ID3算法icon-default.png?t=N7T8https://www.bbbdata.com/text/ml/186?f=wjx

二、CART回归树和CART分类树的区别

2.1 CART分类树

CART的分类树模型如下:

决策树是以树形结构表示的模型,其中每个内部节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。决策树模型具有计算复杂度不高、输出结果易于理解、对中间值的缺失不敏感、可以处理多种数据类型等优点。

2.2 CART回归树

而对于CART回归树,则主要是把分类节点上的样本Y值取平均值,作为叶子的回归值。

当样本落在叶子上时,回归值就是样本的预测值。

也就是说,CART回归树虽然是做回归,但它的输出不是连续的,而是枚举的。

三、CART分类树与回归树的实现

3.1 sklearn实现分类树

现已采集150组 鸢尾花数据,包括鸢尾花的四个特征与鸢尾花的类别。数据如下(即sk-learn中的iris数据):
 

 
花萼长度 sepal length (cm) 、花萼宽度 sepal width (cm)   
花瓣长度 petal length (cm) 、花瓣宽度 petal width (cm)  
山鸢尾:0,杂色鸢尾:1,弗吉尼亚鸢尾:2               

下面我们用鸢尾花的特征来预测鸢尾花的类别

在sklearn中代码实现如下:

from sklearn.datasets import load_iris
from sklearn import tree

#----------------数据准备----------------------------
iris = load_iris()                          # 加载数据

#---------------模型训练----------------------------------
clf = tree.DecisionTreeClassifier()         # sk-learn的决策树模型
clf = clf.fit(iris.data, iris.target)        # 用数据训练树模型构建()
r = tree.export_text(clf, feature_names=iris['feature_names'])


#---------------模型预测结果------------------------
text_x = iris.data[[0,1,50,51,100,101], :]
pred_target_prob = clf.predict_proba(text_x)        # 预测类别概率
pred_target = clf.predict(text_x)              # 预测类别

#---------------打印结果---------------------------
print("\n===模型======")
print(r)
print("\n===测试数据:=====")
print(text_x)
print("\n===预测所属类别概率:=====")
print(pred_target_prob)
print("\n===预测所属类别:======")
print(pred_target)

运行结果如下:

3.2 sklearn实现回归树

下面我们再根据花萼长度、花萼宽度、花瓣长度来可以预测花瓣宽度。由于花瓣宽度是数值,所以需要使用回归树。

在sklearn中实现回归树的代码如下:

from sklearn.datasets import load_iris
from sklearn import tree
import pandas as pd


#----------------数据准备----------------------------
iris = load_iris()                          # 加载数据
x = iris.data[:,0:3]
y =  iris.data[:,3]
feature_names = iris['feature_names'][0:3]
target_name = iris['feature_names'][3]
#---------------模型训练----------------------------------
clf = tree.DecisionTreeRegressor()         # sk-learn的决策树模型
clf = clf.fit(x, y)       # 用数据训练树模型构建()
r = tree.export_text(clf, feature_names=feature_names)


#---------------模型预测结果------------------------
text_x = x[[0,1,50,51,100,101], :]
test_y = y[[0,1,50,51,100,101]]
pred_target = clf.predict(text_x)              # 预测类别


df = pd.DataFrame()
df["原y"] = test_y
df["预测y"] = pred_target


#---------------打印结果---------------------------
print("\n===模型======")
print(r)
print("\n===预测结果======")
print(df)

运行结果如下:

如果觉得本文有帮助,点个赞吧!

  • 44
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,针对你的问题,我可以给出以下解答决策树是一种基于树结构的分类模型,它可以对数据进行分类或者回归。在分类问题中,决策树将数据分成多个类别,每个类别对应着树的一个叶子节点。在回归问题中,决策树给出了一个预测值,该值对应着树的一个叶子节点。 对于iris数据集,可以使用决策树对其进行分类。iris数据集包含了150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度),以及一个类别(三个类别分别为:Iris Setosa,Iris Versicolour,Iris Virginica)。 在建立决策树之前,需要将数据集分成训练集和测试集。然后,使用训练集来训练决策树模型,最后使用测试集来评估模型的性能。 在Python中,可以使用sklearn库来实现决策树分类。下面是一个简单的示例代码: ```python from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split # 加载数据集 iris = load_iris() # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42) # 建立决策树模型 clf = DecisionTreeClassifier() # 训练模型 clf.fit(X_train, y_train) # 在测试集上评估模型性能 score = clf.score(X_test, y_test) print("Model accuracy: %.2f%%" % (score * 100)) ``` 运行结果如下所示: ``` Model accuracy: 97.78% ``` 可以看出,使用决策树对iris数据集进行分类的准确率达到了97.78%。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值