2

Я работаю на Scala. У меня большой вопрос, ChiSqSelector, кажется, успешно уменьшает измерение, но я не могу определить, какие функции были уменьшены, что осталось. Как я могу узнать, какие функции были уменьшены?Выполнение функций тестовых данных, таких же, как данные поезда после выбора характеристик в искры

[WrappedArray(a, b, c),(5,[1,2,3],[1,1,1]),(2,[0],[1])] 
[WrappedArray(b, d, e),(5,[0,2,4],[1,1,2]),(2,[1],[2])] 
[WrappedArray(a, c, d),(5,[0,1,3],[1,1,1]),(2,[0],[1])] 

PS: когда я хотел сделать тестовые данные так же, как особенность выбранных данных поезда я обнаружил, что я не знаю, как сделать это в Скале.

ответ

2

Если вы используете MLlib версии ChiSqSelector вы можете selectedFeatures:

mllibModel: org.apache.spark.mllib.feature.ChiSqSelectorModel = ??? 
val features: Array[Int] = mllib.selectedFeatures 

Тем не менее, когда вы работаете с тестовыми данными, то лучше использовать селектор обученный на поездах наборе данных и не заморачиваться с инструкцией по эксплуатации выбор.

val testData: RDD[org.apache.spark.mllib.linalg.Vector] = ??? 
mllibModel.transform(testData) 

Те же правила применяются к ML версии. Вы можете использовать selectedFeatures извлечь массив индексов:

val mlModel: org.apache.spark.ml.feature.ChiSqSelectorModel = ??? 
val features: Array[Int] = mlModel.selectedFeatures 

, но это все же лучше держать модель и использовать на новых данных:

val testData: RDD[org.apache.spark.sql.DataFrame] = ??? 
mlModel.transform(testData) 

Если вы хотите удобочитаемый список функций, которые можно проанализировать метаданные столбца после преобразования, как показано в Tagging columns as Categorical in Spark

+0

Нет, я имею в виду, могу ли я использовать chisqModel.transform (testData), если тестовые данные без метки? – Rick

+0

Проверьте типы в ответе :) – zero323

+0

Если это помогло просто поддержать/принять ответ :) – zero323