2

我正在尝试在 scikit-learn 中训练 svm.sparse.SVC。目前特征向量的维数约为 70 万,用于训练的特征向量数量为 20k。我使用 csr 稀疏矩阵提供输入,因为每个特征向量中只有大约 500 个维度是非零的。该代码自过去 5 小时以来一直在运行。有没有估计需要多少时间?有什么方法可以更快地进行训练吗?内核是线性的。

4

1 回答 1

3

尝试使用sklearn.svm.LinearSVC. 这也有一个线性内核,但底层实现是liblinear,已知它更快。考虑到这一点,您的数据集并不是很小,因此即使是这个分类器也可能需要一段时间。


在第一条评论后编辑:我认为您有多种选择,但都不是完美的:

  • 非解决方案选项:收工并希望svm.sparse.SVC明天早上的培训已经完成。如果可以的话,买一台更好的电脑。
  • 作弊选项:放弃概率。你还没有告诉我们你的问题是什么,所以它们可能不是必需的。
  • 背靠墙选项:如果您绝对需要概率并且事情必须运行得更快,请使用不同的分类器。选项包括sklearn.naive_bayes.*, sklearn.linear_model.LogisticRegression。等等。这些训练起来会快得多,但你付出的代价是降低了准确性。
于 2013-03-01T10:19:18.163 回答