如何规范化deedle框架中的数据?
我尝试过这种方法,但其中一种方法无效
let iris = Frame.ReadCsv("./iris.csv")
let keys = iris.ColumnKeys |> Seq.toArray
let x = iris.Columns.[keys.[0..4]]
let mu = x |> Stats.mean
let std = x |> Stats.stdDev
//Not working becasue couldnt substract series from frame
let norm = (x - mu) / std
答案 0 :(得分:6)
frame - series
重载期望您从series
的所有列中减去frame
,即框架的行键和系列的行键对齐。< / p>
对于您的用例,您需要对齐列键 - 没有单个运算符,但您可以使用mapRows
函数执行此操作:
let x = iris.Columns.[keys.[0..3]]
let mu = x |> Stats.mean
let std = x |> Stats.stdDev
let norm =
x
|> Frame.mapRowValues (fun r -> (r.As<float>() - mu) / std)
|> Frame.ofRows
我还将您的x
更改为仅来自keys.[0..3]
,否则您将尝试规范化string
类型的列,但该列失败。