我正在使用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