gpt4 book ai didi

r - 为什么 R.predict.svm 返回错误大小的列表?

转载 作者:行者123 更新时间:2023-11-30 08:59:15 25 4
gpt4 key购买 nike

我正在尝试使用 R 类型提供程序来拟合和预测支持向量机模型。我能够拟合模型,但是当我尝试预测返回的向量与训练向量具有相同的长度时,它不应该具有相同的长度。

我直接在 R 中尝试了等效代码,返回的列表具有正确的长度。

为什么会发生这种情况?

这是一个例子:

open System
open RDotNet
open RProvider
open RProvider.stats
open RProvider.e1071

// Random number generator
let rng = Random()
let rand () = rng.NextDouble()

// Generate fake X1 and X2
let X1s = [ for i in 0 .. 9 -> 10. * rand () ] // length = 10
let X2s = [ for i in 0 .. 9 -> 5. * rand () ] // length = 10

let Z1s = [ for i in 0 .. 5 -> 10. * rand () ] // length = 6
let Z2s = [ for i in 0 .. 5 -> 5. * rand () ] // length = 6

// Build Ys
let Ys = [0;1;0;1;0;1;0;1;0;1]

let XMat =
["X1", box X1s; "X2", box X2s]
|> namedParams
|> R.cbind

let ZMat =
["Z1", box Z1s; "Z2", box Z2s]
|> namedParams
|> R.cbind

let svm_model =
["x", box XMat; "y", box Ys ; "type", box "C"; "gamma", box 1.0]
|> namedParams
|> R.svm

let svm_predict = R.predict(svm_model, ZMat)

let res =
if svm_predict.Type = RDotNet.Internals.SymbolicExpressionType.IntegerVector then
svm_predict.AsInteger()
|> List.ofSeq
else failwithf "Expecting a Numeric but got a %A" svm_predict.Type

printfn "The predicted values are: %A" res
// The predicted values are: [1; 2; 1; 2; 1; 2; 1; 1; 1; 2]

这是原始的 R 代码:

library(stats)
library(e1071)

// Random number generator
x1 <- 10 * rnorm(10)
x2 <- 5 * rnorm(10)
x = cbind(x1, x2)

z1 <- 10 * rnorm(5)
z2 <- 5 * rnorm(5)
z = cbind(z1, z2)

zs <- c(0,1,0,1,0,1,0,1,0,1)

svm_fit = svm(x=x,y=zs,type="C",gamma=1.0)
svm_pred = predict(svm_fit, z)

print(svm_pred)
1 2 3 4 5
1 0 1 1 1
Levels: 0 1

最佳答案

我怀疑问题可能出在将参数传递给 R.predict 函数时。我不是 SVM 方面的专家,所以我不确定这应该给出什么结果,但是当我按如下方式调用它时,我得到的结果与您的 R 版本类似:

let svm_predict = 
namedParams ["object", box svm_model; "newdata", box ZMat ]
|> R.predict

我认为发生的事情是 R 类型提供程序推断了有关 predict 函数的参数名称的一些信息,但无法准确地弄清楚第二个参数是什么 - 所以而不是将其提供为 newdata,它会将其提供为其他内容。

关于r - 为什么 R.predict.svm 返回错误大小的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com