【问题标题】:LinearSVC (scikit-learn) not making any progressLinearSVC(scikit-learn)没有取得任何进展
【发布时间】:2020-03-24 12:56:04
【问题描述】:

我正在尝试为图像二进制分类问题训练线性 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)

【问题讨论】:

  • 你能提供一个minimal, reproducible example吗?正如现在所说,问题完全取决于数据:如果数据,比如说,全是白噪声,那么这正是你所期望的行为。
  • 我添加了一些代码,同时训练完成并警告模型在 1000 次迭代后无法收敛。这是否意味着,我可以简单地增加迭代次数?是否有任何其他选项/参数可以调整以便更快收敛?

标签: python machine-learning scikit-learn svm svc


【解决方案1】:

如果您的过程很慢,一个问题可能是最小化器在一段时间内没有走上正确的轨道。这里也提到了这一点:ConvergenceWarning: Liblinear failed to converge, increase the number of iterations

您的第一步可能是更改迭代次数:

 svm.LinearSVR(random_state=0, tol=1e-5, verbose=1, max_iter=10000)

您还可以在文档中找到可以调整的其他参数:https://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 2018-04-30
    • 2014-12-03
    • 2020-01-15
    • 2018-10-21
    • 2021-01-23
    • 1970-01-01
    • 2016-02-23
    • 2023-04-07
    相关资源
    最近更新 更多