文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第51单元 在随机决策森林中生存
决策树是一种监督型的机器学习工具。它使用树形图这样的结构,其中每个节点包含对特定数据集属性的测试,与节点相关联的分支对应测试结果。树在使用前必须经过训练。训练的内容包括用树来表示各种预测因子以及相应的标签(特征),并相应地调整节点测试条件。(当然,这些训练工作是不需要手动完成的!)
随机决策森林回归使用一些(一整套)针对数据集各种子样本的分类决策树,并通过求预测结果的平均值以提高准确性。模块sklearn.ensemble提供了构造器RandomForestRegressor()。回归对象具有fit()、predict()等函数,它们与目前为止你在本章中看到的其他回归具有相同的语法和语义。
下面我们使用随机决策森林来分析波士顿地区的特征价格统计数据2,该数据是D. Harrison和D. Rubinfeld在1978年首先公布的。该数据集提供了506个房价中值(实验中的标签为mv)和14个其他变量(预测因子)。
2rcom.univie.ac.at/mirrors/lib.stat.cmu.edu/datasets/boston
rfr.py
from sklearn.ensemble import RandomForestRegressor import pandas as pd, numpy.random as rnd import matplotlib, matplotlib.pyplot as plt # 读取数据,准备两个随机的互补数据集 hed = pd.read_csv('Hedonic.csv') selection = rnd.binomial(1, 0.7, size=len(hed)).astype(bool) training = hed[selection] testing = hed[-selection] # 创建回归和预测集 rfr = RandomForestRegressor() predictors_tra = training.ix[:, "crim" : "lstat"] predictors_tst = testing.ix[:, "crim" : "lstat"] # 模型拟合 feature = "mv" ❶ rfr.fit(predictors_tra, training[feature]) # 选择一种美观的样式 matplotlib.style.use("ggplot") # 绘制预测结果 plt.scatter(training[feature], rfr.predict(predictors_tra), c="green", ❷ s=50) ❸ plt.scatter(testing[feature], rfr.predict(predictors_tst), c="red") plt.legend(["Training data", "Testing data"], loc="upper left") plt.plot(training[feature], training[feature], c="blue") plt.title("Hedonic Prices of Census Tracts in the Boston Area") plt.xlabel("Actual value") plt.ylabel("Predicted value") plt.savefig("../images/rfr.pdf")
我们使用训练数据集(从完整数据集中随机选择的)来拟合预测因子❶,然后在训练集(❷)以及未用于拟合的测试集(❸)上进行测试。由于预测特征mv不是离散的,这不利于使用混淆矩阵来评估模型质量。因此,我们采取了图形化的方式,结果表明两个数据集的预测质量至少是合理的。模型看起来相当准确,没有过拟合现象:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论