У меня есть вектор признаков формы (14, 30, 70)
и соответствующая метка формы (14,)
. Я оставляю одну перекрестную проверку без исключения следующим образом:
score=[]
for train,test in LeaveOneOut().split(feature):
X_train=feature[train].reshape(-1,70)
X_test=feature[test].reshape(-1,70)
y_train=np.concatenate([[i]*30 for i in label[train]])
y_test=np.concatenate([[i]*30 for i in label[test]])
clf=SVC(kernel='rbf')
clf.fit(X_train,y_train)
score.append(clf.score(X_test,y_test))
Теперь я хочу найти лучший гиперпараметр классификатора SVM, используя GridSearchCV
. Но я не могу передать 3D-функцию в функцию GridSeachCV
. В случае 2D-вектора признаков я выполняю поиск по сетке следующим образом. Как это сделать, если у меня есть 3D вектор?
def svc_param_selection(X, y):
Cs = [ 0.1, 1, 10,15,20,25,30,40,50,60,70,100,120]
gammas = [0.0001,0.0005,0.001,0.005,0.008, 0.01, 0.1,0.3,0.5, 1]
param_grid = {'C': Cs, 'gamma' : gammas}
grid_search = GridSearchCV(SVC(kernel='rbf'), param_grid, cv=10)
grid_search.fit(X, y)
grid_search.best_params_
return grid_search.best_score_