1. 程式人生 > >python的sklearn機器學習SVM中的NuSVC執行報錯:ValueError: b'specified nu is infeasible'

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訓練的效果更好。