python - scikit-learn OpenMP libsvm

标签 python openmp libsvm scikit-learn

我正在使用 scikit-learn SVC 对一些数据进行分类。我想提高训练效果。

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

由于 sckikit-learn 与 libsvm 接口(interface),而 libsvm 使用 OpenMp,我希望:

export OMP_NUM_THREADS=16

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

有什么想法吗?

谢谢

最佳答案

scikit-learn 中 libsvm 的当前绑定(bind)不支持 OpenMP。但是,如果您在使用 sklearn.svm.SVC 时遇到性能问题,您很可能应该改用更具可扩展性的模型。

如果您的数据是高维数据,它可能是线性可分的。在这种情况下,建议首先尝试更简单的模型,例如众所周知的训练速度非常快的朴素贝叶斯模型或 sklearn.linear_model.Perceptron。您还可以尝试使用 liblinear 实现的 sklearn.linear_model.LogisticRegressionsklearn.svm.LinearSVClibsvm< 更具可扩展性 尽管内存效率低于 scikit-learn 中的其他线性模型。

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

或者,您可以尝试使用 scikit-learn 的 RBFSampler 转换器来近似 RBF 核 + 在输出上拟合线性模型:

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

关于python - scikit-learn OpenMP libsvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273738/

相关文章:

python - 解析字符串多个分隔符,返回带有样式和文本的元组列表

synchronization - OpenMP 命名的关键部分 : if a program variable is used, 是被评估还是被用作字符串而不被评估?

svm - LibSVM 是否接受带有科学格式 float 的训练文件?

python - 在分离之前等待 docker 容器健康检查成功

python - Django orm - 如何在不同日期的查询中获取不同的字段项

c++ - 在配置了 g++ 和 gcc 的 netbeans 中使用 -fopenmp 编译

matlab - Matlab中的两个同名函数

amazon-ec2 - 开始使用 EC2 进行计算密集型(非 Web)并行应用程序

python - 使用 Python 读取 .htm 文件时的编码问题

warnings - OpenMp 编码 : warning: ignoring #pragma omp parallel