Mlib RandomForest (Spark 2.0) предсказывает один вектор

После обучения RandomForestRegressor в PipelineModel с использованием mlib и DataFrame (Spark 2.0) я загрузил сохраненную модель в свою среду RT, чтобы прогнозировать, используя модель, каждый запрос обрабатывается и преобразуется через загруженную PipelineModel, но в процессе мне пришлось преобразовать вектор с одним запросом к одной строке DataFrame с использованием spark.createdataframe - все это занимает около 700 мс!

по сравнению с 2,5 мс, если я использую mllib RDD RandomForestRegressor.predict(VECTOR). Есть ли способ использовать новый mlib для предсказания одного вектора без преобразования в DataFrame или сделать что-то еще, чтобы ускорить процесс?

0 ответов

На основе фрейма данных org.apache.spark.ml.regression.RandomForestRegressionModel также занимает Vectorкак вход. Я не думаю, что вам нужно преобразовывать вектор в фрейм данных для каждого вызова.

Вот как, я думаю, должен работать ваш код.

    //load the trained RF model
    val rfModel = RandomForestRegressionModel.load("path")  
    val predictionData = //a dataframe containing a column 'feature' of type Vector
    predictionData.map { row => 
        Vector feature = row.getAs[Vector]("feature")
        Double result = rfModel.predict(feature)
        (feature, result)
    }

Другие вопросы по тегам