日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

weka: naive bayes

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 weka: naive bayes 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

m_NumClasses???????????????訓練數據中類的個數

m_NumAttributes??????????? 屬性的個數

m_Instances?????????????????? 訓練數據

m_ClassDistribution????????類的概率分布, 即P(C)。 其類型是Estimator, 估值器

m_Distributions[m_NumAttributes][m_NumClasses]? 每個屬性在每個類中的概率分布。 其類型也是Estimator。

?

?

1) 數值類型要用連續分布的Estimator, 如NormalEstimator

2) 名詞性類型, 如(少年人、中年人、老年人), 需要離散化, 如DiscreteEstimator

?

然后增量式的訓練。

?

針對每個樣本, 修改m_Distributions[m_NumAttributes][m_NumClasses], 以及 m_ClassDistribution

?

?

識別時, 通過調用函數 distributionForInstance, 該函數返回正規化的一組值, 表示該待測樣本在每個類中的概率

?

public void updateClassifier(Instance instance) throws Exception {if (!instance.classIsMissing()) {Enumeration enumAtts = m_Instances.enumerateAttributes();int attIndex = 0;while (enumAtts.hasMoreElements()) {Attribute attribute = (Attribute) enumAtts.nextElement();if (!instance.isMissing(attribute)) {m_Distributions[attIndex][(int)instance.classValue()].addValue(instance.value(attribute), instance.weight());}attIndex++;}m_ClassDistribution.addValue(instance.classValue(),instance.weight());}}

?

?

?

核心是? Estimator, 如NormalEstimator

//data表示屬性的值, weight表示該屬性值所在樣本的樣本權重 public void addValue(double data, double weight) {if (weight == 0) {return;}data = round(data);m_SumOfWeights += weight;m_SumOfValues += data * weight;m_SumOfValuesSq += data * data * weight;if (m_SumOfWeights > 0) {m_Mean = m_SumOfValues / m_SumOfWeights;double stdDev = Math.sqrt(Math.abs(m_SumOfValuesSq - m_Mean * m_SumOfValues) / m_SumOfWeights);// If the stdDev ~= 0, we really have no idea of scale yet, // so stick with the default. Otherwise...if (stdDev > 1e-10) {m_StandardDev = Math.max(m_Precision / (2 * 3), // allow at most 3sd's within one interval stdDev);}}}/*** Get a probability estimate for a value** @param data the value to estimate the probability of* @return the estimated probability of the supplied value*///計算該屬性的值為data的概率public double getProbability(double data) {data = round(data);double zLower = (data - m_Mean - (m_Precision / 2)) / m_StandardDev;double zUpper = (data - m_Mean + (m_Precision / 2)) / m_StandardDev;double pLower = Statistics.normalProbability(zLower);double pUpper = Statistics.normalProbability(zUpper);return pUpper - pLower;}

?

?

?

對應到bogofilter的bayes,

類個數為2; 屬性個數就是token的個數

Estimator就是簡單的計數

訓練時,

掃描待訓練郵件的逐個token,增加其在對應類別中的計數===>m_Distributions;

增加對應類別的樣本數====> m_ClassDistribution

?

?

分類時,

1)得到各個類的先驗概率??????????????????????????? P(C)

2)乘以該屬性在該類中出現的概率??????????????? P(D|C), D為待測文檔,D由一組token組成

P(C|D) = P(C) *P(D|C)/P(D); 其中P(D)不必求,都一樣, 只需要求出P(C)*P(D|C)即可

其中, P(D|C) = P(t1|C)*,,,*P(tn|C)........條件獨立。 只需要 P(ti|C) 與 P(tj|C) 獨立即可。 因此是條件獨立

總結

以上是生活随笔為你收集整理的weka: naive bayes的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。