imdb数据集_朴素贝叶斯分类imdb(代码分享)
生活随笔
收集整理的這篇文章主要介紹了
imdb数据集_朴素贝叶斯分类imdb(代码分享)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這部分是與bilibili上的視頻對應(yīng)的: https://www.bilibili.com/video/BV1ie411x7YC#reply2765711640
應(yīng)有些網(wǎng)友朋友的要求,放一下源碼:
from keras.datasets import imdb from sklearn.naive_bayes import MultinomialNB from sklearn.naive_bayes import BernoulliNB from sklearn.metrics import accuracy_score from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1_score import numpy as np import datetime# 1、load data time1 = datetime.datetime.now()# 參數(shù)num_words = dimension 的意思是僅保留訓(xùn)練數(shù)據(jù)的前dimension個最常見出現(xiàn)的單詞,低頻單詞將被舍棄。 dimension = 10000 (X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=dimension)# 2、preprocess data # 定義數(shù)據(jù)集向量化的函數(shù)(轉(zhuǎn)換為one hot編碼) def vectorize_sequences(sequences, dimension=dimension):results = np.zeros((len(sequences), dimension)) #數(shù)據(jù)集長度for i, sequence in enumerate(sequences):results[i, sequence] = 1 # one-hotreturn results# 數(shù)據(jù)預(yù)處理:轉(zhuǎn)化為one hot編碼 X_train = vectorize_sequences(X_train) X_test = vectorize_sequences(X_test)time2 = datetime.datetime.now() print("data load and preprocess takes "+str((time2-time1).seconds)+" s")# 3、model train # 多項式分布、伯努利分布:https://blog.csdn.net/qq_27009517/article/details/80044431 # 二者的計算粒度不一樣,多項式模型以單詞為粒度,伯努利模型以文件為粒度,因此二者的先驗概率和類條件概率的計算方法都不同。 # 計算后驗概率時,對于一個文檔d,多項式模型中,只有在d中出現(xiàn)過的單詞,才會參與后驗概率計算,伯努利模型中,沒有在d中出現(xiàn),但是在全局單詞表中出現(xiàn)的單詞,也會參與計算,不過是作為“反方”參與的。 # 當(dāng)訓(xùn)練集文檔較短,也就說不太會出現(xiàn)很多重復(fù)詞的時候,多項式和伯努利模型公式的分子相等,多項式分母值大于伯努利分子值,因此多項式的似然估計值會小于伯努利的似然估計值。 # 所以,當(dāng)訓(xùn)練集文本較短時,我們更傾向于使用伯努利模型。而文本較長時,我們更傾向于多項式模型,因為,在一篇文檔中的高頻詞,會使該詞的似然概率值相對較大。# 高斯分布: # 適合連續(xù)變量time1 = datetime.datetime.now() # model = MultinomialNB() model = BernoulliNB() model.fit(X_train,y_train)time2 = datetime.datetime.now() print("model train takes "+str((time2-time1).seconds)+" s")# 4、model predict time1 = datetime.datetime.now() y_pred = model.predict(X_test) time2 = datetime.datetime.now() print("model predict takes "+str((time2-time1).seconds)+" s")# 5、model evaluation print("model accuracy is " +str(accuracy_score(y_test, y_pred))) print("model precision is "+str(precision_score(y_test, y_pred, average='macro'))) print("model recall is "+str(recall_score(y_test, y_pred, average='macro'))) print("model f1_score is "+str(f1_score(y_test, y_pred, average='macro')))總結(jié)
以上是生活随笔為你收集整理的imdb数据集_朴素贝叶斯分类imdb(代码分享)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 舍得2013年酒怎么认真假?
- 下一篇: 谁知道王者瓷砖是几线品牌?能说下吗?