Как я могу объявить Столбец как категориальную особенность в DataFrame для использования в мл

Как я могу объявить, что данный столбец в моемDataFrame содержит категорическую информацию?

У меня есть Spark SQLDataFrame который я загрузил из базы данных. Многие из столбцов в этомDataFrame имеют категорическую информацию, но они закодированы как длинные (для конфиденциальности).

Я хочу быть в состоянии сообщить spark-ml, что, хотя этот столбец является числовым, информация фактически является категоричной. Индексы категорий могут иметь несколько дыр, и это приемлемо. (Например, столбец может иметь значения [1, 0, 0, 4])

Я знаю, что существуетStringIndexer но я бы предпочел избежать хлопот кодирования и декодирования, особенно потому, что у меня есть много столбцов, которые имеют такое поведение.

Я бы искал что-то похожее на следующее

train = load_from_database()
categorical_cols = ["CategoricalColOfLongs1",
                    "CategoricalColOfLongs2"]
numeric_cols = ["NumericColOfLongs1"]

## This is what I am looking for
## this step detects the min and max value of both columns
## and adds metadata to indicate this as a categorical column
## with (1 + max - min) categories
categorizer = ColumnCategorizer(columns = categorical_cols,
                                autoDetectMinMax = True)
##

vectorizer = VectorAssembler(inputCols = categorical_cols + 
                                         numeric_cols,
                             outputCol = "features")
classifier = DecisionTreeClassifier()
pipeline = Pipeline(stages = [categorizer, vectorizer, classifier])
model = pipeline.fit(train)

Ответы на вопрос(2)

Ваш ответ на вопрос