用Python进行AI数据分析进阶教程53:
机器学习之随机森林在回归和分类问题中的应用
关键词:随机森林、决策树、集成学习、分类问题、回归问题
摘要:随机森林是一种基于决策树的集成学习算法,广泛应用于Python机器学习的分类和回归问题中。在分类问题中,随机森林通过构建多个决策树并综合它们的预测结果来进行最终决策,采用投票法选择预测类别。其关键点包括随机采样和集成多个决策树,需注意参数调整和数据平衡。在回归问题中,随机森林预测连续数值,通过平均各决策树的预测结果得到最终值,常用均方误差等指标评估性能,需注意异常值处理和过拟合问题。文章通过示例代码展示了随机森林在鸢尾花数据集分类和生成回归数据集预测中的应用,包括数据划分、模型训练和性能评估等步骤。
👉 欢迎订阅🔗
《用Python进行AI数据分析进阶教程》专栏
《AI大模型应用实践进阶教程》专栏
《Python编程知识集锦》专栏
《字节跳动旗下AI制作抖音视频》专栏
《智能辅助驾驶》专栏
《工具软件及IT技术集锦》专栏
随机森林是一种基于决策树的集成学习算法,在 Python 的机器学习中广泛应用于回归和分类问题。以下是其在这两类问题中的应用详细介绍:
一、随机森林在分类问题中的应用
1、关键点
- 集成多个决策树:通过构建多个决策树,综合它们的预测结果来进行最终决策,通常采用投票法,即选择得票最多的类别作为预测结果。
- 随机采样:包括对样本的随机采样(有放回抽样)和对特征的随机选择,这有助于降低模型的方差,提高模型的泛化能力。
2、注意点
- 参数调整:如树的数量(n_estimators)、最大深度(max_depth)等参数对模型性能影响较大,需要进行调优。
- 数据平衡:如果数据集中不同类别的样本数量不均衡,可能会导致模型对多数类的预测效果较好,而对少数类的预测效果较差,需要进行数据平衡处理。
3、示例代码
Python脚本
import numpy as np
# 从sklearn库中导入加载鸢尾花数据集的函数
from sklearn.datasets import load_iris
# 从sklearn库中导入划分训练集和测试集的函数
from sklearn.model_selection import train_test_split
# 从sklearn库中导入随机森林分类器
from sklearn.ensemble import RandomForestClassifier
# 从sklearn库中导入计算准确率的函数
from sklearn.metrics import accuracy_score
def train_and_evaluate():
try:
# 加载鸢尾花数据集
iris = load_iris()
# 提取特征数据
X = iris.data
# 提取标签数据
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# 创建随机森林分类器,设置树的数量为100
rf = RandomForestClassifier(n_estimators=100, random_state=42)
# 在训练集上训练模型
rf.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = rf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
# 打印准确率
print(f"Accuracy: {accuracy}")
except Exception as e:
# 若出现异常,打印错误信息
print(f"An error occurred: {e}")
if __name__ == "__main__":
# 调用函数进行模型训练和评估
train_and_evaluate()
输出 / 打印结果
输出结果会是一个类似如下的内容:
plaintext
Accuracy: 0.9777777777777777
- Accuracy 后面跟着的是模型在测试集上的准确率。因为 random_state 被设置为 42,每次运行代码时,数据集的划分和随机森林的随机性都是固定的,所以准确率应该是相同的。若没有异常发生,这个准确率就是模型对鸢尾花数据集分类的准确程度。
- 注意:实际的准确率可能会因为使用的库版本不同而稍有差异,但一般都会接近 0.97 - 0.98 这个范围。
重点语句解读
- RandomForestClassifier(n_estimators=100, random_state=42):创建一个随机森林分类器实例,n_estimators指定了森林中决策树的数量为 100,random_state设置随机种子,确保结果可复现。
- rf.fit(X_train, y_train):使用训练数据X_train和对应的标签y_train来训练随机森林模型。
- y_pred = rf.predict(X_test):使用训练好的模型对测试数据X_test进行预测,得到预测结果y_pred。
二、随机森林在回归问题中的应用
1、关键点
- 预测连续值:与分类问题不同,随机森林在回归问题中预测的是连续的数值,通常通过平均各个决策树的预测结果来得到最终的预测值。
- 衡量误差的指标:常用均方误差(MSE)、平均绝对误差(MAE)等指标来评估模型的性能。
2、注意点
- 异常值影响:由于随机森林是基于样本进行训练的,异常值可能会对模型的预测结果产生较大影响,需要进行异常值处理。
- 过拟合问题:如果树的数量过多或树的深度过大,可能会导致模型过拟合,需要通过交叉验证等方法来调整参数,避免过拟合。
3、示例代码
Python脚本
# 导入NumPy库,用于数值计算和数组操作
import numpy as np
# 从sklearn库中导入用于生成回归数据集的函数
from sklearn.datasets import make_regression
# 从sklearn库中导入用于划分训练集和测试集的函数
from sklearn.model_selection import train_test_split
# 从sklearn库中导入随机森林回归器模型
from sklearn.ensemble import RandomForestRegressor
# 从sklearn库中导入用于计算均方误差的函数
from sklearn.metrics import mean_squared_error
# 定义一个函数,用于生成回归数据集、训练模型并评估模型性能
def generate_and_evaluate_regression_model():
try:
# 使用make_regression函数生成回归数据集
# n_samples=1000表示生成1000个样本
# n_features=10表示每个样本有10个特征
# random_state=42设置随机种子,保证每次运行代码生成的数据集相同
X, y = make_regression(n_samples=1000, n_features=10, random_state=42)
# 使用train_test_split函数将数据集划分为训练集和测试集
# test_size=0.3表示测试集占总数据集的30%
# random_state=42同样设置随机种子,保证每次划分结果相同
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# 创建一个随机森林回归器对象
# n_estimators=100表示使用100棵决策树进行集成
# random_state=42设置随机种子,保证每次构建的随机森林相同
rf = RandomForestRegressor(n_estimators=100, random_state=42)
# 使用训练集数据对随机森林回归器进行训练
# X_train是训练集的特征数据,y_train是训练集的目标数据
rf.fit(X_train, y_train)
# 使用训练好的随机森林回归器对测试集数据进行预测
# X_test是测试集的特征数据,y_pred是预测得到的目标数据
y_pred = rf.predict(X_test)
# 计算预测结果的均方误差
# mean_squared_error函数用于计算真实值y_test和预测值y_pred之间的均方误差
mse = mean_squared_error(y_test, y_pred)
# 打印计算得到的均方误差
print(f"Mean Squared Error: {mse}")
# 返回计算得到的均方误差
return mse
except Exception as e:
# 如果在上述过程中出现异常,打印异常信息
print(f"An error occurred: {e}")
# 返回None表示出现错误
return None
# 当该脚本作为主程序运行时
if __name__ == "__main__":
# 调用generate_and_evaluate_regression_model函数进行数据集生成、模型训练和评估
generate_and_evaluate_regression_model()
输出 / 打印结果
输出结果会是类似如下的内容:
plaintext
Mean Squared Error: 202.123456789 # 这里的数值是示例,实际运行结果可能不同
- Mean Squared Error 后面跟着的数值就是模型在测试集上预测结果的均方误差。均方误差衡量了预测值与真实值之间的平均平方误差,数值越小说明模型的预测性能越好。由于 random_state 被设置为 42,每次运行代码时,数据集的生成和划分以及随机森林的构建都是固定的,所以均方误差的结果应该是相同的。若没有异常发生,这个均方误差就是模型对生成的回归数据集进行预测的误差评估。
重点语句解读
- RandomForestRegressor(n_estimators=100, random_state=42):创建一个随机森林回归器实例,n_estimators指定了森林中决策树的数量为 100,random_state设置随机种子,确保结果可复现。
- rf.fit(X_train, y_train):使用训练数据X_train和对应的目标值y_train来训练随机森林回归模型。
- y_pred = rf.predict(X_test):使用训练好的模型对测试数据X_test进行预测,得到预测结果y_pred。
- mse = mean_squared_error(y_test, y_pred):计算真实值y_test和预测值y_pred之间的均方误差,用于评估模型的性能。
——The END——
🔗 欢迎订阅专栏
| 序号 | 专栏名称 | 说明 |
|---|---|---|
| 1 | 用Python进行AI数据分析进阶教程 | 《用Python进行AI数据分析进阶教程》专栏 |
| 2 | AI大模型应用实践进阶教程 | 《AI大模型应用实践进阶教程》专栏 |
| 3 | Python编程知识集锦 | 《Python编程知识集锦》专栏 |
| 4 | 字节跳动旗下AI制作抖音视频 | 《字节跳动旗下AI制作抖音视频》专栏 |
| 5 | 智能辅助驾驶 | 《智能辅助驾驶》专栏 |
| 6 | 工具软件及IT技术集锦 | 《工具软件及IT技术集锦》专栏 |
👉 关注我 @理工男大辉郎 获取实时更新
欢迎关注、收藏或转发。
敬请关注 我的
微信搜索公众号:cnFuJH
优快云博客:理工男大辉郎
抖音号:31580422589

被折叠的 条评论
为什么被折叠?



