以下**是我依據sparkmllib(版本1.6)
1、hashingtf 是使用雜湊表來儲存分詞,並計算分詞頻數(tf),生成hashmap表。在map中,k為分詞對應索引號,v為分詞的頻數。在宣告hashingtf 時,需要設定numfeatures,該屬性實為設定雜湊表的大小;如果設定numfeatures過小,則在儲存分詞時會出現重疊現象,所以不要設定太小,一般情況下設定為30w~50w之間。
2、idf是計算每個分詞出現在文章中的次數,並計算log值。在宣告idf時,可以設定mindocfreq,即過濾掉出現文章數小於mindocfreq的分詞。
3、idfmodel 主要是計算tf*idf,另外idfmodel也可以將idf資料儲存下來(即模型的儲存),在測試語料時,只需要計算測試語料中每個分詞的在該篇文章中的詞頻tf,就可以計算tfidf。
package org.apache.spark.mllib.feature
class
hashingtf
(val numfeatures: int)
extends
serializable
def indexof(term: any): int = nonnegativemod(term.##, numfeatures) //根據分詞來生成索引號
def transform(document: iterable[_]): vector =
vectors.sparse(numfeatures, termfrequencies.toseq)
} def transform[d <: iterable[_]](dataset: rdd[d]): rdd[vector] =
}class
idf(val mindocfreq: int)
}private
object
idf
doc match
k += 1
}case densevector(values) =>
val n = values.size
var j = 0
while (j < n)
j += 1
}case other =>
throw
new unsupportedoperationexception(
s"only sparse and dense vectors are supported but got $.")
}m += 1l
this
}/** merges another. */
def merge(other: documentfrequencyaggregator): this.type = else
}this
}/** 返回當前idf的向量 */
def idf(): vector =
val n = df.length
val inv = new array[double](n)
var j = 0
while (j < n)
j += 1
}vectors.dense(inv)}}}
class
idfmodel
(val idf: vector)
extends
serializable
def transform(v: vector): vector = idfmodel.transform(idf, v)
}private
object
idfmodel
vectors.sparse(n, indices, newvalues)
case densevector(values) =>
val newvalues = new array[double](n)
var j = 0
while (j < n)
vectors.dense(newvalues)
case other =>
throw
new unsupportedoperationexception(
s"only sparse and dense vectors are supported but got $.")
}}}
spark mllib原始碼分析之OWLQN
spark mllib原始碼分析之l bfgs 一 spark mllib原始碼分析之l bfgs 二 線搜尋spark mllib原始碼分析之邏輯回歸彈性網路elasticnet 一 spark在elastic net中當使用l1正則化時,optimizer使用owlqn,我們結合理論介紹其在sp...
spring原始碼分析 spring原始碼分析
1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...
思科VPP原始碼分析(dpo機制原始碼分析)
vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...