一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

樸素貝葉斯分類算法并實(shí)現(xiàn)中文數(shù)據(jù)集的輿情分析案例

電子工程師 ? 來(lái)源:未知 ? 作者:李倩 ? 2018-10-23 09:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文主要講述樸素貝葉斯分類算法并實(shí)現(xiàn)中文數(shù)據(jù)集的輿情分析案例,希望這篇文章對(duì)大家有所幫助,提供些思路。內(nèi)容包括:

1.樸素貝葉斯數(shù)學(xué)原理知識(shí)

2.naive_bayes用法及簡(jiǎn)單案例

3.中文文本數(shù)據(jù)集預(yù)處理

4.樸素貝葉斯中文文本輿情分析

本篇文章為基礎(chǔ)性文章,希望對(duì)你有所幫助,如果文章中存在錯(cuò)誤或不足之處,還請(qǐng)海涵。同時(shí),推薦大家閱讀我以前的文章了解基礎(chǔ)知識(shí)。

▌一. 樸素貝葉斯數(shù)學(xué)原理知識(shí)

該基礎(chǔ)知識(shí)部分引用文章"機(jī)器學(xué)習(xí)之樸素貝葉斯(NB)分類算法與Python實(shí)現(xiàn)"(https://blog.csdn.net/moxigandashu/article/details/71480251),也強(qiáng)烈推薦大家閱讀博主moxigandashu的文章,寫得很好。同時(shí)作者也結(jié)合概率論講解,提升下自己較差的數(shù)學(xué)。

樸素貝葉斯(Naive Bayesian)是基于貝葉斯定理和特征條件獨(dú)立假設(shè)的分類方法,它通過(guò)特征計(jì)算分類的概率,選取概率大的情況,是基于概率論的一種機(jī)器學(xué)習(xí)分類(監(jiān)督學(xué)習(xí))方法,被廣泛應(yīng)用于情感分類領(lǐng)域的分類器。

下面簡(jiǎn)單回顧下概率論知識(shí):

1.什么是基于概率論的方法?

通過(guò)概率來(lái)衡量事件發(fā)生的可能性。概率論和統(tǒng)計(jì)學(xué)是兩個(gè)相反的概念,統(tǒng)計(jì)學(xué)是抽取部分樣本統(tǒng)計(jì)來(lái)估算總體情況,而概率論是通過(guò)總體情況來(lái)估計(jì)單個(gè)事件或部分事情的發(fā)生情況。概率論需要已知數(shù)據(jù)去預(yù)測(cè)未知的事件。

例如,我們看到天氣烏云密布,電閃雷鳴并陣陣狂風(fēng),在這樣的天氣特征(F)下,我們推斷下雨的概率比不下雨的概率大,也就是p(下雨)>p(不下雨),所以認(rèn)為待會(huì)兒會(huì)下雨,這個(gè)從經(jīng)驗(yàn)上看對(duì)概率進(jìn)行判斷。而氣象局通過(guò)多年長(zhǎng)期積累的數(shù)據(jù),經(jīng)過(guò)計(jì)算,今天下雨的概率p(下雨)=85%、p(不下雨)=15%,同樣的 p(下雨)>p(不下雨),因此今天的天氣預(yù)報(bào)肯定預(yù)報(bào)下雨。這是通過(guò)一定的方法計(jì)算概率從而對(duì)下雨事件進(jìn)行判斷。

2.條件概率

若Ω是全集,A、B是其中的事件(子集),P表示事件發(fā)生的概率,則條件概率表示某個(gè)事件發(fā)生時(shí)另一個(gè)事件發(fā)生的概率。假設(shè)事件B發(fā)生后事件A發(fā)生的概率為:

設(shè)P(A)>0,則有 P(AB) = P(B|A)P(A) = P(A|B)P(B)。

設(shè)A、B、C為事件,且P(AB)>0,則有 P(ABC) = P(A)P(B|A)P(C|AB)。

現(xiàn)在A和B是兩個(gè)相互獨(dú)立的事件,其相交概率為 P(A∩B) = P(A)P(B)。

3.全概率公式

設(shè)Ω為試驗(yàn)E的樣本空間,A為E的事件,B1、B2、....、Bn為Ω的一個(gè)劃分,且P(Bi)>0,其中i=1,2,...,n,則:

P(A) = P(AB1)+P(AB2)+...+P(ABn)

= P(A|B1)P(B1)+P(A|B2)P(B2)+...+P(A|Bn)P(Bn)

全概率公式主要用途在于它可以將一個(gè)復(fù)雜的概率計(jì)算問(wèn)題,分解為若干個(gè)簡(jiǎn)單事件的概率計(jì)算問(wèn)題,最后應(yīng)用概率的可加性求出最終結(jié)果。

示例:有一批同一型號(hào)的產(chǎn)品,已知其中由一廠生成的占30%,二廠生成的占50%,三長(zhǎng)生成的占20%,又知這三個(gè)廠的產(chǎn)品次品概率分別為2%、1%、1%,問(wèn)這批產(chǎn)品中任取一件是次品的概率是多少?

參考百度文庫(kù)資料:

https://wenku.baidu.com/view/05d0e30e856a561253d36fdb.html

4.貝葉斯公式

設(shè)Ω為試驗(yàn)E的樣本空間,A為E的事件,如果有k個(gè)互斥且有窮個(gè)事件,即B1、B2、....、Bk為Ω的一個(gè)劃分,且P(B1)+P(B2)+...+P(Bk)=1,P(Bi)>0(i=1,2,...,k),則:

P(A):事件A發(fā)生的概率;

P(A∩B):事件A和事件B同時(shí)發(fā)生的概率;

P(A|B):事件A在時(shí)間B發(fā)生的條件下發(fā)生的概率;

意義:現(xiàn)在已知時(shí)間A確實(shí)已經(jīng)發(fā)生,若要估計(jì)它是由原因Bi所導(dǎo)致的概率,則可用Bayes公式求出。

5.先驗(yàn)概率和后驗(yàn)概率

先驗(yàn)概率是由以往的數(shù)據(jù)分析得到的概率,泛指一類事物發(fā)生的概率,根據(jù)歷史資料或主觀判斷未經(jīng)證實(shí)所確定的概率。后驗(yàn)概率而是在得到信息之后再重新加以修正的概率,是某個(gè)特定條件下一個(gè)具體事物發(fā)生的概率。

6.樸素貝葉斯分類

貝葉斯分類器通過(guò)預(yù)測(cè)一個(gè)對(duì)象屬于某個(gè)類別的概率,再預(yù)測(cè)其類別,是基于貝葉斯定理而構(gòu)成出來(lái)的。在處理大規(guī)模數(shù)據(jù)集時(shí),貝葉斯分類器表現(xiàn)出較高的分類準(zhǔn)確性。

假設(shè)存在兩種分類:

1) 如果p1(x,y)>p2(x,y),那么分入類別1

2) 如果p1(x,y)

引入貝葉斯定理即為:

其中,x、y表示特征變量,ci表示分類,p(ci|x,y)表示在特征為x,y的情況下分入類別ci的概率,因此,結(jié)合條件概率和貝葉斯定理有:

1) 如果p(c1|x,y)>p(c2,|x,y),那么分類應(yīng)當(dāng)屬于類別c1

2) 如果p(c1|x,y)

貝葉斯定理最大的好處是可以用已知的概率去計(jì)算未知的概率,而如果僅僅是為了比較p(ci|x,y)和p(cj|x,y)的大小,只需要已知兩個(gè)概率即可,分母相同,比較p(x,y|ci)p(ci)和p(x,y|cj)p(cj)即可。

7.示例講解

假設(shè)存在14天的天氣情況和是否能打網(wǎng)球,包括天氣、氣溫、濕度、風(fēng)等,現(xiàn)在給出新的一天天氣情況,需要判斷我們這一天可以打網(wǎng)球嗎?首先統(tǒng)計(jì)出各種天氣情況下打網(wǎng)球的概率,如下圖所示。

接下來(lái)是分析過(guò)程,其中包括打網(wǎng)球yse和不打網(wǎng)球no的計(jì)算方法。

最后計(jì)算結(jié)果如下,不去打網(wǎng)球概率為79.5%。

8.優(yōu)缺點(diǎn)

監(jiān)督學(xué)習(xí),需要確定分類的目標(biāo)

對(duì)缺失數(shù)據(jù)不敏感,在數(shù)據(jù)較少的情況下依然可以使用該方法

可以處理多個(gè)類別 的分類問(wèn)題

適用于標(biāo)稱型數(shù)據(jù)

對(duì)輸入數(shù)據(jù)的形勢(shì)比較敏感

由于用先驗(yàn)數(shù)據(jù)去預(yù)測(cè)分類,因此存在誤差

▌二. naive_bayes用法及簡(jiǎn)單案例

scikit-learn機(jī)器學(xué)習(xí)包提供了3個(gè)樸素貝葉斯分類算法:

GaussianNB(高斯樸素貝葉斯)

MultinomialNB(多項(xiàng)式樸素貝葉斯)

BernoulliNB(伯努利樸素貝葉斯)

1.高斯樸素貝葉斯

調(diào)用方法為:sklearn.naive_bayes.GaussianNB(priors=None)。

下面隨機(jī)生成六個(gè)坐標(biāo)點(diǎn),其中x坐標(biāo)和y坐標(biāo)同為正數(shù)時(shí)對(duì)應(yīng)類標(biāo)為2,x坐標(biāo)和y坐標(biāo)同為負(fù)數(shù)時(shí)對(duì)應(yīng)類標(biāo)為1。通過(guò)高斯樸素貝葉斯分類分析的代碼如下:

1#-*-coding:utf-8-*- 2importnumpyasnp 3fromsklearn.naive_bayesimportGaussianNB 4X=np.array([[-1,-1],[-2,-1],[-3,-2],[1,1],[2,1],[3,2]]) 5Y=np.array([1,1,1,2,2,2]) 6clf=GaussianNB() 7clf.fit(X,Y) 8pre=clf.predict(X) 9printu"數(shù)據(jù)集預(yù)測(cè)結(jié)果:",pre10printclf.predict([[-0.8,-1]])1112clf_pf=GaussianNB()13clf_pf.partial_fit(X,Y,np.unique(Y))#增加一部分樣本14printclf_pf.predict([[-0.8,-1]])

輸出如下圖所示,可以看到[-0.8, -1]預(yù)測(cè)結(jié)果為1類,即x坐標(biāo)和y坐標(biāo)同為負(fù)數(shù)。

2.多項(xiàng)式樸素貝葉斯

多項(xiàng)式樸素貝葉斯:sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)主要用于離散特征分類,例如文本分類單詞統(tǒng)計(jì),以出現(xiàn)的次數(shù)作為特征值。

參數(shù)說(shuō)明:alpha為可選項(xiàng),默認(rèn)1.0,添加拉普拉修/Lidstone平滑參數(shù);fit_prior默認(rèn)True,表示是否學(xué)習(xí)先驗(yàn)概率,參數(shù)為False表示所有類標(biāo)記具有相同的先驗(yàn)概率;class_prior類似數(shù)組,數(shù)組大小為(n_classes,),默認(rèn)None,類先驗(yàn)概率。

3.伯努利樸素貝葉斯

伯努利樸素貝葉斯:sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True,class_prior=None)。類似于多項(xiàng)式樸素貝葉斯,也主要用于離散特征分類,和MultinomialNB的區(qū)別是:MultinomialNB以出現(xiàn)的次數(shù)為特征值,BernoulliNB為二進(jìn)制或布爾型特性

下面是樸素貝葉斯算法常見(jiàn)的屬性和方法。

1) class_prior_屬性

觀察各類標(biāo)記對(duì)應(yīng)的先驗(yàn)概率,主要是class_prior_屬性,返回?cái)?shù)組。代碼如下:

1printclf.class_prior_2#[0.50.5]

2) class_count_屬性

獲取各類標(biāo)記對(duì)應(yīng)的訓(xùn)練樣本數(shù),代碼如下:

1printclf.class_count_2#[3.3.]

3) theta_屬性

獲取各個(gè)類標(biāo)記在各個(gè)特征上的均值,代碼如下:

1printclf.theta_2#[[-2.-1.33333333]3#[2.1.33333333]]

4) sigma_屬性

獲取各個(gè)類標(biāo)記在各個(gè)特征上的方差,代碼如下:

1printclf.theta_2#[[-2.-1.33333333]3#[2.1.33333333]]

5) fit(X, y, sample_weight=None)

訓(xùn)練樣本,X表示特征向量,y類標(biāo)記,sample_weight表各樣本權(quán)重?cái)?shù)組。

1#設(shè)置樣本不同的權(quán)重2clf.fit(X,Y,np.array([0.05,0.05,0.1,0.1,0.1,0.2,0.2,0.2]))3printclf4printclf.theta_5printclf.sigma_

輸出結(jié)果如下所示:

1GaussianNB()2[[-2.25-1.5]3[2.251.5]]4[[0.68750.25]5[0.68750.25]]

6) partial_fit(X, y, classes=None, sample_weight=None)

增量式訓(xùn)練,當(dāng)訓(xùn)練數(shù)據(jù)集數(shù)據(jù)量非常大,不能一次性全部載入內(nèi)存時(shí),可以將數(shù)據(jù)集劃分若干份,重復(fù)調(diào)用partial_fit在線學(xué)習(xí)模型參數(shù),在第一次調(diào)用partial_fit函數(shù)時(shí),必須制定classes參數(shù),在隨后的調(diào)用可以忽略。

1importnumpyasnp 2fromsklearn.naive_bayesimportGaussianNB 3X=np.array([[-1,-1],[-2,-2],[-3,-3],[-4,-4],[-5,-5], 4[1,1],[2,2],[3,3]]) 5y=np.array([1,1,1,1,1,2,2,2]) 6clf=GaussianNB() 7clf.partial_fit(X,y,classes=[1,2], 8sample_weight=np.array([0.05,0.05,0.1,0.1,0.1,0.2,0.2,0.2])) 9printclf.class_prior_10printclf.predict([[-6,-6],[4,5],[2,5]])11printclf.predict_proba([[-6,-6],[4,5],[2,5]])

輸出結(jié)果如下所示:

1[0.40.6]2[122]3[[1.00000000e+004.21207358e-40]4[1.12585521e-121.00000000e+00]5[8.73474886e-111.00000000e+00]]

可以看到點(diǎn)[-6,-6]預(yù)測(cè)結(jié)果為1,[4,5]預(yù)測(cè)結(jié)果為2,[2,5]預(yù)測(cè)結(jié)果為2。同時(shí),predict_proba(X)輸出測(cè)試樣本在各個(gè)類標(biāo)記預(yù)測(cè)概率值。

7) score(X, y, sample_weight=None)

返回測(cè)試樣本映射到指定類標(biāo)記上的得分或準(zhǔn)確率。

1pre=clf.predict([[-6,-6],[4,5],[2,5]])2printclf.score([[-6,-6],[4,5],[2,5]],pre)3#1.0

最后給出一個(gè)高斯樸素貝葉斯算法分析小麥數(shù)據(jù)集案例,代碼如下:

1#-*-coding:utf-8-*- 2#第一部分載入數(shù)據(jù)集 3importpandasaspd 4X=pd.read_csv("seed_x.csv") 5Y=pd.read_csv("seed_y.csv") 6printX 7printY 8 9#第二部分導(dǎo)入模型10fromsklearn.naive_bayesimportGaussianNB11clf=GaussianNB()12clf.fit(X,Y)13pre=clf.predict(X)14printu"數(shù)據(jù)集預(yù)測(cè)結(jié)果:",pre1516#第三部分降維處理17fromsklearn.decompositionimportPCA18pca=PCA(n_components=2)19newData=pca.fit_transform(X)20printnewData[:4]2122#第四部分繪制圖形23importmatplotlib.pyplotasplt24L1=[n[0]forninnewData]25L2=[n[1]forninnewData]26plt.scatter(L1,L2,c=pre,s=200)27plt.show()

輸出如下圖所示:

最后對(duì)數(shù)據(jù)集進(jìn)行評(píng)估,主要調(diào)用sklearn.metrics類中classification_report函數(shù)實(shí)現(xiàn)的,代碼如下:

1fromsklearn.metricsimportclassification_report2print(classification_report(Y,pre))

運(yùn)行結(jié)果如下所示,準(zhǔn)確率、召回率和F特征為91%。

補(bǔ)充下Sklearn機(jī)器學(xué)習(xí)包常用的擴(kuò)展類。

1#監(jiān)督學(xué)習(xí) 2sklearn.neighbors#近鄰算法 3sklearn.svm#支持向量機(jī) 4sklearn.kernel_ridge#核-嶺回歸 5sklearn.discriminant_analysis#判別分析 6sklearn.linear_model#廣義線性模型 7sklearn.ensemble#集成學(xué)習(xí) 8sklearn.tree#決策樹 9sklearn.naive_bayes#樸素貝葉斯10sklearn.cross_decomposition#交叉分解11sklearn.gaussian_process#高斯過(guò)程12sklearn.neural_network#神經(jīng)網(wǎng)絡(luò)13sklearn.calibration#概率校準(zhǔn)14sklearn.isotonic#保守回歸15sklearn.feature_selection#特征選擇16sklearn.multiclass#多類多標(biāo)簽算法1718#無(wú)監(jiān)督學(xué)習(xí)19sklearn.decomposition#矩陣因子分解sklearn.cluster#聚類20sklearn.manifold#流形學(xué)習(xí)21sklearn.mixture#高斯混合模型22sklearn.neural_network#無(wú)監(jiān)督神經(jīng)網(wǎng)絡(luò)23sklearn.covariance#協(xié)方差估計(jì)2425#數(shù)據(jù)變換26sklearn.feature_extraction#特征提取sklearn.feature_selection#特征選擇27sklearn.preprocessing#預(yù)處理28sklearn.random_projection#隨機(jī)投影29sklearn.kernel_approximation#核逼近

▌三. 中文文本數(shù)據(jù)集預(yù)處理

假設(shè)現(xiàn)在需要判斷一封郵件是不是垃圾郵件,其步驟如下:

數(shù)據(jù)集拆分成單詞,中文分詞技術(shù)

計(jì)算句子中總共多少單詞,確定詞向量大小

句子中的單詞轉(zhuǎn)換成向量,BagofWordsVec

計(jì)算P(Ci),P(Ci|w)=P(w|Ci)P(Ci)/P(w),表示w特征出現(xiàn)時(shí),該樣本被分為Ci類的條件概率

判斷P(w[i]C[0])和P(w[i]C[1])概率大小,兩個(gè)集合中概率高的為分類類標(biāo)

下面講解一個(gè)具體的實(shí)例。

1.數(shù)據(jù)集讀取

假設(shè)存在如下所示10條Python書籍訂單評(píng)價(jià)信息,每條評(píng)價(jià)信息對(duì)應(yīng)一個(gè)結(jié)果(好評(píng)和差評(píng)),如下圖所示:

數(shù)據(jù)存儲(chǔ)至CSV文件中,如下圖所示。

下面采用pandas擴(kuò)展包讀取數(shù)據(jù)集。代碼如下所示:

1#-*-coding:utf-8-*- 2importnumpyasnp 3importpandasaspd 4 5data=pd.read_csv("data.csv",encoding='gbk') 6printdata 7 8#取表中的第1列的所有值 9printu"獲取第一列內(nèi)容"10col=data.iloc[:,0]11#取表中所有值12arrs=col.values13forainarrs:14printa

輸出結(jié)果如下圖所示,同時(shí)可以通過(guò)data.iloc[:,0]獲取第一列的內(nèi)容。

2.中文分詞及過(guò)濾停用詞

接下來(lái)作者采用jieba工具進(jìn)行分詞,并定義了停用詞表,即:

stopwords = {}.fromkeys([',', '。', '!', '這', '我', '非常'])

完整代碼如下所示:

1#-*-coding:utf-8-*- 2importnumpyasnp 3importpandasaspd 4importjieba 5 6data=pd.read_csv("data.csv",encoding='gbk') 7printdata 8 9#取表中的第1列的所有值10printu"獲取第一列內(nèi)容"11col=data.iloc[:,0]12#取表中所有值13arrs=col.values14#去除停用詞15stopwords={}.fromkeys([',','。','!','這','我','非常'])1617printu" 中文分詞后結(jié)果:"18forainarrs:19#printa20seglist=jieba.cut(a,cut_all=False)#精確模式21final=''22forseginseglist:23seg=seg.encode('utf-8')24ifsegnotinstopwords:#不是停用詞的保留25final+=seg26seg_list=jieba.cut(final,cut_all=False)27output=''.join(list(seg_list))#空格拼接28printoutput

然后分詞后的數(shù)據(jù)如下所示,可以看到標(biāo)點(diǎn)符號(hào)及“這”、“我”等詞已經(jīng)過(guò)濾。

3.詞頻統(tǒng)計(jì)

接下來(lái)需要將分詞后的語(yǔ)句轉(zhuǎn)換為向量的形式,這里使用CountVectorizer實(shí)現(xiàn)轉(zhuǎn)換為詞頻。如果需要轉(zhuǎn)換為TF-IDF值可以使用TfidfTransformer類。詞頻統(tǒng)計(jì)完整代碼如下所示:

1#-*-coding:utf-8-*- 2importnumpyasnp 3importpandasaspd 4importjieba 5 6data=pd.read_csv("data.csv",encoding='gbk') 7printdata 8 9#取表中的第1列的所有值10printu"獲取第一列內(nèi)容"11col=data.iloc[:,0]12#取表中所有值13arrs=col.values14#去除停用詞15stopwords={}.fromkeys([',','。','!','這','我','非常'])1617printu" 中文分詞后結(jié)果:"18corpus=[]19forainarrs:20#printa21seglist=jieba.cut(a,cut_all=False)#精確模式22final=''23forseginseglist:24seg=seg.encode('utf-8')25ifsegnotinstopwords:#不是停用詞的保留26final+=seg27seg_list=jieba.cut(final,cut_all=False)28output=''.join(list(seg_list))#空格拼接29printoutput30corpus.append(output)3132#計(jì)算詞頻33fromsklearn.feature_extraction.textimportCountVectorizer34fromsklearn.feature_extraction.textimportTfidfTransformer3536vectorizer=CountVectorizer()#將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣37X=vectorizer.fit_transform(corpus)#計(jì)算個(gè)詞語(yǔ)出現(xiàn)的次數(shù)38word=vectorizer.get_feature_names()#獲取詞袋中所有文本關(guān)鍵詞39forwinword:#查看詞頻結(jié)果40printw,41print''42printX.toarray()

輸出結(jié)果如下所示,包括特征詞及對(duì)應(yīng)的10行數(shù)據(jù)的向量,這就將中文文本數(shù)據(jù)集轉(zhuǎn)換為了數(shù)學(xué)向量的形式,接下來(lái)就是對(duì)應(yīng)的數(shù)據(jù)分析了。

如下所示得到一個(gè)詞頻矩陣,每行數(shù)據(jù)集對(duì)應(yīng)一個(gè)分類類標(biāo),可以預(yù)測(cè)新的文檔屬于哪一類。

TF-IDF相關(guān)知識(shí)推薦我的文章: [python] 使用scikit-learn工具計(jì)算文本TF-IDF值(https://blog.csdn.net/eastmount/article/details/50323063)

▌四. 樸素貝葉斯中文文本輿情分析

最后給出樸素貝葉斯分類算法分析中文文本數(shù)據(jù)集的完整代碼。

1#-*-coding:utf-8-*- 2importnumpyasnp 3importpandasaspd 4importjieba 5 6#http://blog.csdn.net/eastmount/article/details/50323063 7#http://blog.csdn.net/eastmount/article/details/50256163 8#http://blog.csdn.net/lsldd/article/details/41542107 910####################################11#第一步讀取數(shù)據(jù)及分詞12#13data=pd.read_csv("data.csv",encoding='gbk')14printdata1516#取表中的第1列的所有值17printu"獲取第一列內(nèi)容"18col=data.iloc[:,0]19#取表中所有值20arrs=col.values2122#去除停用詞23stopwords={}.fromkeys([',','。','!','這','我','非常'])2425printu" 中文分詞后結(jié)果:"26corpus=[]27forainarrs:28#printa29seglist=jieba.cut(a,cut_all=False)#精確模式30final=''31forseginseglist:32seg=seg.encode('utf-8')33ifsegnotinstopwords:#不是停用詞的保留34final+=seg35seg_list=jieba.cut(final,cut_all=False)36output=''.join(list(seg_list))#空格拼接37printoutput38corpus.append(output)3940####################################41#第二步計(jì)算詞頻42#43fromsklearn.feature_extraction.textimportCountVectorizer44fromsklearn.feature_extraction.textimportTfidfTransformer4546vectorizer=CountVectorizer()#將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣47X=vectorizer.fit_transform(corpus)#計(jì)算個(gè)詞語(yǔ)出現(xiàn)的次數(shù)48word=vectorizer.get_feature_names()#獲取詞袋中所有文本關(guān)鍵詞49forwinword:#查看詞頻結(jié)果50printw,51print''52printX.toarray()535455####################################56#第三步數(shù)據(jù)分析57#58fromsklearn.naive_bayesimportMultinomialNB59fromsklearn.metricsimportprecision_recall_curve60fromsklearn.metricsimportclassification_report6162#使用前8行數(shù)據(jù)集進(jìn)行訓(xùn)練,最后兩行數(shù)據(jù)集用于預(yù)測(cè)63printu" 數(shù)據(jù)分析:"64X=X.toarray()65x_train=X[:8]66x_test=X[8:]67#1表示好評(píng)0表示差評(píng)68y_train=[1,1,0,0,1,0,0,1]69y_test=[1,0]7071#調(diào)用MultinomialNB分類器72clf=MultinomialNB().fit(x_train,y_train)73pre=clf.predict(x_test)74printu"預(yù)測(cè)結(jié)果:",pre75printu"真實(shí)結(jié)果:",y_test7677fromsklearn.metricsimportclassification_report78print(classification_report(y_test,pre))

輸出結(jié)果如下所示,可以看到預(yù)測(cè)的兩個(gè)值都是正確的。即“一本優(yōu)秀的書籍,值得讀者擁有。”預(yù)測(cè)結(jié)果為好評(píng)(類標(biāo)1),“很差,不建議買,準(zhǔn)備退貨?!苯Y(jié)果為差評(píng)(類標(biāo)0)。

1數(shù)據(jù)分析:2預(yù)測(cè)結(jié)果:[10]3真實(shí)結(jié)果:[1,0]4precisionrecallf1-scoresupport5601.001.001.001711.001.001.00189avg/total1.001.001.002

但存在一個(gè)問(wèn)題,由于數(shù)據(jù)量較小不具備代表性,而真實(shí)分析中會(huì)使用海量數(shù)據(jù)進(jìn)行輿情分析,預(yù)測(cè)結(jié)果肯定頁(yè)不是100%的正確,但是需要讓實(shí)驗(yàn)結(jié)果盡可能的好。最后補(bǔ)充一段降維繪制圖形的代碼,如下:

1#降維繪制圖形 2fromsklearn.decompositionimportPCA 3pca=PCA(n_components=2) 4newData=pca.fit_transform(X) 5printnewData 6 7pre=clf.predict(X) 8Y=[1,1,0,0,1,0,0,1,1,0] 9importmatplotlib.pyplotasplt10L1=[n[0]forninnewData]11L2=[n[1]forninnewData]12plt.scatter(L1,L2,c=pre,s=200)13plt.show()

輸出結(jié)果如圖所示,預(yù)測(cè)結(jié)果和真實(shí)結(jié)果都是一樣的,即[1,1,0,0,1,0,0,1,1,0]。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1224

    瀏覽量

    25446
  • 貝葉斯分類器
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    2374

原文標(biāo)題:樸素貝葉斯分類器詳解及中文文本輿情分析(附代碼實(shí)踐)

文章出處:【微信號(hào):rgznai100,微信公眾號(hào):rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    AI+能源數(shù)字化破局者故事5:謝 x IBM 咨詢之 “全球化經(jīng)營(yíng)與本地化適配”

    謝與 IBM 的合作建立在技術(shù)專長(zhǎng)、交付能力及本地化支持的基礎(chǔ)上,IBM 的強(qiáng)大技術(shù)實(shí)力和本地經(jīng)驗(yàn),使其成為謝推動(dòng)數(shù)字化轉(zhuǎn)型的重要合作伙伴
    的頭像 發(fā)表于 07-17 19:02 ?218次閱讀

    使用AICube導(dǎo)入數(shù)據(jù)點(diǎn)創(chuàng)建后提示數(shù)據(jù)不合法怎么處理?

    重現(xiàn)步驟 data目錄下 labels.txt只有英文 **錯(cuò)誤日志** 但是使用示例的數(shù)據(jù)可以完成訓(xùn)練部署
    發(fā)表于 06-24 06:07

    數(shù)據(jù)下載失敗的原因?

    數(shù)據(jù)下載失敗什么原因太大了嗎,小的可以下載,想把大的下載去本地訓(xùn)練報(bào)錯(cuò)網(wǎng)絡(luò)錯(cuò)誤 大的數(shù)據(jù)多大?數(shù)據(jù)量有多少?
    發(fā)表于 06-18 07:04

    VirtualLab:光柵的優(yōu)化與分析

    算法: TEA和FMM(也稱為RCWA)。比較了不同周期的兩種類型的光柵(正弦和閃耀)結(jié)果。 傾斜光柵的參數(shù)優(yōu)化及公差分析 以傅里模態(tài)法(FMM)作為參數(shù)優(yōu)化的核心,設(shè)計(jì)了一個(gè)傾斜光柵來(lái)
    發(fā)表于 05-23 08:49

    新能源:以科技創(chuàng)新為驅(qū)動(dòng)力 助推鋰電池行業(yè)高質(zhì)量發(fā)展

    新能源位于惠州市仲愷高新技術(shù)開發(fā)區(qū),廣東新能源科技股份有限公司(以下簡(jiǎn)稱“新能源”)
    的頭像 發(fā)表于 03-17 11:21 ?620次閱讀

    中科曙光旗下中科天璣推出全要素AI輿情系統(tǒng)

    近日,中科曙光旗下中科天璣正式推出實(shí)現(xiàn)數(shù)據(jù)要素覆蓋的AI輿情系統(tǒng)。該系統(tǒng)運(yùn)用DeepSeek、曙光神璣等大模型技術(shù)內(nèi)核,構(gòu)建覆蓋文本、視頻、圖像及跨平臺(tái)社交數(shù)據(jù)的全要素
    的頭像 發(fā)表于 02-28 16:13 ?903次閱讀

    大模型訓(xùn)練:開源數(shù)據(jù)算法的機(jī)遇與挑戰(zhàn)分析

    進(jìn)行多方位的總結(jié)和梳理。 在第二章《TOP 101-2024 大模型觀點(diǎn)》中,蘇州盛派網(wǎng)絡(luò)科技有限公司創(chuàng)始人兼首席架構(gòu)師蘇震巍分析了大模型訓(xùn)練過(guò)程中開源數(shù)據(jù)算法的重要性和影響,
    的頭像 發(fā)表于 02-20 10:40 ?616次閱讀
    大模型訓(xùn)練:開源<b class='flag-5'>數(shù)據(jù)</b>與<b class='flag-5'>算法</b>的機(jī)遇與挑戰(zhàn)<b class='flag-5'>分析</b>

    氣象百箱傳感器:全面監(jiān)測(cè),助力氣候分析與預(yù)報(bào)

    在氣象科學(xué)領(lǐng)域,氣象百箱傳感器作為數(shù)據(jù)采集的核心設(shè)備,以其全面的監(jiān)測(cè)能力,為氣候分析與預(yù)報(bào)提供了堅(jiān)實(shí)的數(shù)據(jù)基礎(chǔ),在氣象研究和服務(wù)社會(huì)等方面發(fā)揮著作用。 多要素監(jiān)測(cè),構(gòu)建氣候
    的頭像 發(fā)表于 02-19 09:39 ?432次閱讀

    蘭半導(dǎo)體完成數(shù)千萬(wàn)元天使輪融資

    近日,青島蘭半導(dǎo)體科技有限公司(蘭)成功完成了數(shù)千萬(wàn)元的天使輪融資。本輪融資由初芯基金領(lǐng)投,吸引了多家戰(zhàn)略方的跟投。
    的頭像 發(fā)表于 02-10 17:27 ?716次閱讀

    主動(dòng)學(xué)習(xí)在圖像分類技術(shù)中的應(yīng)用:當(dāng)前狀態(tài)與未來(lái)展望

    基于Transformer結(jié)構(gòu)提升模型預(yù)測(cè)性能,以確保模型預(yù)測(cè)結(jié)果的可靠性。 此外,本文還對(duì)各類主動(dòng)學(xué)習(xí)圖像分類算法下的重要學(xué)術(shù)工作進(jìn)行了實(shí)驗(yàn)對(duì)比,對(duì)各算法在不同規(guī)模
    的頭像 發(fā)表于 11-14 10:12 ?1272次閱讀
    主動(dòng)學(xué)習(xí)在圖像<b class='flag-5'>分類</b>技術(shù)中的應(yīng)用:當(dāng)前狀態(tài)與未來(lái)展望

    U盤存儲(chǔ)并聯(lián),算法交互輸出

    分: 數(shù)據(jù)管理模塊:負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)、檢索和管理,確保數(shù)據(jù)的完整性和一致性。 算法模塊:實(shí)現(xiàn)特定的數(shù)據(jù)
    發(fā)表于 10-28 07:36

    【飛凌嵌入式OK3576-C開發(fā)板體驗(yàn)】RKNN神經(jīng)網(wǎng)絡(luò)算法開發(fā)環(huán)境搭建

    download_model.sh 腳本,該腳本 將下載一個(gè)可用的 YOLOv5 ONNX 模型,并存放在當(dāng)前 model 目錄下,參考命令如下: 安裝COCO數(shù)據(jù),在深度神經(jīng)網(wǎng)絡(luò)算法中,模型的訓(xùn)練離不開大量的
    發(fā)表于 10-10 09:28

    人員軌跡分析算法有哪些?

    時(shí)段等。這些信息可以對(duì)城市規(guī)劃、交通管理、公共安全等方面具有重要的指導(dǎo)意義。而為了實(shí)現(xiàn)人員軌跡分析,我們需要使用一些專門的算法和技術(shù)。 下面是幾種常用的人員軌跡分析
    的頭像 發(fā)表于 09-26 10:42 ?929次閱讀

    濾波和卡爾曼濾波的區(qū)別

    先驗(yàn)概率和觀測(cè)數(shù)據(jù)相結(jié)合,來(lái)估計(jì)系統(tǒng)的狀態(tài)。濾波的核心思想是:在給定觀測(cè)數(shù)據(jù)的情況下,系統(tǒng)狀態(tài)的后驗(yàn)概率可以通過(guò)
    的頭像 發(fā)表于 08-01 15:25 ?1408次閱讀

    基于高光譜數(shù)據(jù)的典型地物分類識(shí)別方法研究

    隨著成像光譜儀器的廣泛應(yīng)用,利用光譜數(shù)據(jù)進(jìn)行物質(zhì)分類與識(shí)別已經(jīng)成為一項(xiàng)重要的研究?jī)?nèi)容,研究不同分類算法對(duì)最終的目標(biāo)識(shí)別準(zhǔn)確度具有重要意義。
    的頭像 發(fā)表于 07-18 14:43 ?865次閱讀
    基于高光譜<b class='flag-5'>數(shù)據(jù)</b>的典型地物<b class='flag-5'>分類</b>識(shí)別方法研究