Ошибка с значением `NU` при использовании GridSearchCV и OneClassSVM - PullRequest
0 голосов
/ 27 октября 2019

Я использую GridSearchCV, чтобы найти лучшие параметры для моей модели OneClassSVM. Я прочитал в документации, что значение nu должно быть от 0 до 1. В моем коде я всегда получаю сообщение об ошибке:

ValueError: nu <= 0 or nu > 1

Что я делаю не так?

import pandas as pd
from sklearn.svm import OneClassSVM

from sklearn.model_selection import GridSearchCV

import numpy as np

df = pd.read_csv('pitanja.csv')
#print(df)

x = df.iloc[:,:-1]

tuned_svm = {'cache_size':[70,80,90], 'coef0':[0.25,0.5,0.75], 'gamma':['auto'],
             'kernel':['poly','rbf','linear','sigmoid', 'precomputed'], 'random_state':[None],
             'shrinking':[True,False], 'tol':[0.05,0.1,0.2], 'verbose':[True],
             'nu':[0.1, 0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22, 0.23, 0.24,0,25,0.26,0.27]}

def scorer_f(estimator, X):   #your own scorer
      return np.mean(estimator.score_samples(X))

out_cls = GridSearchCV(OneClassSVM(), tuned_svm, scorer_f)          

r = df

model = out_cls .fit(x)
prediction = model.predict(x)

print(model.best_params_)

1 Ответ

1 голос
/ 27 октября 2019

Обнаружил ошибку:

'nu': [0,1, 0,11, 0,12, 0,13, 0,14, 0,15, 0,16, 0,17, 0,18, 0,19, 0,2, 0,21, 0,22, 0,23, 0,24, 0,25 , 0,26,0.27]

Если вам надоело вручную вводить эти значения, я рекомендую использовать 'nu':[0.1, np.linspace(0.11,0.27,17)].

...