VectorAssembler
에서 매우 이상한 동작이 발생했으며 다른 사람이 본 적이 있는지 궁금합니다.Spark ML VectorAssembler가 이상한 결과를 반환합니다.
내 시나리오는 매우 간단합니다. 나는 어떤 표준 Int
과 Double
필드를 가진 CSV
파일의 데이터를 분석하고 추가 열을 계산합니다. 내 분석 기능이 반환 : 나는 인쇄 할 때 그래서
val assembler = new VectorAssembler()
.setInputCols(Array("orderNo", "pageNo", "joinedCounts"))
.setOutputCol("features")
val assemblerData = assembler.transform(data)
:
val parsedData = rawData.filter(row => row != header).map(parseLine)
val data = sqlContext.createDataFrame(parsedData).toDF("label", "orderNo", "pageNo","joinedCounts")
내가 다음 사용과 같은 VectorAssembler
:
val joined = countPerChannel ++ countPerSource //two arrays of Doubles joined
(label, orderNo, pageNo, Vectors.dense(joinedCounts))
내 주요 기능은 다음과 같습니다 구문 분석 함수를 사용 내 데이터의 행이 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의 변환 기능이 얻을 후 :
[3.2,(18,[0,1,6,9,14,17],[17.0,15.0,3.0,1.0,4.0,2.0])]
대체 무슨 일이야? VectorAssembler
은 무엇이 완료 되었습니까? 나는 모든 계산을 두 번 확인하고 심지어 간단한 Spark 예제를 따르고 코드에 무엇이 잘못되었는지를 볼 수 없습니다. 너는 할수 있니?
변경할 수 있습니까? – Dimitris
또한 LinearRegression 알고리즘을 사용하고 각 입력에 대한 계수를 얻고 싶습니다. 이 희박한 표현은 그 계수를 얻는 것을 더 어렵게합니까? – Dimitris
더 어렵지 않습니다. 인덱스와 요소 사이에 단순한 맵을 가진 하나의 벡터 출력이라고 생각하기 때문에 스파 스 벡터를 고밀도 벡터로 변환 할 수 있습니다. – eliasah