SparkException: факторы ожидания теста хи-квадрат - PullRequest
1 голос
/ 29 октября 2019

У меня есть набор данных, содержащий 42 объекта и 1 метку. Я хочу применить метод выбора хи-квадрат селектор библиотеки искры ML перед выполнением дерева решений для обнаружения аномалии, но я сталкиваюсь с этой ошибкой во время применения хи-квадрат селектора:

org.apache. spark.SparkException: задание прервано из-за сбоя этапа: задание 0 на этапе 17.0 не выполнено 1 раз, самый последний сбой: потерянное задание 0.0 на этапе 17.0 (TID 45, localhost, драйвер исполнителя): org.apache.spark.SparkException: Chi-квадратный критерий ожидания (категориальные значения), но в столбце 11 обнаружено более 10000 различных значений.

Вот мой исходный код:

from pyspark.ml.feature import ChiSqSelector
selector = ChiSqSelector(numTopFeatures=1, featuresCol="features",outputCol="features2", labelCol="label")
result = selector.fit(dfa1).transform(dfa1)
result.show()

1 Ответ

0 голосов
/ 29 октября 2019

Как видно из сообщения об ошибке, ваш столбец features содержит более 10000 различных значений в векторе и выглядит как непрерывный, а не категориальный, ChiSq может обрабатывать только 10 000 категорий, и вы не можете увеличить это значение.

  /**
   * Max number of categories when indexing labels and features
   */
  private[spark] val maxCategories: Int = 10000

В этом случае вы можете использовать VectorIndexer с параметром .setMaxCategories() <10k для подготовки ваших данных. Вы можете попробовать другие методы для подготовки данных, но это не сработает, пока количество различных значений в векторе не станет> 10k.

...