Модель ML Pipeline обнаруживает значение 1 + numClass по сравнению с количеством уникальных значений в столбце метки - PullRequest
0 голосов
/ 11 ноября 2019

При создании конвейера для построения модели LogisticRegression, если гиперпараметру "Семейство" присвоено значение в виде "биномиального", процесс сборки конвейера для построения модели завершается с ошибкой:

IllegalArgumentException: 'requirement failed: Binomial family only supports 1 or 2 outcome classes but found 3.'

Сбой, даже если в зависимой переменной или метке col только 2 значения классов. Это было проверено путем отдельного запуска индексаторов и проверки отдельных значений в столбце индексированных меток. При отдельном запуске индексаторов для данных обучения столбец меток содержит только два класса. Значения в метке цв. 0,0 и 1,0

train_data.select('label').distinct().show()

+----------------------------+
|label|
+----------------------------+
|                           N|
|                           X|
+----------------------------+

featureIndexer = StringIndexer(inputCol=label, outputCol='label_stringIndexer_indexed').setHandleInvalid("keep")                
train_data=featureIndexer.fit(train_data).transform(train_data)
train_data.select('label_stringIndexer_indexed').distinct().show()

+--------------------------------------------------+
|label_stringIndexer_indexed|
+--------------------------------------------------+
|                                               0.0|
|                                               1.0|
+--------------------------------------------------+

Когда вышеуказанный индексатор строк используется в конвейере для соответствия модели LogisticRegression или DecisionTreeClassification, при печати значения numClasses модели он печатает 3. DecisionTree подбор модели завершается, тогда как подбор модели LogisticRegression завершается с ошибкой

IllegalArgumentException: 'требование не выполнено: биномиальное семейство поддерживает только 1 или 2 класса результата, но найдено 3.'

Однакотот же индексатор при использовании без опции «keep», значение numClasses печатается как 2, и оба DecisionTree и LogisticRegression Model работают нормально. Было бы здорово, если бы кто-то мог предложить возможные причины такого поведения. Поведение замечено в версии 2.3.4 и ниже. Не уверен, имеет ли место то же самое в более высоких версиях spark.

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