对于图片或文本,如果童鞋们需要初试分类效果,在MatLab做实验是比较简单的。例如:使用Libsvm库函数svmtrain()训练学习出一个模型Factor, 然后代入Factor,得到预测标签向量Predict_label。


但是,这些都是人家的工作,假若我们加入自己的思路呢?例如:对于图片分类实验,预测标签的时候,加入K阶标签共现值呢?你或许不是仅仅得到预测标签Predict_label,而是希望得到标签概率向量 Scores,输出概率值。


在Libsvm下怎么做?简单。

Factor = svmtrain(train_label, train_data, '-b 1');

[predicted_label, accuracy, Scores] = svmpredict(test_label, test_data, Factor, '-b 1');

这里,-b 1表示打开概率输出开关。默认是:-b 0,不输出概率值。

训练标签:train_label,

训练数据:train_data,

预测标签:predicted_label,

测试数据:test_data

查准率:accuracy

标签概率:Scores


若是完全忽略掉predicted_label(预测标签向量), accuracy(查准率),则libsvm函数写为:

test_label = zeros(size(X_te,1), 1);% 哑元test_label

Factor = svmtrain(train_label, train_data, '-b 1');

[~, ~, Scores] = svmpredict(test_label, test_data, Factor, '-b 1');


建议拿点真实的、靠谱的公开数据集玩玩。例如:Corel 5K等等。太多啦。


当然,这里,我们还仅仅是只谈论多类单标签(Multi Class & Single Label)问题。而没有涉及多类多标签(Multi Class & Multi Label)问题。