Я использую scikit-learn для обучения GMM и пытаюсь изменить количество компонентов смеси, перейдя по списку целых чисел. Но когда я печатаю мои результирующие модели, я получаю только те, у которых есть 3 компонента смеси, или все, что я ставлю в качестве последнего элемента в моем списке.Python: list iteration возвращает только последнее значение
Это мой код:
from sklearn.mixture import GMM
class_names = ['name1','name2','name3']
covs = ['spherical', 'diagonal', 'tied', 'full']
num_comp = [1,2,3]
models = {}
for c in class_names:
models[c] = dict((covar_type,GMM(n_components=num,
covariance_type=covar_type, init_params='wmc',n_init=1, n_iter=10)) for covar_type in covs for num in num_comp)
print models
Может кто-то помочь, пожалуйста? Большое спасибо заранее!
Отлично, спасибо! Я выбрал последний вариант. Есть ли способ отсортировать вывод таким образом, чтобы у меня сначала были все модели для class_name 1, затем все модели для class_name 2, затем все модели для class_name 3? На данный момент это очень грязно, и трудно понять результаты. – Kaly
Вы должны задать вопрос о сортировке в новом посте, поскольку он не связан с вашим исходным сообщением. –
@ пользователь1372560 Пожалуйста, делайте * не * задайте вопрос об этом. Просто выполните поиск 'python dict sorting', и вы найдете десятки ответов на свой вопрос. В частности: 'dict' не сортируются *, если вы хотите отсортированный вывод, вам нужно поместить данные в список ('data = list (the_dict.items())), после чего вы хотите отсортировать данные с заданным 'ключ':' data.sort (ключ = ...) '. В вашем случае вы можете использовать 'key = lambda item: (item [0] [:: - 1], item [1])', который сортирует весь элемент сначала по количеству компонентов, затем по 'covar_type', а затем по значению. – Bakuriu