1. library(data.table)
  2. library(randomForest)
  3. data <- iris
  4. str(data)
  5. #交叉验证,使用rf预测sepal.length
  6. k = 5
  7. data$id <- sample(1:k, nrow(data), replace = TRUE)
  8. list <- 1:k
  9. # 每次迭代的预测用数据框,测试用数据框
  10. # the folds
  11. prediction <- data.table()
  12. testsetCopy <- data.table()
  13. # 写一个进度条,用来了解CV的进度
  14. progress.bar <- create_progress_bar("text")
  15. progress.bar$init(k)
  16. #k层的函数
  17. for(i in 1:k){
  18. # 删除id为i的行,创建训练集
  19. # 选id为i的行,创建训练集
  20. trainingset <- subset(data, id %in% list[-i])
  21. testset <- subset(data, id %in% c(i))
  22. #运行一个随机森林模型
  23. mymodel <- randomForest(trainingset$Sepal.Length ~ ., data = trainingset, ntree = 100)
  24. #去掉回应列1, Sepal.Length
  25. temp <- as.data.frame(predict(mymodel, testset[,-1]))
  26. # 将迭代出的预测结果添加到预测数据框的末尾
  27. prediction <- rbind(prediction, temp)
  28. # 将迭代出的测试集结果添加到测试集数据框的末尾
  29. # 只保留Sepal Length一列
  30. testsetCopy <- rbind(testsetCopy, as.data.frame(testset[,1]))
  31. progress.bar$step()
  32. }
  33. # 将预测和实际值放在一起
  34. result <- cbind(prediction, testsetCopy[, 1])
  35. names(result) <- c("Predicted", "Actual")
  36. result$Difference <- abs(result$Actual - result$Predicted)
  37. # 用误差的绝对平均值作为评估
  38. summary(result$Difference)

  

  交叉验证伪代码

  1. for each epoch
  2. for each training data instance
  3. propagate error through the network
  4. adjust the weights
  5. calculate the accuracy over training data
  6. for each validation data instance
  7. calculate the accuracy over the validation data
  8. if the threshold validation accuracy is met
  9. exit training
  10. else
  11. continue training

R随机森林交叉验证 + 进度条的更多相关文章

  1. Android -- 自定义StepView实现个人信息验证进度条

    1,项目中要用到个人信息验证的在网上找了一下,好像有封装好了的StepView,首先感谢一下作者,这是作者的地址,效果图如下: 2,正准备撸起袖子就是一顿复制粘贴的时候,发现效果图成这个样子了(其实这 ...

  2. Android View 之进度条+拖动条+星级评论条....

    PS:将来的你会感谢现在奋斗的自己.... 学习内容: 1.进度条 2.拖动条 3.星级评论条 1.进度条...       进图条这东西想必大家是很熟悉的...为了使用户不会觉得应用程序死掉了,因此 ...

  3. Android——ProgressDialog 进度条对话框

    public class ProgressDialogActivity extends Activity {    private Button btn_large_pd, btn_horizonta ...

  4. Linux终端彩色打印+终端进度条【转】

    转自:https://my.oschina.net/jcseg/blog/178047 开发的一个应用程序选择了终端界面, 为了使软件稍微好看些, 研究下Linux终端的彩色打印, 并且基于这个彩色打 ...

  5. Android 显示或隐藏标题栏进度条TitleProgressBar

    1.新建项目,布局文件如下:activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/ ...

  6. Android 进度条对话框ProgressDialog

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  7. Android进度条控件ProgressBar使用

    ProgressBar有四种样式,圆形的(大,中,小)和直条形的(水平) 对应的style为 <LinearLayout xmlns:android="http://schemas.a ...

  8. ProgressDialog 进度条的初步认识

    public class MainActivity extends Activity implements View.OnClickListener{ private ProgressBar prog ...

  9. 什么是机器学习的分类算法?【K-近邻算法(KNN)、交叉验证、朴素贝叶斯算法、决策树、随机森林】

    1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类 ...

随机推荐

  1. public,private,protected,以及default时的区别

    作用域    当前类   同一package     子孙类   其他package public       √                 √                    √    ...

  2. LINQ解析

    Linq 是什么? Linq是Language Integrated Query的缩写,即“语言集成查询“的意思,Linq的提出就是为了提供一种跨各种数据源统一查询方式,主要包含四种组件:Linq t ...

  3. mysql数据库通过二进制 -【恢复数据记录】

    1.修改配置文件 vi /etc/my.cnf log-bin = binlog systemctl restart mysqld mysql -uroot -p123456 mysql> sh ...

  4. 《Java程序设计》win10系统学前准备

    <Java程序设计>win10系统学前准备 Git的安装 在https://gitforwindows.org/中下载git for windows,下载完成后进行安装.当安装进行到这一步 ...

  5. Python 小节回顾

    1.python程序是大小写敏感. 2.python中字符串是用单引号 ' 或双引号 " 括起来的任意文本. python中用 r '  ' 表示 ' ' 内部的字符串不转义. 3.在pyt ...

  6. Canvas---clearRect()清除圆形区域

    function clearArcFun(x,y,r,cxt){ //(x,y)为要清除的圆的圆心,r为半径,cxt为context var stepClear=1;//别忘记这一步 clearArc ...

  7. [poj P2411] Mondriaan's Dream

    [poj P2411] Mondriaan's Dream Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 18023   A ...

  8. 浅谈jQuery的promise

    jquery中的Promise,也就是我们所知道的Deferred对象. 举例1: var data=""; function runAsync(){ var def = $.De ...

  9. django中的ORM介绍和字段及字段参数

    Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...

  10. Go used as value问题

    练习Go变参时遇到一个报错:used as value 代码如下: // 错误代码 func myfunc(arg ...int) { for _, n := range arg { fmt.Prin ...