В настоящее время я использую Scikit Learn со следующим кодом:
clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0,
class_weight='auto')
а затем подгонка и прогнозирование для набора данных с 7 различными метками. Я получил странный вывод. Независимо от того, какой метод перекрестной проверки я использую, предсказанная метка в наборе валидации всегда будет меткой 7.
Я пробую некоторые другие параметры, в том числе полный метод one ( svm.SVC()
) по умолчанию, но пока метод ядра, который я использую, используется rbf
вместо poly
или linear
он просто не будет работать, в то время как он действительно хорошо работает для poly
и linear
.
Кроме того, я уже пробовал прогнозировать данные поезда, а не данные проверки, и они идеально подходят.
Кто-нибудь видел подобную проблему раньше и знает, что здесь происходит?
Я никогда не смотрю подробно на свое распределение классов, но знаю, что около 30% из них - 7, 14% - 4.
Я даже пробую ручную реализацию 1-vs-rest, и она все еще не помогает.
источник
Ответы:
scikit-learn имеет ограниченные возможности поиска гиперпараметров, но вы можете использовать его вместе с библиотекой настройки, такой как Optunity . Пример настройки SVC с помощью scikit-learn можно найти здесь .
Отказ от ответственности: я ведущий разработчик Optunity.
источник
Проблема оказывается в тестировании параметров. Я не пробовал, когда
gamma
между 0,0 (что составляет 1 / n_feature) и 1. На моих данныхgamma
должно быть что-то повернуть вокруг1e-8
источник