2

Я обучил модель, используя org.apache.spark.mllib.tree.RandomForest с> 100 функциями, поэтому окончательные деревья принятия решений выглядят, например, как это:Как назначить метки для функций на модели RandomForrest в MLLIB/ApacheSpark

> "TreeEnsembleModel classifier with 3 trees 
> 
> Tree 0: 
>  If (feature 47 <= 0.0) 
>  If (feature 74 <= 0.0) 
>  If (feature 62 <= -94069.0) 
>  Predict: 0.0 
>  Else (feature 62 > -94069.0) 
>  Predict: 0.0 
>  Else (feature 74 > 0.0) 
>  Predict: 0.0 
>  Else (feature 47 > 0.0) 
>  Predict: 1.0 Tree 1: 
>  If (feature 83 <= 0.0) 
>  Predict: 0.0 
>  Else (feature 83 > 0.0) 
>  Predict: 1.0 Tree 2: 
>  If (feature 81 <= 0.0) 
>  Predict: 0.0 
>  Else (feature 81 > 0.0) 
>  If (feature 74 <= 0.0) 
>  If (feature 52 <= 19.0) 
>  Predict: 1.0 
>  Else (feature 52 > 19.0) 
>  Predict: 0.0 
>  Else (feature 74 > 0.0) 
>  Predict: 1.0 " 

Эти данные считываются из CSV файла conaining заголовки, которые я сохраненная прочь перед обработкой:

val headerAndRows = rdd.map(line => line.split(",").map(_.trim)) 
val header = headerAndRows.first 

Eg Я не хочу видеть «If (функция 47 < = 0.0)», но «If (bloodSugarLevel < = 0.0)»

Любая идея, как это может быть достигнуто (без меня изменяет исходный код org.apache. spark.mllib.tree.RandomForest :)

Спасибо большое!

ответ

0

Хотя я не эксперт в искры, я проверил все API, связанные с RF, и кажется, что единственный способ, которым я могу понять, - сопоставить строку с вашими заголовками.

Например, заменить подстроку "особенность " с заголовком() с использованием Regex.

Другой способ - изменить исходный код в spark.ml.classification.RandomRorestClassifier

 Смежные вопросы

  • Нет связанных вопросов^_^