fasttext初步使用
2017-09-01 10:36
330 查看
转载自:
http://blog.csdn.net/lxg0807/article/details/52960072#comments
训练数据和测试数据来自网盘:
https://pan.baidu.com/s/1jH7wyOY https://pan.baidu.com/s/1slGlPgx
训练以上数据
进行测试:
注意每次训练的模型都有不同,所以测试的结果大概是0.87~0.92左右
进行最终评价:
之所以搞这么一出,是因为fasttext提供的p值(准确率)和r值(召回率)只是针对所有结果的,而不是针对各个类别分别进行计算p值(准确率)和r值(召回率)的,所以该作者自己写了计算方法。
输出结果:
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_predict
text_labels = list(set(labels_right))
text_predict_labels = list(set(labels_predict))
print text_predict_labels
print text_labels
A = 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]] += 1
C[labels_predict[i]] += 1
if labels_right[i] == labels_predict[i]:
A[labels_right[i]] += 1
print 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
相关文章推荐
- linux命令使用初步
- 使用VIM开发软件项目 - (3) vimrc初步
- iOS开发学习总结——UITableView使用初步
- [整理]GRIDVIEW使用初步
- 关于对象池的初步理解与使用
- u4初步使用整理(一)
- Ubuntu Linux下FastDFS分布式文件系统的安装、配置与初步使用
- Beyond Compare使用初步-Folder Compare
- Silverlight的空间Combobox的初步使用)
- ConstraintLayout 初步理解和使用
- ArrayList和Iterator的初步使用(二)
- slf4j初步使用之以当前登录用户命名文件名
- Asp.Net MVC 之 Autofac 初步使用3 集成web api
- jQuery的初步使用
- Cocos2dx 3.1.1 学习笔记整理(4):事件监听与Action的初步使用
- junit初步使用小记
- Hive学习之一:安装与初步使用
- Ubuntu14.04下初步使用MongoDB
- JUnit单元测试的初步使用
- 【Expression 序列化】WCF的简单使用及其Expression Lambada的序列化问题初步解决方案