В PySpark, в чем разница между созданием фрейма данных с или без Vectors.dense?

#python #list #apache-spark #vector #apache-spark-sql

#python #Список #apache-spark #вектор #apache-spark-sql

Вопрос:

Я создаю 2 фрейма данных, обучающий и тестовый, у них обоих есть список в столбце объектов. Я показываю () оба, и все они возвращают одну и ту же структуру. Итак, мне интересно, в чем разница и почему проблемы с Vectors.dense?

 training = spark.createDataFrame(
    [
        (1.0, [0.0, 1.1, 0.1]),
        (0.0, [2.0, 1.0, -1.0]),
        (0.0, [2.0, 1.3, 1.0]),
        (1.0, [0.0, 1.2, -0.5]),
    ],
    ["label", "features"],
)

# Prepare test data
test = spark.createDataFrame(
    [
        (1.0, Vectors.dense([-1.0, 1.5, 1.3])),
        (0.0, Vectors.dense([3.0, 2.0, -0.1])),
        (1.0, Vectors.dense([0.0, 2.2, -1.5])),
    ],
    ["label", "features"],
)

training.show()
test.show()
  

Возврат:

  ----- ---------------- 
|label|        features|
 ----- ---------------- 
|  1.0| [0.0, 1.1, 0.1]|
|  0.0|[2.0, 1.0, -1.0]|
|  0.0| [2.0, 1.3, 1.0]|
|  1.0|[0.0, 1.2, -0.5]|
 ----- ---------------- 

 ----- -------------- 
|label|      features|
 ----- -------------- 
|  1.0|[-1.0,1.5,1.3]|
|  0.0|[3.0,2.0,-0.1]|
|  1.0|[0.0,2.2,-1.5]|
 ----- -------------- 
  

Спасибо, ребята

Ответ №1:

Я думаю, что сам получил ответ: для работы модели ML этому фрейму данных здесь нужен np.array, а не список. Моя интерпретация такова, что они похожи, но структура отличается.

Комментарии полностью приветствуются.