Тоже потратил сутки на эту проблему. Это не просто. Мое третье предложение касается кода, который я написал специально для этой цели.
Вариант 1
Как уже говорили другие комментаторы, predict(Vector) теперь доступен. Однако вам нужно знать, как построить вектор. Если нет, см. Вариант 3.
Вариант 2
Если цель состоит в том, чтобы избежать настройки сервера Spark (автономный или кластерный режимы), то можно запустить Spark в локальном режиме. Все это будет работать внутри одной JVM.
val spark = SparkSession.builder().config("spark.master", "local[*]").getOrCreate()
// create dataframe from file, or make it up from some data in memory
// use model.transform() to get predictions
Но это приводит к ненужным зависимостям в вашем модуле прогнозирования и потребляет ресурсы вашей JVM во время выполнения. Кроме того, если задержка прогнозирования имеет решающее значение, например, выполнение прогноза в течение миллисекунды после поступления запроса, то этот вариант слишком медленный.
Вариант 3
MLlib FeatureHasher Вывод a> может быть использован в качестве входных данных для вашего ученика. Класс хорош для одного горячего кодирования, а также для фиксации размера вашего измерения функции. Вы можете использовать его, даже если все ваши функции числовые. Если вы используете это в своем обучении, то все, что вам нужно во время прогнозирования, — это логика хеширования. Его реализован как искровой преобразователь, поэтому его нелегко повторно использовать вне искровой среды. Итак, я проделал работу по извлечению хэш-функции в библиотеку. Вы применяете FeatureHasher и своего ученика во время обучения, как обычно. Тогда вот как вы используете уменьшенный хэшер во время прогнозирования:
// Schema and hash size must stay consistent across training and prediction
val hasher = new FeatureHasherLite(mySchema, myHashSize)
// create sample data-point and hash it
val feature = Map("feature1" -> "value1", "feature2" -> 2.0, "feature3" -> 3, "feature4" -> false)
val featureVector = hasher.hash(feature)
// Make prediction
val prediction = model.predict(featureVector)
Вы можете увидеть подробности в моем github по адресу tilayealemu/sparkmllite. Если вы предпочитаете копировать мой код, взгляните на FeatureHasherLite.scala. Также есть образцы кода и модульные тесты. Не стесняйтесь создавать проблему, если вам нужна помощь.
person
tilish
schedule
21.03.2020
predict
,predictProbablity
иpredictRaw
, работающие с векторами, разве вы не можете их использовать? - person Mateusz Dymczyk   schedule 15.03.2016mllib
? Я не уверен, что они все еще поддерживают его, но он есть. - person Mateusz Dymczyk   schedule 16.03.2016