mcelikkaya가 지적한 것처럼 출력 주파수는 예상 한 것과 다릅니다. 이는 소수의 기능 (이 경우 20 개)에 대한 해시 충돌로 인한 것입니다. 나는 20,000 입력 (설명을 위해) 데이터를 올렸 기능에 일부 단어를 추가 한 다음 올바른 주파수는 생산 :
+-----+---------------------------------------------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------+
|label|sentence |words |rawFeatures |
+-----+---------------------------------------------------------+-------------------------------------------------------------------------+--------------------------------------------------------------------------------------+
|0 |Hi hi hi hi I i i i i heard heard heard about Spark Spark|[hi, hi, hi, hi, i, i, i, i, i, heard, heard, heard, about, spark, spark]|(20000,[3105,9357,11777,11960,15329],[2.0,3.0,1.0,4.0,5.0]) |
|0 |I i wish Java could use case classes spark |[i, i, wish, java, could, use, case, classes, spark] |(20000,[495,3105,3967,4489,15329,16213,16342,19809],[1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0])|
|1 |Logistic regression models are neat |[logistic, regression, models, are, neat] |(20000,[286,1193,9604,13138,18695],[1.0,1.0,1.0,1.0,1.0]) |
+-----+---------------------------------------------------------+-------------------------------------------------------------------------+------------------------------------------------------------
스파크 클래스는 ** HashingTF **는 해시 트릭을 사용합니다. 원시 기능은 해시 기능을 적용하여 인덱스 (용어)에 매핑됩니다. 그런 다음 용어 빈도가 매핑 된 색인을 기반으로 계산됩니다. 이 접근법은 대규모 용어집에 대해 비용이 많이 드는 전역 용어 - 인덱스 맵을 계산할 필요가 없지만 해시 후 서로 다른 원시 기능이 같은 용어가 될 수있는 잠재적 인 해시 충돌을 겪습니다. –