如何在朴素贝叶斯分类器中使用k折交叉验证?

时间:2014-10-02 11:41:01

标签: classification cross-validation

我尝试使用朴素贝叶斯分类器对文本进行分类,并且还想使用k折交叉验证来验证分类结果。但我仍然对如何使用k折交叉验证感到困惑。据我所知k-将数据划分为k个子集,然后将k个子集中的一个用作测试集,并将其他k-1个子集放在一起以形成训练集。我认为,作为训练集,数据必须具有训练标签。因此,要使用k-fold交叉验证,所需数据是标记数据?,它是对吗?以及非标记数据如何?。

1 个答案:

答案 0 :(得分:0)

对于非标签数据,您必须使用群集方法,对于 nb ,也许此代码可以帮助您:

@MessageDriven(name = "n", activationConfig = {...})
public class SubmitMessageBean implements MessageListener {

   @Inject
   JMSContext context;

   @Resource(mappedName = "...")
   Queue queue;

    @Override
    public void onMessage(Message message) {
        Integer retry = 0;
        try {
            // track how many time we tried before
            retry = message.getIntProperty("retry");

            // Submit data to somewhere with REST API
        } catch (IOException ex) {
            // Put it back in queue again
            // You can limit number of retry by keeping retry variable 
            if (retry < 5) {
                JMSProducer producer = this.context.createProducer();
                producer.setProperty("retry", r);
                // Add some delay to start it again after a minute
                producer.setDeliveryDelay(60000);
                // Send it again with send()
            }
        } catch (JMSException ex) {
            e.printStackTrace();
        }
    }
}

kfolds 函数会将您的数据分成k个折叠。

欢呼声