返回介绍

第51单元 在随机决策森林中生存

发布于 2024-01-28 22:01:16 字数 2122 浏览 0 评论 0 收藏 0

决策树是一种监督型的机器学习工具。它使用树形图这样的结构,其中每个节点包含对特定数据集属性的测试,与节点相关联的分支对应测试结果。树在使用前必须经过训练。训练的内容包括用树来表示各种预测因子以及相应的标签(特征),并相应地调整节点测试条件。(当然,这些训练工作是不需要手动完成的!)

随机决策森林回归使用一些(一整套)针对数据集各种子样本的分类决策树,并通过求预测结果的平均值以提高准确性。模块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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文