我的表中包含一个字符字段和两个数值字段:
CREATE TABLE lr_source (Char01 varchar(250),PLNumeric01 numeric,PLNumeric02 numeric);
我想使用Char01和PLNumeric01作为独立变量,PLNumeric02作为因变量来训练线性回归模型。
SELECT madlib.linregr_train( 'lr_source', --源表 'lr_model',--模型表 'PLNumeric02', --因变量 'ARRAY[PLNumeric01, Char01 ]' --独立变量 );
当我运行上述查询时,会出现以下错误:
ERROR: spiexceptions.DatatypeMismatch: ARRAY types numeric and character varying cannot be matched
如何将非数值字段用作独立变量呢?
回答:
我建议您按照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' );