【问题标题】:No verbose for Nu_SVR in scikit-learnscikit-learn 中的 Nu_SVR 没有详细说明
【发布时间】:2018-05-30 15:53:08
【问题描述】:

我在 scikit learn 中使用 SVM,需要详细了解我的模型在训练时的表现。 但我无法在 SVM 中获得详细信息,并且我不断得到以下输出:*

 begin training ....
 [LibSVM]

这是我写的代码:

print("begin training ....")
svm = NuSVR(kernel="rbf",C=20, nu=0.9,verbose=True)
svm.fit(trX,trY)
print(".... training ended")

那么为什么我得到 [LibSVM] 而不是冗长的?我应该怎么做才能获得详细信息?

【问题讨论】:

  • libsvm 是内部使用的优化器。阅读文档,其中给出了有关此功能的一些警告(尽管它可能适用于这种简单的情况)。

标签: scikit-learn svm libsvm


【解决方案1】:

您可能在 Jupyter 笔记本或其他重定向标准输出 (stdout) 流的环境中使用它。

NuSVR 的 fit 方法将任务推给用 C++ (source here) 编写的 LibSVM。编译后的 C++ 代码将信息性消息写入标准输出。当在 NuSVR 中设置 verbose=True 时,它会尝试从标准输出中获取这些消息,但如果某些笔记本环境阻碍了这将不一定有效。

在普通的 Python 控制台(或与 pythonanywhere.com 一样正常)中测试相同的内容会产生详细消息:

*
optimization finished, #iter = 260
epsilon = -0.000005
obj = -255.403240, rho = -1.521151
nSV = 30, nBSV = 12
[LibSVM]NuSVR(C=20, cache_size=200, coef0=0.0, degree=3, gamma='auto', kernel='rbf',
   max_iter=-1, nu=0.9, shrinking=True, tol=0.001, verbose=True)

LibSVM 并不非常冗长:它不会在整个迭代过程中提供逐步消息,除非迭代出现问题。

【讨论】:

  • 感谢您的回答,实际上是的,我正在使用 jupyter notebook,并且由于 SVR 的详细信息仅在培训结束时出现,它对我没有多大帮助,所以感谢您的回答.
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2017-11-24
  • 1970-01-01
相关资源
最近更新 更多