У меня проблема с моим алгоритмом оптимизации функций genti c, который я пытаюсь построить. Идея состоит в том, что будет проверена указанная c комбинация характеристик, и если точность модели, использующей эти функции, выше, чем предыдущий максимум, тогда комбинация функций заменяет предыдущую максимальную комбинацию. при прохождении через оставшиеся потенциальные объекты таким образом, окончательная комбинация должна быть оптимальной комбинацией объектов с учетом размера вектора объектов. В настоящее время код для достижения этой цели выглядит следующим образом:
def mutate_features(features, feature):
new_features = features
index = random.randint(0,len(features)-1)
new_features[index] = feature
return new_features
def run_series(n, f_list, df):
features_list = []
results_list = []
max_results_list = [[0,0,0,0,0]]
max_feature_list = []
features = [0,0,0,0,1]
for i in range(0,5): # 5 has just been chosen as the range for testing purposes
results = run_algorithm(df, f_list, features)
features_list.append(features)
results_list.append(results)
if (check_result_vector(max_results_list, results)):
max_results_list.append(results)
max_feature_list.append(features)
else:
print("Revert to previous :" +str(max_feature_list[-1]))
features = max_feature_list[-1]
features = mutate_features(features, f_list[i])
print("Feature List = " +str(features_list))
print("Results List = " +str(results_list))
print("Max Results List = " +str(max_results_list))
print("Max Feature List = "+str(max_feature_list))
Вывод этого кода был включен ниже;
Нажмите, чтобы увеличить или увеличить фотографию
Раздел, который я не понимаю, является выводом max_feature_list
и feature_list
.
Если что-либо добавленный с помощью .append()
к max_feature_list
или feature_list
внутри для l oop, кажется, что все элементы, которые уже являются членами списка, изменяются так же, как и последнее добавление в список , Возможно, я не совсем понимаю синтаксис / logi c вокруг этого и буду очень признателен за любые отзывы о том, почему программа делает это.