针正火框
Deedle normalize frame
如何对deedle frame中的数据进行归一化?
我已经尝试过这种方法,但一个不起作用
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
frame - series
重载期望您从 frame
的所有列中减去 series
,即帧的行键和系列的行键对齐.
对于您的用例,您需要对齐列键 - 对此没有单一的运算符,但您可以使用 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
类型的列,但失败了。
如何对deedle frame中的数据进行归一化?
我已经尝试过这种方法,但一个不起作用
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
frame - series
重载期望您从 frame
的所有列中减去 series
,即帧的行键和系列的行键对齐.
对于您的用例,您需要对齐列键 - 对此没有单一的运算符,但您可以使用 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
类型的列,但失败了。