ValueError: Ни одна функция в X не соответствует порогу дисперсии - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь использовать VarianceThreshold и получаю сообщение об ошибке:

ValueError: No feature in X meets the variance threshold 0.16000

Мой код:

    from sklearn.feature_selection import VarianceThreshold
    sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
    sel.fit(X)

X имеет следующие свойства:

Shape =  (4898, 11)
Type: =  <class 'pandas.core.frame.DataFrame'>

Что не так?

1 Ответ

0 голосов
/ 11 апреля 2020

Сообщение об ошибке говорит вам, что не так: ни одна из 10 функций не удовлетворяет требованию к отклонениям. Следовательно, для подгонки ваших данных не осталось никаких функций.

Поскольку вы забыли включить фактический пример, мы не можем многое сделать для дальнейшей диагностики или ремонта.


Да, вы можете получить пустой результат, но вы должны поймать исключение, которое, по-видимому, не задокументировано напрямую. Если вы выдаете VarianceThreshold проблему без решения - в том, что ни одна особенность не оказывает требуемого threshold влияния на метки, - тогда она выдает ValueError полученное вами исключение.

Вы преобразуете это как и любая другая подобная проблема, с обработчиком исключений:

from sklearn.feature_selection import VarianceThreshold

try:
    sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
    sel.fit(X)

except ValueError:
    print("No feature is strong enough to keep")
    sel = []

Решает ли это вашу проблему? Я нашел два примера, которые были похоронены в функциях; в этих случаях обработчик исключений функции просто использовал return 0 для любого исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...