python - SVC 无法解决 MNIST
问题描述
我正在使用以下代码分解 MNIST 并运行 SVM:
mnist = fetch_openml('mnist_784', version=1)
X, y = mnist['data'], mnist['target']
y = y.astype(np.uint8)
X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]
svm_clf = SVC()
svm_clf.fit(X_train, y_train)
昨晚我让它跑了。三个小时过去了,还是没有解决。
我得到了未来的警告
FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.
"avoid this warning.", FutureWarning)
但我无法想象不设置伽玛会以这种方式影响它。
我在 Jupyter 5.7.8 中运行 Python 3.6.7。
解决方案
确实,没有解决办法。随着训练向量数量的增加,训练时间也会增加。
参考:https ://scikit-learn.org/stable/modules/svm.html#complexity
仅作记录,SVM 非常适合解决这些问题(请参阅此处:https ://scikit-learn.org/stable/auto_examples/classification/plot_digits_classification.html ),但是当数据集很大时,它们会变得很慢。
编辑1:在sklearn网站上有这个:
该实现基于 libsvm。拟合时间至少与样本数量成二次方关系,超过数万个样本可能不切实际。对于大型数据集,可以考虑使用 sklearn.linear_model.LinearSVC 或 sklearn.linear_model.SGDClassifier,可能在 sklearn.kernel_approximation.Nystroem 转换器之后。
推荐阅读
- spring - 当异常不可重试时向 DLQ 发送消息
- c# - ExchangeService FindItems 突然间断不工作
- html - 如何去除底部的空白
- azure - 将 DropWizard 部署到 Azure
- jenkins - 在用户级别设置环境变量
- python - 将表格插入邮件正文
- android - 模拟器硬件键盘错误映射
- python - 当我输入 source env/bin/activate 时如何在 vs 代码编辑器中激活 virtualenv 它没有激活
- python - 如何根据列表中的项目从 xlsx 文件中返回一行
- docker - 如何修复 Kubernetes 创建容器错误