




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
機(jī)器學(xué)習(xí)與自然語(yǔ)言處理Python自然語(yǔ)言處理第十章課前回顧無(wú)監(jiān)督學(xué)習(xí)任務(wù)文本聚類(lèi)K-means算法流程文本分類(lèi)實(shí)戰(zhàn):中文垃圾郵件分類(lèi)03實(shí)現(xiàn)代碼評(píng)價(jià)指標(biāo)實(shí)現(xiàn)代碼
數(shù)據(jù)列表:數(shù)據(jù)名稱數(shù)據(jù)類(lèi)型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ù)測(cè)、評(píng)價(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è)以上的英文+空格符號(hào),后面替換成一個(gè)空格
pattern=pile('[{}\\s]'.format(re.escape(r'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'))+r"{2,}")fortextincorpus:#分詞,按停用詞表過(guò)濾
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對(duì)切分文字匹配出數(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劃分測(cè)試、訓(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ù)測(cè),每條記錄返回0,1foridxinidx_list:print("原來(lái)的郵件類(lèi)別:",LABELS[int(y_test[idx])])print("預(yù)測(cè)的郵件類(lèi)別:",LABELS[int(y_pred[idx])])print("正文:\n",corpus_test[idx])print("=========================")show_prediction([0,1])
classifier.py模型訓(xùn)練與預(yù)測(cè)實(shí)現(xiàn)代碼
classifier.py模型訓(xùn)練與預(yù)測(cè)文本分類(lèi)實(shí)戰(zhàn):中文垃圾郵件分類(lèi)03實(shí)現(xiàn)代碼評(píng)價(jià)指標(biāo)評(píng)價(jià)指標(biāo)分類(lèi)結(jié)果的四種可能:-Truepositives(TP):實(shí)正分正(正確)-Falsepositives(FP):實(shí)負(fù)分正(錯(cuò)誤)-Falsenegatives(FN):實(shí)正分負(fù)(錯(cuò)誤)-Truenegatives(TN):實(shí)負(fù)分負(fù)(正確)評(píng)價(jià)指標(biāo)混淆矩陣(ConfusionMatrix):評(píng)價(jià)指標(biāo)準(zhǔn)確率(Pression)、召回率(Recall)、精確率(Accuray)的公式:評(píng)價(jià)指標(biāo)準(zhǔn)確率和召回率函數(shù)圖:評(píng)價(jià)指標(biāo)F1-measure:評(píng)價(jià)指標(biāo)fromsklearn.linear_modelimportLogisticRegressionfromsklearn.metricsimportconfusion_matrix,classification_reportdefevaluate_models():models={"樸素貝葉斯":BernoulliNB(),"邏輯回歸":LogisticRegression()}formodel_name,modelinmodels.items():print("分類(lèi)器:",model_name)model.fit(x_train,y_train)y_pred=model.predict(x_test)report=classification_report(y_test,y_pred,target_n
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 地鐵上學(xué)生做數(shù)學(xué)試卷
- 富平縣中考二模數(shù)學(xué)試卷
- 肌膚護(hù)理流程課件
- 福州中學(xué)半期考數(shù)學(xué)試卷
- 輔仁高級(jí)中學(xué)數(shù)學(xué)試卷
- 高青一中數(shù)學(xué)試卷
- 肉牛養(yǎng)殖技術(shù)課件
- 2024年11月河南省內(nèi)黃興福村鎮(zhèn)銀行招考9名工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 黔南貴定縣“雁歸興貴?才聚麥溪”人才引進(jìn)考試真題2024
- 典中點(diǎn)蘇教數(shù)學(xué)試卷
- 國(guó)家開(kāi)放大學(xué)《監(jiān)督學(xué)》形考任務(wù)( 1-4)試題和答案解析
- 婚前協(xié)議書(shū)(完整版)-婚前協(xié)議書(shū)模板
- 完工付款最終付款申請(qǐng)表
- 人工動(dòng)靜脈內(nèi)瘺
- 新版(七步法案例)PFMEA
- 2022年重慶優(yōu)秀中考作文經(jīng)典范例合集-2022中考作文
- 采暖管道安裝工程標(biāo)準(zhǔn)規(guī)范
- 慢阻肺隨訪記錄表正式版
- 廣西大學(xué)數(shù)學(xué)建模競(jìng)賽選拔賽題目
- 受戒申請(qǐng)表(共3頁(yè))
- 低鈉血癥的護(hù)理
評(píng)論
0/150
提交評(píng)論