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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

朴素贝叶斯应用:垃圾邮件分类

發布時間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 朴素贝叶斯应用:垃圾邮件分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 數據準備:收集數據與讀取

2. 數據預處理:處理數據

3. 訓練集與測試集:將先驗數據按一定比例進行拆分。

4. 提取數據特征,將文本解析為詞向量 。

5. 訓練模型:建立模型,用訓練數據訓練模型。即根據訓練樣本集,計算詞項出現的概率P(xi|y),后得到各類下詞匯出現概率的向量 。

6. 測試模型:用測試數據集評估模型預測的正確率。

混淆矩陣

準確率、精確率、召回率、F值

7. 預測一封新郵件的類別。

import csv file_path =r'E:\jupyter\SMSSpamCollectionjsn.txt'#原始的郵件 sms=open(file_path,'r',encoding='utf-8') csv_reader=csv.reader(sms,delimiter='\t') sms_data=[]#郵件的內容 sms_label=[]#郵件的類別 for line in csv_reader:sms_label.append(line[0])sms_data.append(line[1]) sms.close()#對數據預處理 sms_data1 = []#存放處理過的郵件 for line in sms_data:#對郵件的內容進行處理for k in line:if k.isalpha() is False:# 不是字母,發生替換操作:newString = line.replace(k," ")dataList = newString.split(" ")sms_data1.append(dataList)#去掉長度小于3的詞和沒有語義的詞 sms_data2= [] for line in sms_data:dataList = []for i in line:if i != '' and len(i) > 3 and i.isalpha():dataList.append(i)dataString = ' '.join(dataList)sms_data.append(dataString) sms_data =sms_data2##訓練集與測試集:將先驗數據按一定比例進行拆分 from sklearn.model_selection import train_test_split x_train,x_test,y_train,y_test = train_test_split(sms_data2,sms_label,test_size=0.3,random_state=0,stratify=sms_label)#提取數據特征,將文本解析為詞向量 from sklearn.feature_extraction.text import TfidfVectorizer vectorizer=TfidfVectorizer(min_df=2,ngram_range=(1,2),stop_words='english',strip_accents='unicode',norm='l2') X_train=vectorizer.fit_transform(x_train) X_test=vectorizer.transform(x_test)#樸素貝葉斯分類器 from sklearn.navie_bayes import MultinomialNB clf= MultinomialNB().fit(X_train,y_train) y_nb_pred=clf.predict(X_test)#分類結果顯示 from sklearn.metrics import confusion_matrix from sklearn.metrics import classification_report print(y_nb_pred.shape,y_nb_pred)#x_test預測結果 print('nb_confusion_matrix:') cm=confusion_matrix(y_test,y_nb_pred)#混淆矩陣 print(cm) print('nb_classification_report:') cr=classification_report(y_test,y_nb_pred)#主要分類指標的文本報告 print(cr)

  

?

轉載于:https://www.cnblogs.com/1158Z/p/10078224.html

總結

以上是生活随笔為你收集整理的朴素贝叶斯应用:垃圾邮件分类的全部內容,希望文章能夠幫你解決所遇到的問題。

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