python - LinearSVC(scikit-learn)没有取得任何进展
问题描述
我正在尝试为图像二进制分类问题训练一个线性 SVC 模型(使用 scikit-learn)。对于训练,我有大约 6 万张训练图像,每张都有 1800 像素。是的,我真的很想使用 SVM 相关的算法而不是深度学习,因为它是为了学习目的。但问题是,培训已经花费了几个小时,但并没有显示出任何进展。在训练之前,我通过除以 255 将像素值归一化为 0-1 范围。但是这里可能有什么问题?有什么我可以调整或注意的建议吗?
dataX = dataX/255.
dataY = np.ravel(dataY)
X_train, X_test, y_train, y_test = train_test_split(dataX, dataY, test_size=0.1, random_state=24, shuffle=True)
linear_classifier = svm.LinearSVR(random_state=0, tol=1e-5, verbose=1, max_iter=1000)
linear_classifier.fit(X_train, y_train)
解决方案
如果您的过程很慢,一个问题可能是最小化器在一段时间内不在正确的轨道上。这里也提到了这一点:ConvergenceWarning: Liblinear 收敛失败,增加迭代次数
对于您的第一步可能是更改迭代次数:
svm.LinearSVR(random_state=0, tol=1e-5, verbose=1, max_iter=10000)
在文档中,您还可以找到可以调整的其他参数:https ://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html
推荐阅读
- ios - 'catch' 块无法访问
- android - 如何在服务中获取上下文(不是 applicationContext)
- javascript - javascript 通过添加元素 innerHTML 值来“构建”(创建)一个超链接按钮
- php - PHP 静态变量问题
- python - 合并多个 CSV 文件并按字段删除重复项
- ios - 将数据从一个集合视图传递到嵌入式集合视图
- sql - 在 SQL 中,如何显示不相等的值?
- python - Tensorflow:估计器n_classes问题
- spring-integration - Spring-Integration http:outbound-gateway with Hystrix
- amazon-redshift - 如何在 Redshift 中将布尔值转换为 0 和 1?