복붙노트

[SCALA] 스파크 ML VectorAssembler 이상한 출력을 반환

SCALA

스파크 ML VectorAssembler 이상한 출력을 반환

나는 VectorAssembler에서 아주 이상한 문제가 발생하고 있고 다른 사람이 볼 경우 궁금 해서요.

내 시나리오는 매우 간단합니다. 나는 몇 가지 표준 지능과 두 필드를 가지고 있고 또한 몇 가지 여분의 열을 계산 CSV 파일에서 데이터를 구문 분석합니다. 내 분석 기능이 반환합니다 :

val joined = countPerChannel ++ countPerSource //two arrays of Doubles joined
(label, orderNo, pageNo, Vectors.dense(joinedCounts))

내 주요 기능은이 같은 분석 함수를 사용합니다 :

val parsedData = rawData.filter(row => row != header).map(parseLine)
val data = sqlContext.createDataFrame(parsedData).toDF("label", "orderNo", "pageNo","joinedCounts")

I는이 같은 VectorAssembler을 사용합니다 :

val assembler = new VectorAssembler()
                           .setInputCols(Array("orderNo", "pageNo", "joinedCounts"))
                           .setOutputCol("features")

val assemblerData = assembler.transform(data)

그것이이처럼 보이는 VectorAssembler에 가기 전에 그래서 난 내 데이터의 행을 인쇄 할 때 :

[3.2,17.0,15.0,[0.0,0.0,0.0,0.0,3.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,4.0,0.0,0.0,2.0]]

VectorAssembler I의 변환 함수 후 동일한 데이터 행을 인쇄하고이 얻을 :

[3.2,(18,[0,1,6,9,14,17],[17.0,15.0,3.0,1.0,4.0,2.0])]

도대체 일이야? VectorAssembler 무슨 짓을하고있다? 나는 '더블 모든 계산을 확인하고도 간단한 스파크 예제를 따라와 내 코드에 어떤 문제가 있는지 볼 수 없습니다했습니다. 너는 할수 있니?

해결법

  1. ==============================

    1.출력에 대한 이상한 것은 없다. 귀하의 벡터 따라서 불꽃이의 스파 스 표현을 사용 제로 요소를 많이 갖고있는 것 같아요.

    출력에 대한 이상한 것은 없다. 귀하의 벡터 따라서 불꽃이의 스파 스 표현을 사용 제로 요소를 많이 갖고있는 것 같아요.

    더 설명하기 :

    당신의 벡터 (18 개) 요소 (차원)로 구성되어있다처럼 보인다.

    벡터에서이 지수 [0,1,6,9,14,17]를 순서대로 비 영 요소를 포함한다 [17.0,15.0,3.0,1.0,4.0,2.0]

    스파 스 벡터 표현은 컴퓨팅에 따라서 쉽고 빠르게 계산 공간을 절약하는 방법입니다. 여기 스파 스 표현에 대한 자세한.

    지금은 물론 당신은 조밀 한 표현으로 그 희소 표현을 변환 할 수 있지만, 비용에 온다.

    혹시 기능의 중요성을 점점에 관심이있다, 따라서 나는이 살펴보고 조언.

  2. from https://stackoverflow.com/questions/40505805/spark-ml-vectorassembler-returns-strange-output by cc-by-sa and MIT license