宝贝腿开大点我添添你视频男男,中文字幕熟女人妻av一区二区三区,爱色成人网,大地资源高清播放在线观看在线电影在线观看 ,777米奇影视第四色

集團(tuán)站切換校區(qū)

驗(yàn)證碼已發(fā)送,請(qǐng)查收短信

復(fù)制成功
微信號(hào):togogoi
添加微信好友, 詳細(xì)了解課程
已復(fù)制成功,如果自動(dòng)跳轉(zhuǎn)微信失敗,請(qǐng)前往微信添加好友
打開微信
圖標(biāo)

業(yè)界新聞

當(dāng)前位置:首頁(yè) > >業(yè)界新聞 > >

人工智能AI培訓(xùn)_垃圾郵件識(shí)別案例

發(fā)布時(shí)間: 2019-09-08 13:28:19

  人工智能AI培訓(xùn)_垃圾郵件識(shí)別案例

  1.總體思路
  1、從電子郵箱中收集垃圾和非垃圾郵件訓(xùn)練集。
  2、讀取全部訓(xùn)練集,刪除其中的干擾字符,例如【】*。、,等等,然后分詞,刪除長(zhǎng)度為1的單個(gè)字。
  3、統(tǒng)計(jì)全部訓(xùn)練集中詞語(yǔ)的出現(xiàn)次數(shù),截取出現(xiàn)次數(shù)最多的前N(可以根據(jù)實(shí)際情況進(jìn)行調(diào)整)個(gè)。
  4、根據(jù)每個(gè)經(jīng)過(guò)第2步預(yù)處理后垃圾郵件和非垃圾郵件內(nèi)容生成特征向量,統(tǒng)計(jì)第3步中得到的N個(gè)詞語(yǔ)分別在本郵件中的出現(xiàn)頻率。
  5、根據(jù)第4步中得到特征向量和已知郵件分類創(chuàng)建并訓(xùn)練樸素貝葉斯模型。
  6、讀取測(cè)試郵件,參考第2步,對(duì)郵件文本進(jìn)行預(yù)處理,提取特征向量。

  7、使用第5步中訓(xùn)練好的模型,根據(jù)第6步提取的特征向量對(duì)郵件進(jìn)行分類。

  2.代碼目錄結(jié)構(gòu)

AI培訓(xùn)

  3.編寫mail_savemodel.py文件
  3.1.導(dǎo)入需要用到的標(biāo)準(zhǔn)庫(kù)和擴(kuò)展庫(kù)對(duì)象
  from re import sub
  from os import listdir
  from collections import Counter
  from itertools import chain
  from numpy import array
  from jieba import cut
  from sklearn.externals import joblib
  from sklearn.naive_bayes import MultinomialNB

  ?3.2.讀取全部訓(xùn)練集,刪除干擾字符或長(zhǎng)度為1的單詞
  ?#存放所有文件中的單詞
  ?#每個(gè)元素是一個(gè)子列表,其中存放一個(gè)文件中的單詞
  ?allWords = []
  ?def getWordsFromFile(txtFile):
  ?    words = []
  ?    with open(txtFile,encoding="utf8") as fp:
  ?        for line in fp:
  ?            line = line.strip()
  ?            #過(guò)濾干擾字符或無(wú)效字符
  ?            line = sub(r'[.【】0-9、-。,!~\*]','',line)
  ?            line = cut(line)
  ?            words.extend(line)
  ?    return words
  ??3.3.獲取并返回出現(xiàn)次數(shù)最多的前topN個(gè)單詞
  ?def getTopNWords(topN):
  ?    #按文件編號(hào)順序處理當(dāng)前文件夾中所有記事本文件
  ?    #共151封郵件內(nèi)容,0.txt到126.txt是垃圾郵件內(nèi)容
  ?    #127.txt到150.txt為正常郵件內(nèi)容
  ?    txtFiles = ["data/"+str(i)+".txt" for i in range(151)]
  ?    #獲取全部單詞
  ?    for txtFile in txtFiles:
  ?        allWords.append(getWordsFromFile(txtFile))
  ?    #獲取并返回出現(xiàn)次數(shù)最多的前topN個(gè)單詞
  ?    freq = Counter(chain(*allWords))
  ?    return [w[0] for w in freq.most_common(topN)]

  ?#全部訓(xùn)練集中出現(xiàn)次數(shù)最多的前600個(gè)單詞
  ?topWords = getTopNWords(600)
  ??3.4.創(chuàng)建貝葉斯模型,使用已有數(shù)據(jù)進(jìn)行訓(xùn)練
  ?#獲取特征向量,前600個(gè)單詞的每個(gè)單詞在每個(gè)郵件中出現(xiàn)的頻率
  ?vector = []
  ?for words in allWords:
      temp = list(map(lambda  x:words.count(x),topWords))
  ?    vector.append(temp)
  ?vector = array(vector)
  ?#郵件標(biāo)簽,1表示垃圾郵件,0表示正常郵件
  ?labels = array([1]*127+[0]*24)
  ?#創(chuàng)建模型,使用已知訓(xùn)練集進(jìn)行訓(xùn)練
  ?model = MultinomialNB()
  ?model.fit(vector,labels)
  ??3.5.保存模型
joblib.dump(model,"垃圾郵件分類器.pkl")
with open("topWords.txt","w",encoding="utf8") as fp:
    fp.write(",".join(topWords))
print("保存topWords成功.")

  ?4.編寫mail_loadmodel.py文件
  ?4.1.加載模型
def getWordsFromFile(txtFile):
    words = []
    with open(txtFile,encoding="utf8") as fp:
        for line in fp:
            line = line.strip()
            #過(guò)濾干擾字符或無(wú)效字符
            line = sub(r'[.【】0-9、-。,!~\*]','',line)
            line = cut(line)
            words.extend(line)
    return words

model = joblib.load("垃圾郵件分類器.pkl")
print('加載模型和訓(xùn)練結(jié)果成功。')
with open("topWords.txt",encoding="utf8") as fp:
    topWords = fp.read().split(",")

  ?4.2.使用訓(xùn)練好的模型對(duì)未知郵件內(nèi)容進(jìn)行分類。
def predict(txtFile):
    #獲取指定郵件文件內(nèi)容,返回分類結(jié)果
    words = getWordsFromFile(txtFile)
    currentVector = array(tuple(map(lambda x:words.count(x),topWords)))
    result = model.predict(currentVector.reshape(1,-1))
    return "垃圾郵件" if result==1 else "正常郵件"

#151.txt至155.txt為測(cè)試郵件的內(nèi)容
for mail in ('data/%d.txt'%i for i in range(151,156)):
    print(mail,predict(mail),sep=":")
?

上一篇: 大數(shù)據(jù)培訓(xùn)_使用maven工程構(gòu)建java 的hadoop客戶端

下一篇: Java培訓(xùn)_SpringCloud構(gòu)建模塊化工程實(shí)現(xiàn)全局版本控制

在線咨詢 ×

您好,請(qǐng)問(wèn)有什么可以幫您?我們將竭誠(chéng)提供最優(yōu)質(zhì)服務(wù)!