스파크 밀도 및 스파 스 벡터 벡터

1, 개념

스파 스 벡터 및 벡터 조밀 조밀 벡터 표현 성긴 벡터 벡터 차분이다 : 집중 벡터의 값이 같은 인덱스 및 값으로 이루어진 두 개의 평행 한 배열에 의해 통상 double 배열 대신 희박한 벡터이고, : 벡터 (1.0, 0.0, 1.0, 3.0) (4) (고밀도로 표시되는 포맷 [1.0,0.0,1.0,3.0], [0,2]를 나타내고, [1.0,1.0,3.0]) 스파 스 벡터 형식으로 표시되는 4 길이 (요소 수), [0,2], [1.0,1.0,3.0]가 값들의 배열이 위치 벡터 0을 나타내는 값이 1.0 1.0,2 위치의 값이다 어레이 인덱스이고, (3)의 위치 값이 3.0이고, 나머지 위치는 제로인

만들기 (2)

org.apache.spark.mllib.linalg 가져옵니다. {벡터, 벡터}

// 고밀도 벡터 (1.0, 0.0, 3.0)를 만듭니다.
브로 DV : 벡터 Vectors.dense = (1.0, 0.0, 3.0)
는 제로가 아닌 인덱스 항목에 대응하는 값을 지정하여 스파 스 벡터 (1.0, 0.0, 3.0)을 생성 //.
브로 SV1 : 벡터 Vectors.sparse = (3, 배열 (0, 2), 어레이 (1.0, 3.0))
// 제로의 항목을 지정하여 스파 스 벡터 (1.0, 0.0, 3.0)을 만든다.
브로 SV2 : 벡터 Vectors.sparse = (3, 배열 ((0, 1.0), (2, 3.0)))

3, 코드 세그먼트는 HashingTF에 의해 단어, 스파 스 벡터에 단어 명중 횟수의 크기를 변환. 참조 주소 : https://github.com/asker124143222/spark-demo

발 훈련 : DataFrame lineRDD.map = (선 => {
      브로 문자열 : 배열 [문자열] = line.split ( ",")
      경우 (strings.length == 3) {
        (문자열 (1), 캐릭터 (1) 끈 (2) .toDouble)
      }
      다른 {       
        ( "-1"strings.mkString ( ""), 0.0)
      }

    .}) 필터 (! S => s._1.equals ( "- 1"))
      .toDF ( "ID", "텍스트", "상표")

    // 변압기, 컨버터, 문자 해상도가 작은 차례에 단어를 쓰기 공백으로 구분하여 입력 텍스트를 변환
    발 토크 나이 : 토크 나이 토크 나이 새로운 새로운 = ()을
      .setInputCol를 ( "텍스트")
      .setOutputCol ( "단어")


    // 변압기, 변환기, 단어 빈도에 해시 변환 단어 해시 방식 변환, 특징 벡터로 변환
    브로 hashTF = 새로운 새 HashingTF의 HashingTF ()
      .setNumFeatures (1000) // 기본값 18은 ^ 2
      .setInputCol ( tokenizer.getOutputCol) .setOutputCol ( "기능")

    hashingTF 생성 스파 스 벡터와 같은 // 인쇄 모양
    발 wordsData = tokenizer.transform (교육)
    발 hashData = hashTF.transform (wordsData)
    hashData.collect (). foreach는 (println 메소드)

    // [0, 자바 왜 안녕하세요, 1.0, WrappedArray (왜, 안녕하세요, 세계, 자바), (1000, [48150967973], [1.0,1.0,1.0,1.0])]
    // 1000 벡터 길이, 경우에도 해시 버킷 번호와 일치 값 setNumFeatures는 인덱스이다 48,150,967,973, 즉 해시 버킷 인덱스 값은, 해시 버킷 조회수 즉, 1.0이다

 

게시 된 276 개 원래 기사 · 원 찬양 109 · 전망 240 000 +

추천

출처blog.csdn.net/lvtula/article/details/105242348