【Sklearn-驯化】轻松学会机器学习中的bagging基础模型随机森林的使用技巧

【Sklearn-驯化】轻松学会机器学习中的bagging基础模型随机森林的使用技巧

 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🎯 1. 基本介绍

  随机森林(Random Forest)是一种集成学习方法,它通过构建多个决策树并将它们的预测结果结合起来,以提高模型的准确性和鲁棒性。在scikit-learn中,随机森林模型通过RandomForestClassifier(用于分类)和RandomForestRegressor(用于回归)类实现。

💡 2. 原理介绍

  随机森林是基于bagging框架下的决策树模型,随机森林包含了很多树,每棵树给出分类结果,每棵树的生成规则如下:
(1)如果训练集大小为N,对于每棵树而言,随机且有放回地从训练中抽取N个训练样本,作为该树的训练集,重复K次,生成K组训练样本集。
(2)如果每个特征的样本维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征。
(3) 利用m个特征对每棵树尽最大程度的生长,并且没有剪枝过程。
  具体的可视化流程如下所示:
在这里插入图片描述

🔍 3. 代码实践

3.1 RF分类器

  同样的我们通过sklearn中自带的莺尾花分类器数据来做为我们实践tf模型的基本数据,具体的代码流程如下所示:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 加载iris数据集
iris = load_iris()
X, y = iris.data, iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建随机森林分类器实例
rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练模型
rf_classifier.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = rf_classifier.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

3.1 RF回归器

  同样的我们通过sklearn中自带的莺尾花分类器数据来做为我们实践tf模型的基本数据,具体的代码流程如下所示:

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error, r2_score

# 生成模拟回归数据
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建随机森林回归器实例
rf_regressor = RandomForestRegressor(n_estimators=100, random_state=42)

# 训练模型
rf_regressor.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = rf_regressor.predict(X_test)
# 计算MSE和R²
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"均方误差(MSE): {mse:.2f}")
print(f"R²分数: {r2:.2f}")

🔍 4. 高阶用法

  在使用sklearn中的rf函数进行分类和回归时,我们需要注意一些常用的参数,具体的为:

  • n_estimators:随机森林中的决策树数量。默认为100。增加决策树数量可以提高模型性能,但会增加计算开销。
  • criterion:选择划分特征的衡量指标。可选的值包括"gini"和"entropy",默认为"gini"。基尼系数(gini)和信息熵(entropy)都是用来衡量划分的纯度,选择哪个衡量指标取决于具体问题。
    -max_depth:决策树的最大深度。用于控制决策树的复杂度和防止过拟合。默认为None,表示不限制决策树的深度。
  • min_samples_split:拆分内部节点所需的最小样本数。如果某个内部节点的样本数小于该值,则不会再划分。默认为2。
    -min_samples_leaf:叶节点所需的最小样本数。如果某个叶节点的样本数小于该值,则该叶节点会被剪枝,合并到其他叶节点上。默认为1。
    -max_features:寻找最佳划分特征时要考虑的特征数量。可以是整数(表示考虑的特征数量)或浮点数(表示考虑特征比例)。默认为"auto",表示考虑所有特征。
    -random_state:随机种子。用于控制每次训练结果的随机性。默认为None。
    -class_weight:类别权重。可以设置为"class_weight=‘balanced’"来自动调整各个类别的权重,以解决类别不平衡问题。

🔍 5. 注意事项

  • n_estimators参数控制着随机森林中决策树的数量,增加树的数量可以提高模型的准确性,但也会增加计算成本。
  • 随机森林模型对特征的缩放不敏感,但在某些情况下,特征标准化可能有助于提高模型性能。
  • 随机森林模型可能会过拟合,特别是当树的数量过多或单个树的深度过大时。可以通过设置max_depth参数来限制树的最大深度。

🔍 6. 总结

  随机森林是一种强大的集成学习算法,它通过组合多个决策树的预测结果来提高模型的准确性和鲁棒性。scikit-learn提供了易于使用的随机森林实现,适用于分类和回归任务。通过本博客的代码示例,我们学习了如何创建随机森林模型,进行训练、预测和评估。希望这篇博客能够帮助你更好地理解随机森林模型,并将其应用于实际的机器学习问题中。

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法驯化师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值