0

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

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

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

4

1 回答 1

1

我建议您按照 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'
                           );
于 2017-08-28T19:31:51.080 回答