Процентиль должна быть в диапазоне [0, 100] - PullRequest
0 голосов
/ 12 марта 2020

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

O = stats.scoreatpercentile(dfx[dfx['outlier'] == 1]['column_name'], np.abs(threshold))
l = stats.scoreatpercentile(dfx[dfx['outlier'] == 0]['column_name'], np.abs(threshold))
Data = stats.scoreatpercentile(dfx['column_name'], np.abs(threshold))
O, l, Data

К сожалению, я получаю следующую ошибку

ValueError: percentile must be in the range [0, 100]

У меня есть провел некоторое исследование, но не помогло с этой ошибкой

Ответы [ 2 ]

2 голосов
/ 12 марта 2020
Второй аргумент

scoreatpercentile должен быть в пределах 0 и 100, поэтому я предполагаю, что для некоторых значений threshold меньше -100 или больше 100.

Это потому, что математическое значение процентиля, что такое 200 процентиль? Возможное «решение» в этом случае состоит в том, чтобы сопоставить 100 всех значений над ним, вы можете сделать это следующим образом:

def get_perc(threshold):
    perc = np.abs(threshold)
    return 100 if perc>100 else perc

O = stats.scoreatpercentile(dfx[dfx['outlier'] == 1]['column_name'], get_perc(threshold))
l = stats.scoreatpercentile(dfx[dfx['outlier'] == 0]['column_name'], get_perc(threshold))
Data = stats.scoreatpercentile(dfx['column_name'], get_perc(threshold))
O, l, Data

Перед этим я бы рекомендовал прояснить понятие процентиля, а затем Вы сможете решить, является ли это хорошим решением для вас. Я нашел эту статью , которая объясняет это довольно просто, или вы можете проверить Википедия .

0 голосов
/ 12 марта 2020

второй аргумент: np.abs (порог) должен быть от 0 до 100. Для дополнительной информации [это]: https://docs.scipy.org/doc/numpy-1.12.0/reference/generated/numpy.percentile.html может помочь

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