Выводит вывод GridsearchCV при использовании KNNClassifier в качестве estrimator и алгоритма как kd_true
Я использую GridsearchCV для настройки параметров. Я использую оценку KNNClassifier с алгоритмом kd_tree. Единственный параметр, который я настраиваю, это n_neighbours, которые я передаю в сетке параметров.
Вывод, который я получаю, показан ниже
KNN Hyper GridSearchCV лучший результат KNeighborsClassifier(алгоритм ='kd_tree', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=-1, n_neighbors=14, p=2, веса = 'равномерный')
KNN Hyper GridSearchCV лучший параметр [0,71428571 0,78571429 0,92857143 ... 0,85714286 0,78571429 0,85714286]
если я изменю алгоритм на brute_force, то результат, который я получу, будет таким:
Гиперпараметр KNN GridSearchCV лучший результат 0,8375451263537906
Гиперпараметр KNN GridSearchCV лучший параметр {'n_neighbors': 31}
Вопросы
как узнать оптимальный n_neighbours из вывода, сгенерированного, когда алгоритм равен 'kd_tree'?
Почему выходные данные GridsearchCV отличаются, когда значение для алгоритма в классификаторе KNN изменяется с brute_force на kd_tree
def KNNgridsearchCV(hyperparam,algo,xdata,ydata):
#KNN classifier - the single parameter that can tuned is n_neighbors
param_grid = {'n_neighbors':np.arange(1,hyperparam)}
knn = KNeighborsClassifier(algorithm=algo)
knn_cv= GridSearchCV(knn,param_grid,cv=10,verbose=1,n_jobs=-1)
#knn_cv.fit(bowtrain8_scaled,y_trn8)
knn_cv.fit(xdata,ydata)
return [knn_cv.best_score_,knn_cv.best_params_,knn_cv]
Случай 1.
Вызов вышеуказанной функции с помощью algo = 'brute_force'
return_list = KNNgridsearchCV(15,'brute',Xactual_scaled,f10ydata)
вывод из функции для оптимальных n-соседей
print("KNN Hyper parameter using GridSearchCV best Score {0}\n".format(return_list[0]))
print("KNN Hyper parameter using GridSearchCV best Parameter {0}\n".format(return_list[1]))
Выход
Гиперпараметр KNN с использованием GridSearchCV лучший результат 0,8379462494985961
Гиперпараметр KNN с использованием GridSearchCV best Parameter {'n_neighbors': 9}
Случай 2
Вызов вышеуказанной функции с помощью algo='kd_tree'
return_list = KNNgridsearchCV(15,'kd_tree',Xactual_scaled,f10ydata)
Выход
KNN Hyper GridSearchCV лучший результат KNeighborsClassifier(алгоритм ='kd_tree', leaf_size=30, metric='minkowski', metric_params=None, n_jobs=-1, n_neighbors=14, p=2, веса = 'равномерный')
KNN Hyper GridSearchCV лучший параметр [0,71428571 0,78571429 0,92857143 ... 0,85714286 0,78571429 0,85714286]
Я ожидал, что Gridsearchcv выведет строку, подобную следующей
Гиперпараметр KNN с использованием GridSearchCV best Parameter {'n_neighbors':?}
при использовании algo=kd_tree, как при algo = brute
Простите за длинный пост.