0

我正在使用以下代码训练我的数据:

start_time := clock_timestamp();
  PERFORM madlib.create_nb_prepared_data_tables( 'nb_training',
                                                 'class', 
                                                 'attributes', 
                                                 'ARRAY[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57]', 
                                                 57, 
                                                 'categ_feature_probs', 
                                                 'numeric_attr_params', 
                                                 'class_priors' 
                                               );
  training_time := 1000* (extract(epoch FROM clock_timestamp()) - extract(epoch FROM start_time));

我的预测代码如下:

start_time := clock_timestamp();
  PERFORM madlib.create_nb_probs_view( 'categ_feature_probs', 
                                       'class_priors', 
                                       'nb_testing', 
                                       'id', 
                                       'attributes', 
                                       57, 
                                       'numeric_attr_params', 
                                       'probs_view' );

select * from probs_view
prediction_time := 1000 * (extract(epoch FROM clock_timestamp()) - extract(epoch FROM start_time));

训练数据包含 450000 条记录,而测试数据集包含 50000 条记录。

尽管如此,我的平均训练时间约为 17173 毫秒,而预测时间为 26481 毫秒。根据我对朴素贝叶斯的理解,prediction_time 应该小于 training_time。我在这里做错了什么?

4

1 回答 1

1

MADlib 的朴素贝叶斯分类处于早期阶段,这意味着接口和实现在这个阶段是初步的。有一堆开放的 JIRA告诉我,在升级为顶级模块之前需要付出一些努力。

于 2017-08-28T19:14:09.943 回答