Я получаю нежелательный вывод о выполнении функции для обнаружения выбросов. код следующий - PullRequest
0 голосов
/ 16 января 2020
  ```
  outliers = []
   ` def detect_outliers(data): `
        threshold=3
  `      mean = np.mean(data) `
  `      std = np.std(data)  `
   `     for i in data:    `
     `       z_score = (i-mean)/std `
       `     if np.abs(z_score) > threshold: `
          `      outliers.append(i)  `
        return outliers 

```detect_outliers(B5)  ```
output : [999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0, 999.0]  

Столбец B5 имеет 6 выбросов, и я получаю 8, как вы можете видеть выше. функция не дает желаемого количества выбросов. Например, если у меня есть 4 выброса в столбце (данные), это дает 6 выбросов. при выполнении кода для одного из столбцов, которые у меня есть в качестве входной функции, я получаю 3 выброса вместо 2.

1 Ответ

0 голосов
/ 16 января 2020

Вы должны инициализировать outliers внутри функции. В противном случае каждый раз, когда вы звоните detect_outliers(), вы добавляете результаты предыдущего вызова.

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