版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
機(jī)器學(xué)習(xí)與自然語言處理Python自然語言處理第十章課前回顧無監(jiān)督學(xué)習(xí)任務(wù)文本聚類K-means算法流程文本分類實(shí)戰(zhàn):中文垃圾郵件分類03實(shí)現(xiàn)代碼評價(jià)指標(biāo)實(shí)現(xiàn)代碼
數(shù)據(jù)列表:數(shù)據(jù)名稱數(shù)據(jù)類型ham_data.txt正常郵件spam_data.txt垃圾郵件實(shí)現(xiàn)代碼
代碼組織:-data_loader.py:讀取郵件數(shù)據(jù)、停用詞列表-data_processing.py:數(shù)據(jù)清洗以及數(shù)據(jù)集轉(zhuǎn)化-classifier.py:模型訓(xùn)練、預(yù)測、評價(jià)實(shí)現(xiàn)代碼defget_data(path=DATA_DIR):withopen(path+"/ham_data.txt",encoding="utf8")asham_f,\open(path+"/spam_data.txt",encoding="utf8")asspam_f:ham_data=[x.strip()forxinham_f.readlines()ifx.strip()]spam_data=[x.strip()forxinspam_f.readlines()ifx.strip()]ham_label=np.ones(len(ham_data)).tolist()spam_label=np.zeros(len(spam_data)).tolist()corpus=ham_data+spam_datalabels=ham_label+spam_labelreturncorpus,labelsdefget_stopwords(path=DATA_DIR):withopen(path+"/stop_words.utf8",encoding="utf8")asf:stopword_list=set([x.strip()forxinf.readlines()]+list(r'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'))returnstopword_list
data_loader.py實(shí)現(xiàn)代碼defnorm_corpus(corpus,stopword_list):result_corpus=[]##匹配連續(xù)2個(gè)以上的英文+空格符號,后面替換成一個(gè)空格
pattern=pile('[{}\\s]'.format(re.escape(r'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'))+r"{2,}")fortextincorpus:#分詞,按停用詞表過濾
seg_text=''.join([x.strip()forxinjieba.cut(text)ifx.strip()notinstopword_list])result_corpus.append(pattern.sub("",seg_text))returnresult_corpusdefconvert_data(norm_train,norm_test,vectorizer):##fit把數(shù)據(jù)集中所有文字按規(guī)則(默認(rèn)空格)切分成詞元以后每個(gè)詞元記錄一個(gè)數(shù)字
##transform對切分文字匹配出數(shù)字id,作為向量維度下標(biāo)
##fit_transform:兩個(gè)功能合在一起
train_features=vectorizer.fit_transform(norm_train)test_feature=vectorizer.transform(norm_test)returntrain_features,test_feature,vectorizer
data_processing.py實(shí)現(xiàn)代碼DATA_DIR=data_loader.DATA_DIRcorpus,labels=data_loader.get_data(DATA_DIR)stopwords=data_loader.get_stopwords(DATA_DIR)#train_test_split將數(shù)據(jù)集按test_size劃分測試、訓(xùn)練集,random_state相同每次隨機(jī)結(jié)果都一樣corpus_train,corpus_test,y_train,y_test=train_test_split(corpus,labels,test_size=0.4,random_state=1)norm_train=data_processing.norm_corpus(corpus_train,stopwords)norm_test=data_processing.norm_corpus(corpus_test,stopwords)#文本數(shù)據(jù)轉(zhuǎn)成矩陣形式;CountVectorizer是轉(zhuǎn)換器,保留篇頻最小值為2x_train,x_test,vectorizer=data_processing.convert_data(norm_train,norm_test,CountVectorizer(min_df=2))
classifier.py加載、轉(zhuǎn)換數(shù)據(jù)實(shí)現(xiàn)代碼print("全部數(shù)據(jù)數(shù)量:",len(corpus_train)+len(corpus_test))print("訓(xùn)練數(shù)據(jù)數(shù)量:",len(corpus_train),"\n")print("分詞后的文本樣例:\n",norm_train[1])print("訓(xùn)練集特征詞數(shù)量:",len(vectorizer.get_feature_names()))
classifier.py打印數(shù)據(jù)信息實(shí)現(xiàn)代碼fromsklearn.naive_bayesimportBernoulliNBLABELS=["垃圾郵件","正常郵件"]defshow_prediction(idx_list):model=BernoulliNB()#選擇模型
model.fit(x_train,y_train)#訓(xùn)練模型
y_pred=model.predict(x_test)#模型預(yù)測,每條記錄返回0,1foridxinidx_list:print("原來的郵件類別:",LABELS[int(y_test[idx])])print("預(yù)測的郵件類別:",LABELS[int(y_pred[idx])])print("正文:\n",corpus_test[idx])print("=========================")show_prediction([0,1])
classifier.py模型訓(xùn)練與預(yù)測實(shí)現(xiàn)代碼
classifier.py模型訓(xùn)練與預(yù)測文本分類實(shí)戰(zhàn):中文垃圾郵件分類03實(shí)現(xiàn)代碼評價(jià)指標(biāo)評價(jià)指標(biāo)分類結(jié)果的四種可能:-Truepositives(TP):實(shí)正分正(正確)-Falsepositives(FP):實(shí)負(fù)分正(錯(cuò)誤)-Falsenegatives(FN):實(shí)正分負(fù)(錯(cuò)誤)-Truenegatives(TN):實(shí)負(fù)分負(fù)(正確)評價(jià)指標(biāo)混淆矩陣(ConfusionMatrix):評價(jià)指標(biāo)準(zhǔn)確率(Pression)、召回率(Recall)、精確率(Accuray)的公式:評價(jià)指標(biāo)準(zhǔn)確率和召回率函數(shù)圖:評價(jià)指標(biāo)F1-measure:評價(jià)指標(biāo)fromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimportconfusion_matrix,classification_reportdefevaluate_models():models={"樸素貝葉斯":BernoulliNB(),"邏輯回歸":LogisticRegression()}formodel_name,modelinmodels.items():print("分類器:",model_name)model.fit(x_train,y_train)y_pred=model.predict(x_test)report=classification_report(y_test,y_pred,target_n
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鹽城師范學(xué)院《數(shù)字媒體設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024贊助商銷售合同范文
- 蘇教版四年級下冊數(shù)學(xué)第三單元 三位數(shù)乘兩位數(shù) 測試卷【學(xué)生專用】
- 北師大版四年級上冊數(shù)學(xué)第三單元 乘法 測試卷帶答案(b卷)
- 2024年腈綸扁平絲項(xiàng)目發(fā)展計(jì)劃
- 2024采購合同審查要點(diǎn)
- 年產(chǎn)2GW綠能光伏用高分子新材料組件項(xiàng)目 (1)環(huán)評報(bào)告表
- 電氣成套控制設(shè)備制造及銷售項(xiàng)目環(huán)評報(bào)告表
- 中國食品薄膜行業(yè)發(fā)展環(huán)境、供需態(tài)勢及投資前景分析報(bào)告(智研咨詢發(fā)布)
- 2024版土地轉(zhuǎn)讓協(xié)議合同
- 生產(chǎn)現(xiàn)場作業(yè)十不干PPT課件
- 《孔乙己》公開課一等獎(jiǎng)PPT優(yōu)秀課件
- 美的中央空調(diào)故障代碼H系列家庭中央空調(diào)(第一部分多聯(lián)機(jī))
- 物料承認(rèn)管理辦法
- 業(yè)主委員會成立流程圖
- (完整版)全usedtodo,beusedtodoing,beusedtodo辨析練習(xí)(帶答案)
- 小學(xué)綜合實(shí)踐活動(dòng)方便筷子教案三年級上冊精品
- 廣聯(lián)達(dá)辦公大廈工程施工組織設(shè)計(jì)
- 疑難病例HELLP綜合征
- Tiptop管理員手冊
- 財(cái)務(wù)報(bào)告模版(向股東會、董事會)
評論
0/150
提交評論