加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用“randomSplit”进行机器学习目的,了解在Scala中拆分数据的

发布时间:2020-12-16 09:54:51 所属栏目:安全 来源:网络整理
导读:嗨,我是MLlib的新手,我正在阅读Spark网站上的相关文档.我很难理解为什么在下面的代码中我们需要缓存“0”用于训练,“1”用于测试: val splits = data.randomSplit(Array(0.6,0.4),seed = 11L) val training = splits(0).cache() val test = splits(1) 任何
嗨,我是MLlib的新手,我正在阅读Spark网站上的相关文档.我很难理解为什么在下面的代码中我们需要缓存“0”用于训练,“1”用于测试:

val splits = data.randomSplit(Array(0.6,0.4),seed = 11L)
  val training = splits(0).cache()
  val test = splits(1)

任何人都可以帮我理解原因吗?据我所知,我们需要正负样本,因此“1”可以是正数而“0”可以是负数,为什么它会像这样划分?

谢谢!

解决方法

这与积极和消极的例子无关.那些应该已经存在(两种)数据集中.

您将随机分割数据以生成两组:一组用于训练ML算法(训练集),另一组用于检查训练是否正常(测试集).这是一个非常好的想法,因为它捕获过度拟合,否则可能会使你看起来像你有一个很好的ML解决方案,它实际上只是记住每个数据点的答案,不能插入或概括.

事实上,我建议如果你有一个合理数量的数据,你分成三个数据集,你运行ML算法的“训练”; “测试”,用于检查培训的进展情况;和“验证”,在你认为整个ML过程得到优化之前,你永远不会使用它. (优化可能需要多次使用测试集,例如检查收敛,这使得它有点适合数据集,因此通常很难确定您是否真的避免过度拟合.将验证集保留到最后是最好的检查方式(或者,如果你可以收集新数据,你可以这样做).)

请注意,拆分是随机的,以避免不同数据集包含统计上不同的数据的问题;例如早期数据可能与后期数据不同,因此采用数据集的前半部分和后半部分可能会导致问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读