如何在使用MADlib-postgre训练线性回归模型时使用非数字自变量?

时间:2017-07-25 13:23:14

标签: postgresql machine-learning linear-regression madlib

我的表包含一个字符字段和两个数字字段:

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

如何将非数字字段用作自变量?

1 个答案:

答案 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'
                           );