我有一個lm
模型在R,我已經訓練和序列化。內的功能,其中,I通過作爲輸入的模型和特徵向量(一個單個陣列),我有:R線性模型(LM)預測函數與一個單陣列
CREATE OR REPLACE FUNCTION lm_predict(
feat_vec float[],
model bytea
)
RETURNS float
AS
$$
#R-code goes here.
mdl <- unserialize(model)
# class(feat_vec) outputs "array"
y_hat <- predict.lm(mdl, newdata = as.data.frame.list(feat_vec))
return (y_hat)
$$ LANGUAGE 'plr';
這將返回錯誤y_hat
!!我知道這是因爲這種解決方案的其他作品(輸入這個功能仍然是模型(爲bytearray)和一個feat_vec
(陣列)):
CREATE OR REPLACE FUNCTION lm_predict(
feat_vec float[],
model bytea
)
RETURNS float
AS
$$
#R-code goes here.
mdl <- unserialize(model)
coef = mdl$coefficients
y_hat = coef[1] + as.numeric(coef[-1]%*%feat_vec)
return (y_hat)
$$ LANGUAGE 'plr';
我在做什麼錯?這是同樣的非序列化的模型,第一個選項應該給我正確的答案以及...
這是R代碼裏面?它看起來像半蟒蛇;冒號中的冒號不會以這種方式工作,也不會返回''或'+'。 – alistaire
是的,它是R +僞代碼 - 你可以忽略函數聲明 實際上 - 這是在Postgres的PL/R函數中,但我不想把重點放在Postgres – strv7
...所以如何僞代碼返回結果,正確與否? – alistaire