【发布时间】:2015-12-04 16:56:24
【问题描述】:
我有一个术语文档矩阵和相应的标签矩阵,我必须将数据集分成 10 个部分,并使用任意随机的 7 个部分来训练 libsvm 分类器并测试剩余的 3 个部分。 对于所有可能的情况,我必须这样做,即 10C7。 这是使用 SVM 进行训练和测试的代码,我无法理解如何对所有情况进行分类和迭代。
m = svm_train(labels[0:2000], rows_1[0:2000], '-c '+str(k)+' -g '+str(g))
p_label, p_acc, p_val = svm_predict(labels[2000:0], rows_1[2000:0], m)
acc.append(p_acc)
其中“labels”是标签数组,“rows_1”是术语文档矩阵的行。 我是新手,请帮忙!
【问题讨论】:
-
为什么 7 个用于训练,3 个用于测试?
-
当您标记此 scikit-learn 时,交叉验证的标准版本将是
cross_val_score(SVM(), rows_1, labels, cv=10),它将执行 10 倍分层交叉验证。您没有使用分层,这很可能会给您更多嘈杂的估计,因为不同的折叠将具有不同的类平衡。
标签: python machine-learning nlp scikit-learn libsvm