您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用NaiveBayes分類(lèi)器檢測(cè)虛假新聞”,在日常操作中,相信很多人在怎么使用NaiveBayes分類(lèi)器檢測(cè)虛假新聞問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么使用NaiveBayes分類(lèi)器檢測(cè)虛假新聞”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
樸素貝葉斯分類(lèi)器是一種利用貝葉斯定理對(duì)數(shù)據(jù)進(jìn)行分類(lèi)的確定性算法。讓我們看一個(gè)例子:
假設(shè)你想預(yù)測(cè)今天下雨的概率:在過(guò)去的幾天里,你通過(guò)觀察天空中的云收集了數(shù)據(jù)。以下是你的數(shù)據(jù)表:
在下雨或不下雨的情況下,這個(gè)表格表示了某一特征出現(xiàn)的次數(shù)。假設(shè)出現(xiàn)了灰色云或白色云,我們所擁有的實(shí)際上是一個(gè)包含下雨概率的表格。
現(xiàn)在有了數(shù)據(jù),讓我們做一個(gè)預(yù)測(cè)。今天我們看到了灰色的云,沒(méi)有白云,是雨天還是晴天?要回答這個(gè)問(wèn)題,我們必須使用Bayes定理:
這個(gè)定理利用過(guò)去的數(shù)據(jù)做出更好的決定。
如果出現(xiàn)了灰色云,下雨的概率等于以前有灰色云下雨的概率。
根據(jù)我們的數(shù)據(jù):
P(B | A)(降雨概率|灰色云)=10/11
P(A)(降雨概率)= 11/(50+11) = 11/66 = 1/6
P(B)(灰色云的概率)=1(因?yàn)橐汛_認(rèn)出現(xiàn)了灰色云)
P(A | B)=P(B | A)*P(A)/P(B)
P(A | B)=[(10/11)*(1/6)]/1
P(A | B)=10/66
如果出現(xiàn)了灰色的云,下雨的概率是10/66
通過(guò)對(duì)naivebayes分類(lèi)器的簡(jiǎn)要介紹,讓我們用naivebayes分類(lèi)器來(lái)討論假新聞檢測(cè)。
考慮到新聞是假的,我們將統(tǒng)計(jì)一個(gè)詞出現(xiàn)在標(biāo)題中的次數(shù)。將其轉(zhuǎn)換為概率,然后計(jì)算標(biāo)題為假的概率,與標(biāo)題為真的概率相比。
我使用的數(shù)據(jù)集有21000多個(gè)真實(shí)新聞實(shí)例,23000個(gè)假新聞實(shí)例。對(duì)于一個(gè)正常的數(shù)據(jù)集來(lái)說(shuō),這可能看起來(lái)是不平衡的,但這種不平衡對(duì)于計(jì)算初始概率是必要的:即標(biāo)題是假的概率。
import pandas as pd import string
這是程序的三個(gè)依賴(lài)項(xiàng):pandas是讀取csv文件,string是字符串操作。
true_text = {} fake_text = {} true = pd.read_csv('/Users/XXXXXXXX/Desktop/True.csv') fake = pd.read_csv('/Users/XXXXXXXX/Desktop/Fake.csv')
此腳本用于讀取兩個(gè)數(shù)據(jù)集,其中包含假新聞和真新聞的實(shí)例。
def extract_words(category,dictionary): for entry in category['title']: words = entry.split() for word in words: lower_word = word.lower() if word in dictionary: dictionary[lower_word] += 1 else: dictionary[lower_word] = 1 return dictionary
考慮到標(biāo)題是假新聞,這個(gè)腳本計(jì)算一個(gè)單詞出現(xiàn)的次數(shù),并在其進(jìn)入詞典的條目中添加一個(gè)計(jì)數(shù),計(jì)算每個(gè)單詞出現(xiàn)的次數(shù)。
def count_to_prob(dictionary,length): for term in dictionary: dictionary[term] = dictionary[term]/length return dictionary
此函數(shù)通過(guò)計(jì)算假新聞標(biāo)題或真實(shí)新聞標(biāo)題的總字?jǐn)?shù)將數(shù)字轉(zhuǎn)換為概率。
def calculate_probability(dictionary,X,initial): X.translate(str.maketrans('', '', string.punctuation)) X = X.lower() split = X.split() probability = initial for term in split: if term in dictionary: probability *= dictionary[term] print(term,dictionary[term]) return probability
此函數(shù)將相關(guān)概率相乘,以計(jì)算標(biāo)題的“分?jǐn)?shù)”。為了做出預(yù)測(cè),在使用假新聞和真新聞詞典時(shí)比較得分。如果假新聞字典返回更高的分?jǐn)?shù),則模型預(yù)測(cè)標(biāo)題為假新聞。
true_text = extract_words(true,true_text) fake_text = extract_words(fake,fake_text) true_count = count_total(true_text) fake_count = count_total(fake_text) true_text = count_to_prob(true_text,true_count) fake_text = count_to_prob(fake_text,fake_count) total_count = true_count + fake_count fake_initial = fake_count/total_count true_initial = true_count/total_count
這個(gè)腳本使用上述所有函數(shù)為每個(gè)單詞創(chuàng)建一個(gè)概率字典,以便稍后計(jì)算標(biāo)題的“分?jǐn)?shù)”。
X = 'Hillary Clinton eats Donald Trump' calculate_probability(fake_text,X,1)>calculate_probability(true_text,X,1)
最后一個(gè)腳本評(píng)估了標(biāo)題:“Hillary Clinton eats Donald Trump”,以測(cè)試模型。
True
模型輸出的結(jié)果是真實(shí)的,因?yàn)闃?biāo)題顯然是假新聞。
到此,關(guān)于“怎么使用NaiveBayes分類(lèi)器檢測(cè)虛假新聞”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。