Преобразование столбцов Dataframe в векторы в Spark - PullRequest
0 голосов
/ 09 ноября 2018

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

Например, в документации по scala для выполнения PCA есть:

"val data = Array(
Vectors.sparse(5, Seq((1, 1.0), (3, 7.0))),
Vectors.dense(2.0, 0.0, 3.0, 4.0, 5.0),
Vectors.dense(4.0, 0.0, 0.0, 6.0, 7.0))
val df = spark.createDataFrame(data.map(Tuple1.apply)).toDF("features")
val pca = new PCA().fit(df)"

и т.д .... для этого здесь: https://spark.apache.org/docs/latest/ml-features.html#pca

Есть ли способ, которым мне не нужно создавать эти векторы и просто настраивать их на уже созданный кадр данных. Созданный мною фрейм данных содержит более 50 столбцов и более 15 000 строк, поэтому создание векторов для каждого столбца не представляется возможным. У кого-нибудь есть идеи или предложения. Наконец, к сожалению, для моего проекта я ограничен использованием Spark в Scala. Мне не разрешается использовать Pyspark, Java для Spark или SparkR. Если что-то было неясно, пожалуйста, дайте мне знать. Спасибо!

1 Ответ

0 голосов
/ 09 ноября 2018

Требуется преобразователь векторного ассемблера, который принимает массив столбцов фрейма данных и создает один векторный столбец, а затем вы можете использовать конвейер ML с ассемблером и PCA.

Справочные документы здесь

  1. векторный ассемблер: https://spark.apache.org/docs/latest/ml-features.html#vectorassembler

  2. мл трубопровод: https://spark.apache.org/docs/latest/ml-pipeline.html

Если вам нужно больше, чем PCA, вы можете использовать низкоуровневые преобразования RDD.

...