1 重要参数说明
DecisionTreeClassifier和DecisionTreeClassifier 重要参数调参注意点
参考网址:https://blog.csdn.net/akon_wang_hkbu/article/details/77621631
二者的不同之处——特征选择标准criterion
- DecisionTreeClassifier:
可以使用"gini"或者"entropy",前者代表基尼系数,一般说使用默认的基尼系数"gini"就可以了,即CART算法。后者代表信息增益,类似ID3, C4.5的最优特征选择方法。 - DecisionTreeRegressor:
可以使用"mse"或者"mae",前者是均方差,后者是和均值之差的绝对值之和。推荐使用默认的"mse"。一般来说"mse"比"mae"更加精确。除非你想比较二个参数的效果的不同之处。
2 实例演示
通过分析不同的数据集——鸢尾花数据集和波士顿房价数据集,来对DecisionTreeClassifier和DecisionTreeRegressor进行对比。
2.1 使用鸢尾花数据集
from sklearn import datasets
iris = datasets.load_iris() # 使用鸢尾花数据集
X = iris.data
y = iris.target
# 数据集分割为测试集和验证集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)
2.1.1 DecisionTreeClassifie分析
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier(random_state = 666, splitter='random',max_depth=2)
dt_clf.fit(X_train, y_train)
dt_clf.score(X_test, y_test)
- 0.9473684210526315
2.1.2 DecisionTreeRegressor分析
from sklearn.tree import DecisionTreeRegressor
dt_reg = DecisionTreeRegressor(random_state = 666,splitter='random', max_depth=2)
dt_reg.fit(X_train, y_train)
dt_reg.score(X_test, y_test)
- 0.9566117176907157
2.2 波士顿房价
# 导入工具库
import numpy as np
import matplotlib.pyplot as plt
# 导入数据集
from sklearn import datasets
boston = datasets.load_boston()
X = boston.data
y = boston.target
# 数据集分割为测试集和验证集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)
2.2.1 DecisionTreeClassifie分析
from sklearn.tree import DecisionTreeClassifier
dt_clf = DecisionTreeClassifier(random_state = 666, splitter='random',max_depth=2)
dt_clf.fit(X_train, y_train)
dt_clf.score(X_test, y_test)
ValueError: Unknown label type: 'continuous'
2.2.2 DecisionTreeRegressor分析
from sklearn.tree import DecisionTreeRegressor
dt_reg = DecisionTreeRegressor(random_state = 666,splitter='random', max_depth=2)
dt_reg.fit(X_train, y_train)
dt_reg.score(X_test, y_test)
- 0.4466697152787933
2.2.3 错误信息处理
ValueError: Unknown label type: 'continuous',错误原因是由于label的数据类型不是整型导致的数据格式错误,修改程序如下所示;将相应的训练集数据强制转换为整型数据。
# 导入数据集
from sklearn import datasets
boston = datasets.load_boston()
X = boston.data.astype(int)
y = boston.target.astype(int)
- DecisionTreeClassifie分析:0.09448818897637795
- DecisionTreeRegressor分析:0.3447286786029661
3 总结
- 1 对于鸢尾花数据集,决策树分类模型和回归模型在相同的参数下预测结果并没有太大的差异。
- 2 对于波士顿房价数据集,决策树分类模型和回归模型在相同的参数下预测结果有很大的差异。
- 3 在对数据进行整型转换之后,可以明显看出模型的预测精度有所下降。
- 4 针对具体的数据集应该采用相应的预测模型,实现具体问题具体分析的目的。
网友评论