将数据集拆分为smallers集随机f#

时间:2018-06-14 03:03:19

标签: f#

我正在学习F#,我想学习如何将数据集随机分成10个较小的集合。任何人都有任何想法开始???我应该阅读什么主题???我需要帮助才能继续。谢谢。

1 个答案:

答案 0 :(得分:0)

很大程度上取决于你想要实现的目标。您可以使用大多数集合的Permute功能。下面是一个利用MathNet.Numerics生成随机索引然后对数据进行混洗的示例。当然你也可以先拆分然后再洗牌。并改用Array.permute。只需nuget MathNet.Numerics和MathNet.Numerics.FSharp。

#if INTERACTIVE
#r @"../packages/MathNet.Numerics/lib/net461/MathNet.Numerics.dll"
#r @"../packages/MathNet.Numerics.FSharp/lib/net45/MathNet.Numerics.FSharp.dll"
#endif

open System
open MathNet.Numerics

let rnd = System.Random()
let randomData = Array.init 100 (fun _ -> rnd.Next()) // generate the initial data 
let randomIndex =  (Combinatorics.GeneratePermutation 100) // create a random index

randomIndex
|> Array.map (fun x -> randomData.[x]) //shuffle the data
|> Array.splitInto 10 //split it into 10 subsets

在这种情况下,您的结果将是int数组。在F#中使用Lists更加惯用。此外,如果您的数据非常大,您可以考虑使用懒惰的Seq