我的表包含一个字符字段和两个数字字段:
CREATE TABLE lr_source (Char01 varchar(250)
,PLNumeric01 numeric
,PLNumeric02 numeric);
我想训练线性回归模型,其中Char01和PLNumeric01作为自变量,PLNumeric02作为因变量。
SELECT madlib.linregr_train( 'lr_source', --source table
'lr_model',--model table
'PLNumeric02', --dependent variable
'ARRAY[PLNumeric01, Char01 ]' --independent variables
);
当我在查询之上运行时,它失败并出现以下错误:
ERROR: spiexceptions.DatatypeMismatch: ARRAY types numeric and character varying cannot be matched
如何将非数字字段用作自变量?
答案 0 :(得分:2)
我建议你按照编码你的分类变量 http://madlib.apache.org/docs/master/group__grp__encode__categorical.html 这会使它们成为数字,然后你可以将它们传递给线性回归。
此外,您可能希望在用户文档示例中添加明确的拦截:
SELECT madlib.linregr_train( 'houses',
'houses_linregr_bedroom',
'price',
'ARRAY[1, tax, bath, size]',
'bedroom'
);