python的sklearn機器學習SVM中的NuSVC執行報錯:ValueError: b'specified nu is infeasible'
阿新 • • 發佈:2019-01-08
早上在使用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訓練的效果更好。