python – scikit-learn OpenMP libsvm

我正在使用scikit-learn SVC来分类一些数据.我想提高培训效果.

clf = svm.SVC(cache_size=4000, probability=True, verbose=True)

由于与libsvm和libsvm的sckikit-learn接口使用OpenMp,我希望:

export OMP_NUM_THREADS=16

将在多个核心上运行.
不幸的是,这没有帮助.

有任何想法吗?

谢谢

解决方法:

scikit-learn中libsvm的当前绑定中没有OpenMP支持.但是,如果您遇到sklearn.svm.SVC的性能问题,则很可能会使用更具可伸缩性的模型.

如果您的数据是高维的,它可能是线性可分的.在这种情况下,建议首先尝试更简单的模型,如朴素贝叶斯模型或sklearn.linear_model.Perceptron,这些模型已知非常快速的训练.您还可以尝试sklearn.linear_model.LogisticRegression和sklearn.svm.LinearSVC两者都使用比libsvm更具可扩展性的liblinear实现,尽管内存效率低于scikit-learn中的其他线性模型.

如果您的数据不是线性可分的,您可以尝试sklearn.ensemble.ExtraTreesClassifier(调整n_estimators参数以权衡训练速度与预测准确性).

或者,您可以尝试使用scikit的RBFSampler变换器来近似RBF内核 – 学习在输出上拟合线性模型:

http://scikit-learn.org/dev/modules/kernel_approximation.html

上一篇:如何在serialVersionUID发生变化后在java中加载libsvm模型


下一篇:其中Weka和LibSVM .jar文件在Java代码中用于SVM分类