Независимо от правильности кода, я постараюсь ответить на ваш вопрос о том, как выполнить настройку гиперпараметров.Вы должны начать определять набор гиперпараметров, которые будут определять ваш поиск по сетке гиперпараметров.Для каждого набора гиперпараметров
Hset1 = (par1Value1, par2Value1, ..., par3Value1)
вы обучаете свою модель на тренировочном наборе и используете независимый набор проверки для измерения вашеготочность (или любые метрики, которые вы хотите использовать).Вы сохраняете это значение (например, A_Hset1).Когда вы сделаете это для всех возможных наборов гиперпараметров, у вас будет набор мер
(A_Hset1, A_Hset2, A_Hset3 ... A_HsetK).
Каждый из этих показателей говоритнасколько хороша ваша модель для каждого набора гиперпараметров, так что ваш набор оптимальных гиперпараметров
H_setOptimal = HsetX |A_setX = max (A_Hset1, A_Hset2, A_Hset3 ... A_HsetK)
Чтобы проводить честные сравнения, вы должны обучать модель всегда на одних и тех же данных и всегда использовать один и тот же набор проверки.
Я не опытный пользователь Python, поэтому, возможно, вы найдете более подходящие предложения, но я бы хотел создать список словарей, где каждый словарь содержит набор гиперпараметров, которые вы хотите протестировать:
grid_search=[{"par1":"val1","par2":"val1","par3":"val1",..., "res"=""},
{"par1":"val2","par2":"val1","par3":"val1",..., "res"=""},
{"par1":"val3","par2":"val1","par3":"val1",..., "res"=""},
,...,
{"par1":"valn","par2":"valn","par3":"valn",..., "res"=""}]
Таким образом, вы можете сохранить свои результаты в поле "res" соответствующего словаря и отслеживать исполнения для каждого набора параметров.
for set in grid_search:
#insert here your training and accuracy evaluation using the
#parameters in set
set["res"]= the_Accuracy_for_HyperPar_in_set
Надеюсь, это поможет.