兄弟姐妹们,今天咱们讲讲机器学习。

开始之前,需要回归前期内容的请按需查看:

R语言caret包:机器学习介绍(trainContral函数)-CSDN博客

R语言caret包:机器学习介绍(train函数)-CSDN博客

目录

caret 包的主要功能:

1、数据预处理

2、数据分割

3、特征选择

1)递归特征消除法

2)基于过滤器的方法

3)嵌入方法,如变量重要性


caret 包的主要功能:

        1)数据预处理:包括缺失值处理、数据标准化、数据转换、创建哑变量等。
        2)数据分割: 将数据集划分为训练集、测试集、验证集等。
        3)特征选择: 选择重要的特征,提高模型性能。
        4)模型训练: 提供统一的接口训练各种机器学习模型。
        5)参数调优: 自动搜索最佳的模型参数。
        6)模型评估: 使用多种指标评估模型性能。
        7)模型比较: 比较不同模型的性能。

  下面我用自己的数据进行各部分的演示:

        首先,咱们进行前期准备加载必要的数据和R包。

#导入数据
library(openxlsx)
data <- read.xlsx("xxx.xlsx", sheet = "Sheet1")
colnames(data)
#加载最重要的caret包
library(caret)

1、数据预处理

        由于数据中不存在缺失值等问题,我们只进行了标准化,将数据转化为均值为0,方差为1 的数据。注意,此时数据不是正态分布。正态分布要求均值为0,方差为1,但均值为0,方差为1不代表数据为正态分布。

# 创建预处理方法
preprocess <- preProcess(train_data[,-c(1:2)], method = c("center", "scale"), 
                         thresh = 0.95)
# 应用预处理
train_processed <- predict(preprocess, train_data[,-c(1:2)])
test_processed <- predict(preprocess, test_data[,-c(1:2)])

2、数据分割

        设置种子,确保结果可以复现;将数据分为训练集和验证集。

set.seed(123)
train_index <- createDataPartition(data$BAI, p = 0.7, list = FALSE) #createDataPartition() 函数用于创建数据分割
train_data <- data[train_index, ]
test_data <- data[-train_index, ]

3、特征选择

        常见的选择方法为三种,分别为:

1)递归特征消除法
# 递归特征消除
control <- rfeControl(
  functions = rfFuncs,          # 使用随机森林评估特征
  method = "cv",                # 使用交叉验证
  number = 5                    # 5折交叉验证
)

rfe_model <- rfe(
  x = train_processed[, -2],    # 自变量(剔除最后一列 "Class")
  y = train_processed$BAI,              # 因变量(分类标签)
  sizes = c(1:10, 15, 20),      # 特征子集大小
  rfeControl = control          # 控制参数
)
# 查看 RFE 的结果
print(rfe_model) #最后一行输出了Top variables:显示被选中的特征名称

2)基于过滤器的方法
#基于过滤器的方法
# 计算特征间的相关性
cor_matrix <- cor(train_processed)  # 计算自变量的相关性矩阵
# 筛选相关性较高的特征
highly_correlated <- findCorrelation(cor_matrix, cutoff = 0.75)  # 设置相关性阈值,用于剔除高度相关的特征
# 剔除相关性较高的特征
reduced_data <- train_processed[, -highly_correlated]
3)嵌入方法,如变量重要性
#嵌入式方法。典型的就是变量重要性,
caret 提供了 varImp() 函数,用于提取模型中各特征的重要性。
许多模型(如随机森林、线性模型)支持变量重要性评估。
# 训练随机森林模型
library(randomForest)
set.seed(123)
rf_model <- randomForest(BAI ~ ., data = train_processed, importance = TRUE)
# 提取变量重要性
importance <- varImp(rf_model)
# 查看变量重要性
print(importance)
# 可视化变量重要性
varImpPlot(rf_model)

其他内容下期再叙,兄弟姐妹们点点关注吧!!!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐