PySpark에서 벡터 데이터를 열로 분할
벡터 데이터가 있는 "벡터" 열을 각각 하나씩 여러 열로 변환하는 문제 벡터의 차원은 데이터 분석 및 기계 학습에서 자주 발생합니다. 이 질문은 Apache PySpark의 맥락에서 이 문제를 다룹니다.
Spark를 사용한 추출 >= 3.0.0
Spark 버전 3.0.0 이상의 경우 단순화된 vector_to_array 함수를 사용하여 접근 방식을 사용할 수 있습니다.
<code class="python">from pyspark.ml.functions import vector_to_array (df .withColumn("xs", vector_to_array("vector"))) .select(["word"] + [col("xs")[i] for i in range(3)]))</code>
이렇게 하면 새 열이 생성됩니다. xs를 벡터 요소가 포함된 배열로 만듭니다.
Spark를 사용한 추출 < 3.0.0
3.0.0 이전 Spark 버전의 경우 다음 방법을 사용할 수 있습니다.
RDD로 변환 및 추출:
DataFrame을 RDD로 변환하고 벡터의 요소별 추출을 수행합니다. 값:
<code class="python">def extract(row): return (row.word, ) + tuple(row.vector.toArray().tolist()) df.rdd.map(extract).toDF(["word"])</code>
UDF 접근 방식:
사용자 정의 함수(UDF)를 정의하여 벡터 열을 배열로 변환:
<code class="python">from pyspark.sql.functions import udf, col from pyspark.sql.types import ArrayType, DoubleType def to_array(col): def to_array_(v): return v.toArray().tolist() return udf(to_array_, ArrayType(DoubleType())).asNondeterministic()(col) (df .withColumn("xs", to_array(col("vector"))) .select(["word"] + [col("xs")[i] for i in range(3)]))</code>
이 두 접근 방식 모두 벡터 요소를 별도의 열로 추출하여 추가 분석 및 사용이 가능합니다.
위 내용은 PySpark에서 벡터 데이터를 열로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!