首页 > 其他分享 >机器学习_决策树与随机森林

机器学习_决策树与随机森林

时间:2024-05-30 09:28:56浏览次数:21  
标签:机器 pred clf train 随机 test reg 决策树

决策树和随机森林是常用的机器学习算法,尤其在分类和回归任务中应用广泛。以下详细介绍它们的用法,并提供相应的代码实例。

决策树

决策树是基于树结构的模型,逐步细化决策,最终形成对目标变量的预测。

用法
  1. 分类:用于分类任务,目标变量是类别。
  2. 回归:用于回归任务,目标变量是连续值。
优点
  • 易于理解和解释。
  • 处理类别特征和数值特征。
  • 不需要大量数据预处理。
缺点
  • 容易过拟合,尤其在树深度较大时。
  • 对噪声数据敏感。
代码实例

以下是使用 scikit-learn 实现决策树分类和回归的代码示例。

from sklearn.datasets import load_iris, load_boston
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from sklearn.metrics import accuracy_score, mean_squared_error

# 分类任务
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)

clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

print(f"Classification Accuracy: {accuracy_score(y_test, y_pred)}")

# 回归任务
boston = load_boston()
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

reg = DecisionTreeRegressor()
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)

print(f"Regression MSE: {mean_squared_error(y_test, y_pred)}")

随机森林

随机森林是集成学习方法的一种,通过生成多个决策树,并结合它们的预测结果来提高模型的性能和稳定性。

用法
  1. 分类:用于分类任务,通过多个决策树的投票来确定类别。
  2. 回归:用于回归任务,通过多个决策树的平均值来预测连续值。
优点
  • 减少过拟合的风险。
  • 更高的预测准确性。
  • 能处理高维数据和缺失值。
缺点
  • 计算开销较大,尤其是树的数量较多时。
  • 模型复杂性较高,不易解释。
代码实例

以下是使用 scikit-learn 实现随机森林分类和回归的代码示例。

from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor

# 分类任务
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

print(f"Random Forest Classification Accuracy: {accuracy_score(y_test, y_pred)}")

# 回归任务
reg = RandomForestRegressor(n_estimators=100, random_state=42)
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)

print(f"Random Forest Regression MSE: {mean_squared_error(y_test, y_pred)}")

进阶用法和参数调整

决策树参数
  • criterion: 分裂的评价标准(ginientropy 用于分类;msemae 用于回归)。
  • max_depth: 树的最大深度,防止过拟合。
  • min_samples_split: 分裂内部节点所需的最小样本数。
  • min_samples_leaf: 叶节点的最小样本数。
随机森林参数
  • n_estimators: 决策树的数量。
  • max_features: 每次分裂时考虑的特征数量。
  • bootstrap: 是否在构建树时使用自助法采样。
  • oob_score: 是否使用袋外样本评估模型性能。
# 调整决策树参数
clf = DecisionTreeClassifier(max_depth=5, min_samples_split=10, criterion='entropy')
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(f"Tuned Decision Tree Classification Accuracy: {accuracy_score(y_test, y_pred)}")

# 调整随机森林参数
reg = RandomForestRegressor(n_estimators=200, max_features='sqrt', oob_score=True, random_state=42)
reg.fit(X_train, y_train)
y_pred = reg.predict(X_test)
print(f"Tuned Random Forest Regression MSE: {mean_squared_error(y_test, y_pred)}")
print(f"Out-of-Bag Score: {reg.oob_score_}")

可视化决策树

可以使用 graphviz 库可视化决策树,以便更好地理解其结构。

from sklearn.tree import export_graphviz
import graphviz

# 导出决策树图像
dot_data = export_graphviz(clf, out_file=None, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("decision_tree")

通过这些实例,展示了决策树和随机森林在分类和回归任务中的应用。可以根据具体问题调整参数,提升模型的性能和稳定性。

标签:机器,pred,clf,train,随机,test,reg,决策树
From: https://blog.csdn.net/a6181816/article/details/139301464

相关文章

  • 基于金融知识图谱的问答机器人
    importjsonfromflaskimportFlask,requestfrompy2neoimportGraphfrompyhanlpimport*app=Flask(__name__)@app.route("/qa",methods=['POST','GET'])defkg_qa():ifrequest.method=='GET':ques......
  • 2024-5-29-中国人形机器人产业链全景图谱
    人形机器人作为一种“未来产业”,结合了机械设计、人工智能、传感技术和控制系统等先进技术,产业链路非常复杂。人形机器人产业链包括上中下游。上游包括核心零部件(如伺服系统、减速器、传感器、控制器等)和软件系统开发,中游为人形机器人本体制造,下游为终端应用市场,如医疗、教育、救......
  • 随机森林算法教程(个人总结)
    背景随机森林(RandomForest)是一种集成学习方法,主要用于分类和回归任务。它通过构建多个决策树并将其结果进行集成,提升模型的准确性和鲁棒性。随机森林在处理高维数据和防止过拟合方面表现出色,是一种强大的机器学习算法。随机森林的基本思想随机森林由多个决策树组成,每棵树在......
  • 【论文笔记】机器遗忘:错误标签方法
    错误标签方法来自论文:Machine Unlearning:ASurvey中总结的方法。通过给遗忘样本提供随机的错误标签,混淆模型对样本的理解,从而无法在模型中保留任何正确的信息,以达到机器遗忘的目的。这里总结了以下论文中的方法:[1]LauraGraves,VineelNagisetty,andVijayGanesh.Am......
  • 如何配置机器人ROS操作系统之间的有线和无线的局域网通信(基于ROS的主从通讯)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言1.主从配置前的准备工作(1)查看主从机的hostname(2)查看各自主机和从机的IP(3)本教程的hostname和ip如下2.在主机中的修改(1)修改主机的/.bashr文件(2)修改主机的hosts文件3.在从机......
  • Linux 无法访问另一台机器上的服务,重启后可以访问,一段时间后又无法访问
    一台Linux主机A无法访问另一台Linux主机B上的服务,我在自己的电脑(windows)上是可以访问的,重启B后可以访问,但是十几个小时之后又无法访问,再次重启后又可以访问。#无法访问的原因是本机的静态ip设置有问题#系统是Debian12source/etc/network/interfaces.d/*#Theloopback......
  • 机器学习入门笔记_基本概念
    本文介绍机器学习中一些基本的概念和分类目录有监督学习回归分类无监督学习聚类降维强化学习机器学习适合的领域有监督学习是一种通过训练数据集来预测目标变量的方法,其中每个训练样本都有一个已知的标签或输出值。有监督学习的特点是“有x有y”。有监督学......
  • Pi 母公司将开发情感 AI 商业机器人;Meta 科学家:Sora 不是视频生成唯一方向丨RTE 开发
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观......
  • 机器学习策略篇:详解可避免偏差(Avoidable bias)
    可避免偏差如果希望学习算法能在训练集上表现良好,但有时实际上并不想做得太好。得知道人类水平的表现是怎样的,可以确切告诉算法在训练集上的表现到底应该有多好,或者有多不好,让我说明是什么意思吧。经常使用猫分类器来做例子,比如人类具有近乎完美的准确度,所以人类水平的错误是1%......
  • 【机器学习】Chameleon多模态模型探究
    Chameleon:引领多模态模型的新时代一、多模态模型的时代背景二、Chameleon模型的介绍三、Chameleon模型的技术特点四、Chameleon模型的性能评估五、Chameleon模型的代码实例随着人工智能技术的深入发展,我们逐渐认识到单一模态的模型在处理复杂问题时存在一定的局限......