随机森林(R)

#### random forest ############
install.packages('randomForest')
library(randomForest)   
data(iris)  
attach(iris)
table(iris$Species)
class=as.factor(iris$Species)

######描述 ############
biplot(princomp(iris[,1:4], cor=TRUE))
set.seed(100)   
ind=sample(2,nrow(iris),replace=TRUE,prob=c(0.75,0.25))  

#### 训练集、测试集########
train=iris[ind==1,]
test=iris[ind==2,]
####两种模型机制 ###############
###### 1、模型#############
iris.rf1=randomForest(Species~.,train,ntree=50,nPerm=10,mtry=3,proximity=TRUE,importance=TRUE)   
print(iris.rf1)   
iris.pred1=predict( iris.rf1,iris[ind==2,] )   
table(observed=iris[ind==2,"Species"],predicted=iris.pred1 )  

######2、数据集 ############
RF2 <- randomForest(train[,-5], train[,5],prox=TRUE, importance=TRUE)
imp <- importance(RF2)
impvar <- imp[order(imp[, 3], decreasing=TRUE),]; impvar

varImpPlot(RF2)


一些重要参数说明
randomForest()对训练集的数据进行处理,生成决策树
iris.rf=randomForest(Species~.,iris[ind==1,],ntree=50,nPerm=10,mtry=3,proximity=TRUE,importance=TRUE)
Species~.:代表需要预测的列,species是列的名称。
iris[ind==1,]:生成决策树的训练集
ntree:生成决策树的数目
nperm:计算importance时的重复次数
mtry:选择的分裂属性的个数
proximity=TRUE:表示生成临近矩阵
importance=TRUE:输出分裂属性的重要性
predict()
iris.pred=predict( iris.rf,iris[ind==2,] )
iris.rf:表示生成的随机森林模型
iris[ind==2,] :进行预测的测试
### 随机森林在R语言中的实现 随机森林是一种集成学习方法,通过构建多个决策树并汇总其预测来提高模型性能和鲁棒性。对于实践者而言,训练随机森林相对简单;找到一个好的、稳健的模型也更容易[^1]。 #### 安装必要的包 为了在R中使用随机森林,通常会依赖`randomForest`包或其他提供相似功能的库: ```r install.packages("randomForest") library(randomForest) ``` #### 数据准备 假设有一个数据集`data`,其中最后一列为目标变量(标签),其余列为特征向量,则可以按照如下方式分割成训练集和测试集: ```r set.seed(123) # 设置种子以确保可重复的结果 trainIndex <- sample(1:nrow(data), size=0.7*nrow(data)) trainData <- data[trainIndex, ] testData <- data[-trainIndex, ] ``` #### 构建随机森林模型 利用上述划分好的训练数据创建随机森林分类器,并指定一些超参数如树木数量(`ntree`)等: ```r rfModel <- randomForest(as.factor(targetVariable) ~ . , data=trainData, ntree=500, importance=TRUE) print(rfModel) ``` 这里`targetVariable`应替换为实际的目标变量名称。设置`importance=TRUE`可以让后续分析哪些输入特性更重要成为可能。 #### 模型评估与应用 完成训练之后就可以基于此模型对新样本做出预测了: ```r predictions <- predict(rfModel, testData[, -which(names(testData)==names(trainData)[ncol(trainData)])]) confusionMatrix(predictions, testData$targetVariable) ``` 这段代码片段展示了如何计算混淆矩阵来进行基本的表现评价。注意调整`testData`的选择逻辑以便适应具体的数据结构。 #### 特征重要性的可视化 最后还可以绘制图表展示各个属性的重要性得分: ```r varImpPlot(rfModel) ``` 这有助于理解不同因素对最终结果的影响程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值