私は訓練してシリアライズしたRのlm
モデルを持っています。私は、入力としてモデルと特徴ベクトル(単一のアレイ)を渡す機能、内部に、私は:1つの配列で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の中のモデル()と1 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コードのですか?それは半分のpythonのように見えます。コロンはRでそのようには動作せず、 'return'や' + 'も機能しません。 – alistaire
はい、それはR +擬似コードです - 関数宣言を無視することができます 実際には - これはPostgresのPL/R関数の中にありますが、Postgresに焦点を当てたくありません – strv7
...擬似コードはどのように結果を返します、正しいかどうか? – alistaire