Я использую GridsearchCV для настройки параметров.Я использую оценку KNNClassifier с алгоритмом kd_tree.Единственный параметр, который я настраиваю, это n_neighbours, которые я передаю в сетке параметров.
Вывод , который я получаю, показан ниже
KNN Hyper GridSearchCV лучший результат KNeighborsClassifier(алгоритм = 'kd_tree', leaf_size = 30, метрика = '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 best Score 0,83376456
KNN Гиперпараметр GridSearchCV best Параметр {'n_neighbors': 31}
Вопросы
как определить оптимальный n_neighbours из выводагенерируется, когда алгоритм равен 'kd_tree'?
Почему выходные данные GridsearchCV отличаются, когда значение для алгоритма в классификаторе KNN равно changed от 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 Hyperпараметр с использованием 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, метрика = 'minkowski', metric_params = нет, n_jobs =-1, n_neighbors = 14, p = 2, веса = 'равномерное')
KNN Hyper GridSearchCV best Параметр [0.71428571 0.78571429 0.92857143 ... 0.85714286 0.78571429 0.85714286]
Я ожидал, что Gridsearchcv будетвыведите строку наподобие следующего
KNN Hyper-параметра, используя GridSearchЛучший параметр CV {n_neighbors ':?}
при использовании algo = kd_tree, как при algo = brute
Извините за длинный пост.