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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

fasttext初步使用

發布時間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fasttext初步使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自:

http://blog.csdn.net/lxg0807/article/details/52960072#comments


訓練數據和測試數據來自網盤:

https://pan.baidu.com/s/1jH7wyOY

https://pan.baidu.com/s/1slGlPgx



訓練以上數據

# _*_coding:utf-8 _*_ import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) import fasttext #訓練模型 classifier = fasttext.supervised("news_fasttext_train.txt","news_fasttext.model",label_prefix="__label__")


進行測試:

# -*- coding:utf-8 -*-import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) import fasttext#load訓練好的模型 classifier = fasttext.load_model('news_fasttext.model.bin', label_prefix='__label__') result = classifier.test("news_fasttext_test.txt") print result.precision print result.recall

注意每次訓練的模型都有不同,所以測試的結果大概是0.87~0.92左右


進行最終評價:

# -*- coding:utf-8 -*-import logging logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) import fasttext#load訓練好的模型 classifier = fasttext.load_model('news_fasttext.model.bin', label_prefix='__label__') result = classifier.test("news_fasttext_test.txt") print result.precision print result.recall labels_right = [] texts = [] with open("news_fasttext_test.txt") as fr:lines = fr.readlines() for line in lines:labels_right.append(line.split("\t")[1].rstrip().replace("__label__",""))texts.append(line.split("\t")[0].decode("utf-8")) # print labels # print texts # break labels_predict = [e[0] for e in classifier.predict(texts)] #預測輸出結果為二維形式 # print labels_predicttext_labels = list(set(labels_right)) text_predict_labels = list(set(labels_predict)) print text_predict_labels print text_labelsA = dict.fromkeys(text_labels,0) #預測正確的各個類的數目 B = dict.fromkeys(text_labels,0) #測試數據集中各個類的數目 C = dict.fromkeys(text_predict_labels,0) #預測結果中各個類的數目 for i in range(0,len(labels_right)):B[labels_right[i]] += 1C[labels_predict[i]] += 1if labels_right[i] == labels_predict[i]:A[labels_right[i]] += 1print A print B print C #計算準確率,召回率,F值 for key in B:p = float(A[key]) / float(B[key])r = float(A[key]) / float(C[key])f = p * r * 2 / (p + r)print "%s:\tp:%f\t%fr:\t%f" % (key,p,r,f)

之所以搞這么一出,是因為fasttext提供的p值(準確率)和r值(召回率)只是針對所有結果的,而不是針對各個類別分別進行計算p值(準確率)和r值(召回率)的,所以該作者自己寫了計算方法。




輸出結果:

[u'affairs', u'fashion', u'lottery', u'house', u'sports', u'game', u'economic', u'ent', u'edu', u'home', u'stock', u'constellation', u'science'] ['affairs', 'fashion', 'house', 'sports', 'game', 'economic', 'ent', 'edu', 'home', 'stock', 'science'] {'science': 8921, 'affairs': 8544, 'fashion': 2148, 'house': 9572, 'sports': 9814, 'game': 9389, 'economic': 9492, 'ent': 9660, 'edu': 9671, 'home': 8027, 'stock': 8525} {'science': 10000, 'affairs': 10000, 'fashion': 3369, 'house': 10000, 'sports': 10000, 'game': 10000, 'economic': 10000, 'ent': 10000, 'edu': 10000, 'home': 10000, 'stock': 10000} {u'science': 10311, u'affairs': 8953, u'fashion': 2176, u'lottery': 28, u'house': 10502, u'sports': 10288, u'game': 10182, u'economic': 11087, u'ent': 10940, u'edu': 10991, u'home': 8171, u'constellation': 466, u'stock': 9274} science: p:0.892100 0.865193r: 0.878440 affairs: p:0.854400 0.954317r: 0.901599 fashion: p:0.637578 0.987132r: 0.774752 house: p:0.957200 0.911445r: 0.933763 sports: p:0.981400 0.953927r: 0.967468 game: p:0.938900 0.922117r: 0.930433 economic: p:0.949200 0.856138r: 0.900270 ent: p:0.966000 0.882998r: 0.922636 edu: p:0.967100 0.879902r: 0.921443 home: p:0.802700 0.982377r: 0.883496 stock: p:0.852500 0.919237r: 0.884611


總結

以上是生活随笔為你收集整理的fasttext初步使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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