admin管理员组

文章数量:823369

机器学习(二)决策树的比较以房屋价格预测为例

实验内容

使用普通的决策树回归器和带AdaBoost算法的决策树回归器预测房屋价格,评价两种回归器的训练效果

实验步骤

(1) 创建一个新的Python文件housing.py,然后加入下面的代码

import numpy as np
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn import datasets
from sklearn.metrics import mean_squared_error,explained_variance_score
from sklearn.utils import shuffle
import matplotlib.pyplot as plt

(2) 使用scikit-learn上数据接口加载网上的标准房屋价格数据库

housing_data = datasets.load_boston()# 加载数据

(3) 接下来把输入数据与输出结果分成不同的变量。我们可以通过shuffle函数把数据的顺 序打乱:

X, y = shuffle(housing_data.data, housing_data.target, random_state=7)# random_state 控制如何打乱数据

(4) 接下来把数据 分成训练数据集和测试数据集,其中80%的数据用于训练,剩余20%的数据用于测试:

num_training = int(0.8*len(X))
X_train, y_train = X[:num_training], y[:num_training]
X_test, y_test = X[num_training:], y[num_training:]

(5) 现在已经可以拟合一个决策树回归模型了。选一个最大深度为4的决策树,这样可以限制 决策树不变成任意深度:

dt_regressor = DecisionTreeRegressor(max_depth=4)
dt_regressor.fit(X_train, y_train)

(6) 再用带AdaBoost算法的决策树回归模型进行拟合

ab_regressor = AdaBoostRegressor(DecisionTreeRegressor(max_depth=4),n_estimators=400, random_state=7)
# 第一个参数是基分类器,n_estimators 基分类器循环次数,random_state随机种子设置
ab_regressor.fit(X_train, y_train)

(7) 接下来评价决策树回归器的训练效果

y_pred_dt = dt_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_dt)
evs = explained_variance_score(y_test, y_pred_dt)
print("\n#### Decision Tree 性能表现 ####")
print("Mean squared error(均方误差) =", round(mse, 2))
print("Explained variance score(可释方差分数) =", round(evs, 2))

(8) 现在评价一下AdaBoost算法改善的效果:

y_pred_ab = ab_regressor.predict(X_test)
mse = mean_squared_error(y_test, y_pred_ab)
evs = explained_variance_score(y_test, y_pred_ab)
print("\n#### AdaBoost 性能表现 ####")
print("Mean squared error(均方误差)  =", round(mse, 2))
print("Explained variance score (可释方差分数)=", round(evs, 2))

实验结果

实验结论

使用带AdaBoost的决策树得到的均方误差更小,优于普通决策树,这是因为AdaBoost是一种集成学习方法,其工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器数目n_estimator达到事先指定的值T,最终将这T个基学习器进行加权结合

本文标签: 机器学习(二)决策树的比较以房屋价格预测为例