Обучение под наблюдением с алгоритмом geneti c в Python - PullRequest
0 голосов
/ 24 марта 2020

Я только начал изучать NEAT (Нейроэволюция расширенных топологий) и заметил, что основное внимание уделяется применению алгоритма для задач обучения с подкреплением. После игры с исходным кодом из: https://github.com/CodeReclaimers/neat-python я хотел посмотреть, как алгоритм работает над контролируемыми задачами обучения, такими как прогнозирование цен на жилье.

Мой набор данных имеет 10 функций (room_count, year_build, price, bathroom_count ...), и я выполнил часть обработки данных и стандартизацию числовых значений. У меня проблема с применением алгоритма NEAT для прогнозирования значений в столбце цены.

Основная проблема, с которой я столкнулся, связана с функцией фитнеса. Как я должен измерить оценку пригодности каждой популяции? Я пытался вычислить оценку Rˆ2 для каждого генома, но конечный результат был очень медленным (на завершение 5000 строк ушло более часа, а конечный результат был не таким уж большим)

def eval_genomes(genomes, config):
    for genome_id, genome in genomes:
        output = []

        genome.fitness = 0
        net = neat.nn.FeedForwardNetwork.create(genome, config)
        for i in range(0,x_train.shape[0]): // x_train.shape[0] = number of rows in my training dataset
            output.append(net.activate(x_train.iloc[i])[0]) // pass all the row values (room_count, year_build, bathroom_count...) of the training set 


        genome.fitness = metrics.r2_score(output, Y_train)

Я был бы признателен за любой вид помощь / подсказка для определения хорошей фитнес-функции.

...