python的sklearn机器学习SVM中的NuSVC运行报错:ValueError: b'specified nu is infeasible'

早上在使用NuSVC进行模型训练的时候,报错如下

Reloaded modules: __mp_main__
Traceback (most recent call last):

  File "<ipython-input-2-c95a09e8e532>", line 1, in <module>
    runfile

  File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 668, in runfile
    execfile(filename, namespace)

  File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/TfidfVectorizer-svm.py", line 58, in <module>
    clf = svm.NuSVC(nu=0.1).fit(X_train, y_train)

  File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\svm\base.py", line 187, in fit
    fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)

  File "C:\Users\peter\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\svm\base.py", line 276, in _sparse_fit
    random_seed)

  File "sklearn/svm/libsvm_sparse.pyx", line 144, in sklearn.svm.libsvm_sparse.libsvm_sparse_train

ValueError: b'specified nu is infeasible'

我查阅资料后发现是因为NuSVC参数nu的设置问题,使用如下代码一个个尝试nu参数的合适的值。

nus =[_/10 for _ in range(1,11,1)]
for nu in nus:
     clf = svm.NuSVC(nu=nu)
     try:
         clf.fit(X_train, y_train)#替换成自己的训练模型
     except ValueError as e:
         print("nu {} not feasible".format(nu))

当然另外一种解决方案就是把NuSVC换成LinearSVC,我发现LinearSVC训练的效果更好。

猜你喜欢

转载自blog.csdn.net/zhangpeterx/article/details/86064931