我在这里查看cs文件:https:
//www.microsoft.com/net/learn/apps/machine-learning-and-ai/ml-dotnet/get-started/windows
并尝试翻译它到F#它编译得很好但是System.Reflection.TargetInvocationException
在运行时抛出:FormatException: One of the identified items was in an invalid format
.我错过了什么?
open Microsoft.ML
open Microsoft.ML.Runtime.Api
open Microsoft.ML.Trainers
open Microsoft.ML.Transforms
open System
type IrisData =
[<Column("0")>] val mutable SepalLength : float
[<Column("1")>] val mutable SepalWidth : float
[<Column("2")>] val mutable PetalLength : float
[<Column("3")>] val mutable PetalWidth : float
[<Column("4");ColumnName("Label")>] val mutable Label : string
new(sepLen, sepWid, petLen, petWid, label) =
{ SepalLength = sepLen
SepalWidth = sepWid
PetalLength = petLen
PetalWidth …
Run Code Online (Sandbox Code Playgroud) 采取以下数据表:
# IMPUTING VALUES
library(data.table)
set.seed(1337)
mydt <- data.table(Year = rep(2000:2005, each = 10),
Type = c("A","B"),
Value = 30 + rnorm(60)
)
naRows <- sample(nrow(mydt),15)
mydt[ naRows, Value := NA]
setkey(mydt,Year,Type)
Run Code Online (Sandbox Code Playgroud)
我如何用年份和类型来计算具有中位数的NA?我尝试了以下内容
# computed medians
computedMedians <- mydt[, .(Median = median(Value, na.rm = TRUE)), keyby = .(Year,Type)]
# dataset of just NA rows
dtNAs <- mydt[ is.na(Value), .SD, by = .(Year,Type)]
mydt[ is.na(Value),
Imputations := dtNAs[computedMedians, nomatch = 0][, Median],
by = .(Year,Type)]
mydt
Run Code Online (Sandbox Code Playgroud)
但是当你运行代码时,除非一个组完全缺少数据,否则你会看到它有效,并且计算出的中位数会被回收.有更简单的方法吗?或者你将如何得到最后修正的错误?
这里真的很奇怪.在下面的代码中,我创建了一个名为的变量temp
.我必须先打电话两次才能看到它是什么.例如,我第一次调用它时,控制台什么也没显示.第二次显示data.table
/ data.frame
它是.谁能帮我理解这里发生了什么?
library(magrittr)
library(data.table)
myDT <- as.data.table(mtcars)
temp <-
myDT %>%
melt(id.vars = c('cyl', 'mpg', 'hp'),
measure.vars = c('vs','am','gear','carb'),
variable.name = 'Data') %>%
extract( value > 0) %>%
extract( , value := NULL)
Run Code Online (Sandbox Code Playgroud)
我的控制台在做什么(第一次调用没有做任何事情):
> temp
> temp
cyl mpg hp Data
1: 4 22.8 93 vs
2: 6 21.4 110 vs
3: 6 18.1 105 vs
4: 4 24.4 62 vs
5: 4 22.8 95 vs
...
...
Run Code Online (Sandbox Code Playgroud) 我有一堆我想用相同输入计算的函数.有没有比我下面选择的方式更好的方式来查看输出?
open MathNet.Numerics.Distributions
// The functions
let EuVanillaPut S0 K T r sigma =
let d1 = (log(S0/K) + (r + sigma ** 2.0 / 2.0) * T)/(sqrt(T)*sigma)
let d2 = d1 - sqrt(T)*sigma
K*exp(-r*T)*Normal.CDF(0.0,1.0,-d2) - S0*Normal.CDF(0.0,1.0,-d1)
let BSMdelta S0 K T r sigma =
let d1 = (log(S0/K) + (r + sigma ** 2.0 / 2.0) * T)/(sqrt(T)*sigma)
Normal.CDF(0.0,1.0,d1)
let BSMgamma S0 K T r sigma =
let d1 = (log(S0/K) + (r + sigma ** 2.0 / 2.0) …
Run Code Online (Sandbox Code Playgroud) 我确信这很简单,但我无法弄清楚.
我有以下图表:
library(data.table)
library(magrittr)
library(ggplot2)
cambodia <-
data.table(Period = c("Funan", "Chenla/Zhenla","Khmer Empire","Dark Ages of Cambodia"),
StartDate = c(-500,550,802,1431),
EndDate = c(550,802,1431,1863),
Color = c("lightblue","lightgreen","lightyellow","pink")) %>%
extract(order(-StartDate)) %>%
extract(, Period := factor(Period,levels = Period))
ggplot() +
geom_segment(data=cambodia, aes(x=StartDate, xend=EndDate, y=Period, yend=Period, color=Color),
linetype=1, size=2) +
scale_colour_brewer(palette = "Pastel1")+
xlab("Date")+
ylab("Ruler")+
theme_bw() +
theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank()) +
theme(aspect.ratio = .2) +
theme(legend.position="none")
Run Code Online (Sandbox Code Playgroud)
但我希望标签不在轴上和页面上.在线的中间左侧或顶部.例如
geom_text的大多数例子都给了我gobbledeegook.我似乎无法将它们应用于我在这里的因子数据.你知道怎么做吗?谢谢
我发现自己经常使用这种模式:
f x = do
-- predicate :: a -> IO Bool
b <- predicate x
if b then
rest ()
else
return ()
where
rest () = do
-- rest of my IO operations
Run Code Online (Sandbox Code Playgroud)
其他人是否使用一种模式来删除 if then else where 子句?如何最好地使用控制流和 IO Bool?
我有两个要合并的数据表。一个是关于时间的公司市场价值数据,另一个是关于时间的公司股息历史记录。我试图找出每个公司每个季度支付了多少钱,并将该价值随时间推移到市场价值数据旁边。
library(magrittr)
library(data.table)
library(zoo)
library(lubridate)
set.seed(1337)
# data table of company market values
companies <-
data.table(companyID = 1:10,
Sedol = rep(c("91772E", "7A662B"), each = 5),
Date = (as.Date("2005-04-01") + months(seq(0, 12, 3))) - days(1),
MktCap = c(100 + cumsum(rnorm(5,5)),
50 + cumsum(rnorm(5,1,5)))) %>%
setkey(Sedol, Date)
# data table of dividends
dividends <-
data.table(DivID = 1:7,
Sedol = c(rep('91772E', each = 4), rep('7A662B', each = 3)),
Date = as.Date(c('2004-11-19', '2005-01-13', '2005-01-29',
'2005-10-01', '2005-06-29', '2005-06-30',
'2006-04-17')),
DivAmnt = rnorm(7, .8, .3)) %>% …
Run Code Online (Sandbox Code Playgroud) 我正在尝试理解如何使用F#计算表达式,这当然让我很困惑.
以下示例对我有些意义.
type ListMonad() =
member o.Bind( (m:'a list), (f: 'a -> 'b list) ) = List.collect f m
member o.Return(x) = [x]
let list = ListMonad()
let test =
list {
let! x = [ 1 .. 10]
let! y = [2 .. 2 .. 20]
return (x,y)
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,你如何为这个计算表达式添加一个条件?具体来说,如果x值严格小于y值,你将如何改变它以返回元素列表?(我们之后不要过滤掉它).
我是一名R开发人员,有兴趣擅长F#所以这个问题是如何塑造和重塑数据的更广泛主题的一部分.
问题:NYC Flight Delays数据集中有
三个月有超过7000个天气延迟.我想过滤所有其他月份,以便我只有这三个月来分析.如何在F#中完成?长期的F#解决方案只是呼叫R吗?或者.NET中是否存在可以执行这些任务的强大数据库.
以下是用于此问题的代码:
set.seed(1337)
myDT <- data.table(Key1 = sample(letters, 500, replace = TRUE),
Key2 = sample(LETTERS[1:5], 500, TRUE),
Data = sample(1:26, 500, replace = TRUE))
setkey(myDT, Key1, Key2)
# showing what myDT looks like
> myDT
Key1 Key2 Data
1: a A 6
2: a A 3
3: a B 2
4: a B 20
5: a B 13
---
496: z D 23
497: z E 3
498: z E 18
499: z E 11
500: z E 2
Run Code Online (Sandbox Code Playgroud)
我想配对myDT …
该图表应该传达不同数据集的历史界限,同时也让我突出显示最后三个观察期.如果有更好的图表,请分享.如果没有,那么我将如何使这个图表在ggplot2中运行?
我已经尝试过使用geom_rect
并且不能让它为因子数据工作,所以我一直寄希望于geom_tile
这看起来很有希望.但我总是最终得到神秘的错误.让我来证明:
# set the seed so we all have the same data
set.seed(20180702)
# the data for the tiles of the plot
tileData <-
data.frame(
Factor = as.factor( c("factor1", "factor2", "factor3") ),
Heights = c(2, 5, 3)
)
# sample data we'll want to chart
exampleFrame <-
data.frame(
Period = as.factor(rep(c("first", "second", "third"), n = 3)),
Factor = as.factor(rep(c("factor1", "factor2", "factor3"), each = 3)),
Data = unlist(lapply(tileData[["Heights"]],
function(height) rnorm(3, 0, height)))
)
# create …
Run Code Online (Sandbox Code Playgroud)