J'ai un modèle lm
dans R que j'ai formé et sérialisé. A l'intérieur d'une fonction, où je passe en entrée le modèle et un vecteur caractéristique (un seul tableau), j'ai:Modèle linéaire R (lm) prédire la fonction avec un seul tableau
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';
Cela retourne le mauvais y_hat
!! Je sais cela parce que cette autre solution fonctionne (les entrées de cette fonction sont toujours le modèle (dans un bytearray) et un feat_vec
(tableau)):
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';
Qu'est-ce que je fais mal ?? C'est le même modèle non sérialisé, la première option devrait me donner la bonne réponse aussi ...
Est-ce code R? Cela ressemble à demi python; les deux-points ne fonctionnent pas de cette façon dans R, ni 'return' ou' + '. – alistaire
Oui, il est R + pseudocode - vous pouvez ignorer la déclaration de la fonction En fait - c'est dans une fonction PL/R dans Postgres mais je ne voulais pas mettre l'accent sur Postgres – strv7
... alors comment le pseudocode retourne un résultat , correct ou pas? – alistaire