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