Как я могу объявить Столбец как категориальную особенность в 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)