Я предполагаю, что вы хотите выполнить поиск в сетке по разным class_weight
для класса "зарплата".
Значение class_weight
должно быть списком:
'class_weight':[{'salary':1}, {'salary':2}, {'salary':4}, {'salary':6}, {'salary':10}]
И вы можете упростить его с пониманием списка:
'class_weight':[{'salary': w} for w in [1, 2, 4, 6, 10]]
Первая проблема заключается в том, что значения параметров в dict parameters_to_tune
должны быть списком, а вы передали dict. Это можно исправить, передав вместо этого список словарей в качестве значения class_weight
, и каждый словарь содержит набор class_weight
для DecisionTreeClassifier
.
Но более серьезная проблема заключается в том, что class_weight
— это веса, связанные с классами, а в вашем случае «зарплата» — это название функции. Вы не можете назначать веса функциям. Сначала я неправильно понял ваше намерение, но теперь я не понимаю, чего вы хотите.
Форма class_weight
— это {class_label: weight}
, если вы действительно хотите установить class_weight
в вашем случае, class_label
должны быть такими значениями, как 0,0, 1,0 и т. д., а синтаксис будет выглядеть так:
'class_weight':[{0: w} for w in [1, 2, 4, 6, 10]]
Если вес класса велик, классификатор с большей вероятностью предскажет, что данные принадлежат этому классу. Один типичный случай использования class_weight
— это несбалансированные данные.
Вот пример, хотя классификатором является SVM.
Обновлять:
Полный parameters_to_tune
должен выглядеть так:
parameters_to_tune = {'min_samples_split': [2, 4, 6, 10, 15, 25],
'min_samples_leaf': [1, 2, 4, 10],
'max_depth': [None, 4, 10, 15],
'splitter' : ('best', 'random'),
'max_features':[None, 2, 4, 6, 8, 10, 12, 14],
'class_weight':[{0: w} for w in [1, 2, 4, 6, 10]]}
person
yangjie
schedule
05.08.2015
parameters_to_tune
должен быть словарем или списком словарей. Ваш первоначальный синтаксис правильный. Вам нужно только изменить пару ключ-значение class_weight в dict. (Извините, я не видел ваших обновлений только сейчас, но вам лучше сохранить исходный пост и добавить свои обновления, иначе люди не узнают исходный вопрос.) - person yangjie   schedule 06.08.2015class_weight
должен быть списком dict, вы снова сделали ошибку... - person yangjie   schedule 06.08.2015