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)
}