【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

这篇具有很好参考价值的文章主要介绍了【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

随机森林算法

随机森林(Random Forest)算法 是一种 集成学习(Ensemble Learning)方法,它由多个决策树组成,是一种分类、回归和特征选择的机器学习算法。

在随机森林中,每个决策树都是独立地训练的,每棵树的建立都是基于随机选取的 特征子集 和随机选取的 训练样本集

  • 在分类问题中,随机森林采用投票的方式来决定最终分类结果;
  • 在回归问题中,随机森林采用平均值的方式来预测结果。

对于随机森林算法,必须知道的几个概念包括:

  1. 怎样选取的特征子集以及训练样本集;
  2. 我们很清楚决策树如何对分类值做出分类处理,然而决策树如何对连续值做出的分类处理?

对于第一个问题,很好回答和理解,所谓特征子集以及训练样本集,其实就是为了防止森林中所有的决策树的训练集一样,因为如果决策树的所有训练集一样,那就没有意义建造森林了。而抽取的方法有很多,最简单就像从口袋中抽球一样,随机抽出放回;将抽出的球构成训练样本集。

而对于第二个问题,就需要深思熟虑一下,首先需要理解的是:

  • 对于全都是数字的训练集数据特征值,决策树在选取划分特征时通常会采用方差(Variance)或均方差(Mean Squared Error)来衡量特征的重要性,以找到能够最大化减少样本方差划分特征。

  • 对于全都是分类的训练集数据特征,决策树在选取划分特征时通常会采用信息增益(Information Gain)来衡量特征的重要性,所谓最大信息增益,即最大化减少熵的选择。

其次,对于连续型特征,如体重、身高等等,采用二分法进行划分。具体来说,通过在特征值中选择一个分裂点,即可以将整个特征值数组分为两类的点,通常分裂点的选择有两种策略:

  1. 选择中位数:一种常见的选择分裂点的方法是选择特征值的中位数作为分裂点。具体来说,可以按照该特征值从小到大进行排序,然后选择中间位置上的值作为分裂点。
  2. 选择平均值:另一种选择分裂点的方法是选择特征值的平均值作为分裂点。具体来说,可以计算该特征值的平均值,并将其作为分裂点。

然后计算每个属性分裂后的哪个的方差减少值最大,即选择其作为分类选择。

下述内容将围绕随机森林算法实现一个著名的连续值分类问题:即波士顿房价预测。而实现分类问题,即通过随机森林算法预测“鸢尾花”在【机器学习】P24 随机森林算法(1) 实现 “鸢尾花” 预测 中呈现;


随机森林算法实现波士顿房价预测

波士顿房价数据与特征:
波士顿房价数据集是一个经典的回归问题数据集,包含了波士顿地区不同城镇的房屋价格及其相关的属性数据。该数据集共有506个样本,每个样本有13个属性,分别是:

  • CRIM:城镇人均犯罪率
  • ZN:占地面积超过2.5万平方英尺的住宅用地比例
  • INDUS:城镇中非零售营业面积的比例
  • CHAS:查尔斯河虚拟变量(如果是河流,则为1;否则为0)
  • NOX:一氧化氮浓度(每千万分之一)
  • RM:每个住宅的平均房间数
  • AGE:1940年以前建造的自有住房的比例
  • DIS:到波士顿五个就业中心的加权距离
  • RAD:径向公路的可达性指数
  • TAX:每10,000美元的全值财产税率
  • PTRATIO:城镇中的学生与教师比例
  • B:黑人的比例(1000(Bk - 0.63)^ 2),其中Bk是城镇中黑人的比例
  • LSTAT:人口中地位低下者的比例

下面是通过pandas展示前十条数据的代码示例:

import pandas as pd

# 加载波士顿房价数据集
from sklearn.datasets import load_boston
boston = load_boston()

df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['PRICE'] = boston.target
df.insert(0, "Index", df.index+1)

print(df.head(10).to_string(index=False))

【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

随机森林预测波士顿房价的操作步骤:

  • 首先导入了需要的库和数据集;
  • 然后将数据集拆分为训练集和测试集;
  • 接下来,创建一个包含10个决策树的随机森林分类器 n_estimators=10,并使用训练集拟合模型;
  • 需要注意的是,因为波士顿房价数据是一个线性回归数据,并非分类数据,所以要使用 RandomForestRegressor
  • 然后使用测试集预测结果,并计算模型的均方误差。
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加载 boston 数据集
boston = load_boston()
X, y = boston.data, boston.target

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

# 创建随机森林回归器
rf = RandomForestRegressor(n_estimators=10, random_state=42)

# 使用训练集拟合模型
rf.fit(X_train, y_train)

# # # 获取每个决策树的预测结果
tree_predictions = []
for tree in rf.estimators_:
    tree_predictions.append(tree.predict(X_test))

# 预测测试集
y_pred = rf.predict(X_test)

# # # 打印每个决策树的前十个测试案例的预测结果
for i, tree_prediction in enumerate(tree_predictions):
    print(f"Tree {i} predictions:", tree_prediction[:10])

# # # 打印随机森林的前十个测试案例的预测结果
print("预测结果为:", y_pred[:10])
print("实际结果为:", y_test[:10])

# 计算模型的均方误差
mse = mean_squared_error(y_test, y_pred)
print("MSE:", mse)

【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

当然,最后可通过输入十三个属性来获取预测的房价:文章来源地址https://www.toymoban.com/news/detail-429345.html

# 预测房价
new_data = [[0.03, 18, 2.31, 0, 0.54, 6.57, 89.8, 2.5052, 1, 296, 15.3, 394.72, 8.23]]  # 新样本的特征值
predicted_price = rf.predict(new_data)
print("Predicted price:", predicted_price)

到了这里,关于【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】python实现随机森林

    目录 一、模型介绍 1. 集成学习 2. bagging 3. 随机森林算法 二、随机森林算法优缺点 三、代码实现 四、疑问 五、总结 本文使用mnist数据集,进行随机森林算法。 集成学习通过训练学习出多个估计器,当需要预测时通过结合器将多个估计器的结果整合起来当作最后的结果输出。

    2024年02月05日
    浏览(49)
  • 机器学习算法:线性回归、逻辑回归、决策树和随机森林解析

    引言 机器学习算法是人工智能领域的核心,它们用于解决各种问题,从预测房价到图像分类。本博客将深入探讨四种常见的机器学习算法:线性回归、逻辑回归、决策树和随机森林。 线性回归 什么是线性回归? 线性回归是一种用于建立连续数值输出的机器学习模型的算法。

    2024年02月10日
    浏览(53)
  • 机器学习实战6-糖尿病疾病的预测与分析(随机森林算法)

    大家好,我是微学AI,今天给大家介绍一下机器学习实战6-糖尿病疾病的预测与分析(随机森林算法),糖尿病是一种常见的慢性代谢性疾病,由于生活方式及基因等因素的影响,全球范围内糖尿病患者人数不断增加。预测糖尿病的发生有助于早期筛查和干预治疗,以降低糖尿

    2024年02月04日
    浏览(48)
  • 七个常用的机器学习算法详解:决策树与随机森林的深入解析

    hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年+经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在机器学习中,决策树和随机森林是两个非常常用的算法。它们都属于监督学习的范畴,可以用于分类和回归问题。本文将对

    2024年02月19日
    浏览(47)
  • 【机器学习算法】决策树和随机森林在计算机视觉中的应用

    决策树和随机森林在计算机视觉中有着广泛的应用。决策树作为一种简单而强大的分类模型,可以用于图像分类、目标检测、特征提取等任务。它能够根据图像的特征逐层进行判断和分类,从而实现对图像数据的智能分析和理解。随机森林作为一种集成学习方法,利用多棵决

    2024年04月13日
    浏览(61)
  • python机器学习——分类模型评估 & 分类算法(k近邻,朴素贝叶斯,决策树,随机森林,逻辑回归,svm)

    交叉验证:为了让被评估的模型更加准确可信 交叉验证:将拿到的数据,分为训练和验证集。以下图为例:将数据分成5份,其中一份作为验证集。然后经过5次(组)的测试,每次都更换不同的验证集。即得到5组模型的结果,取平均值作为最终结果。又称5折交叉验证。 通常情

    2024年02月03日
    浏览(67)
  • 【机器学习】R语言实现随机森林、支持向量机、决策树多方法二分类模型

    暑期简单学习了机器学习理论知识,当时跟着B站咕泡老师学的,内容讲得蛮详细,实例代码、资料都比较全面,但是学校Python课程开设在这学期,所以用Python进行数据分析、建模等不是很熟悉,所以决定用之前学过的R语言来实现机器学习。R语言的相关包也都比较完善,所以

    2024年02月04日
    浏览(44)
  • 机器学习算法原理lightgbm、word2vec、cnn、lstm、textcnn、bert、transformer、随机森林、lr

    首先需要说一说GBDT,它是一种基于决策树的集成算法,它使用的集成方法是boosting,其主要思想是通过多次迭代,每次迭代都学习一棵CART树来拟合之前 t-1 棵树的预测结果与训练样本真实值的残差,最终得到一个准确度更高的模型。 全称为Gradient Boosting Decision Tree。它是一种

    2024年02月13日
    浏览(37)
  • 机器学习——决策树/随机森林

    决策树可以做分类也可以做回归,决策树容易过拟合 决策树算法的基本原理是依据信息学熵的概念设计的(Logistic回归和贝叶斯是基于概率论),熵最早起源于物理学,在信息学当中表示不确定性的度量,熵值越大表示不确定性越大。 ID3算法就是一种通过熵的变化,构造决策

    2024年02月07日
    浏览(38)
  • 17. 机器学习 - 随机森林

    Hi,你好。我是茶桁。 我们之前那一节课讲了决策树,说了决策树的优点,也说了其缺点。 决策树实现起来比较简单,解释解释性也比较强。但是它唯一的问题就是不能拟合比较复杂的关系。 后来人们为了解决这个问题,让其能够拟合更加复杂的情况,提出来了一种模型,

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包