Поиск по сетке Sklearn по 3D-вектору признаков вместо 2D-данных - PullRequest
0 голосов
/ 16 июня 2020

У меня есть вектор признаков формы (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_
...