转载自:

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初步使用相关推荐

  1. 学习笔记四:word2vec和fasttext

    FastText:快速的文本分类器 文章目录 一.word2vec 1.1 word2vec为什么 不用现成的DNN模型 1.2 word2vec两种模型:CBOW和Skip-gram 1.2 wor ...

  2. TensorRT 7.2.1开发初步

    TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...

  3. SOC,System on-a-Chip技术初步

    SOC,System on-a-Chip技术初步 S O C(拼作S-O-C)是一种集成电路,它包含了电子系统在单个芯片上所需的所有电路和组件.它可以与传统的计算机系统形成对比,后者由许多不同的组件组 ...

  4. 《OpenCV3编程入门》学习笔记3 HighGUI图形用户界面初步

    第3章 HighGUI图形用户界面初步 3.1 图像的载入.显示和输出到文件 1.OpenCV命名空间2种访问方法 (1)代码开头加:usingnamespace cv; (2)每个类或函数前加:cv ...

  5. 初步判断内存泄漏方法

    有时候,内存泄漏不明显,或者怀疑系统有内存泄漏,我们可以通过下面介绍的方法初步确认系统是否存在内存泄漏. 首先在Java命令行中增加-verbose:gc参数, 然后重新启动java进程. 当系统运行 ...

  6. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  7. 游戏AI之初步介绍(0)

    目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...

  8. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  9. 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da)

    by Donavon West 由Donavon West 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da) (A first look: do expr ...

最新文章

  1. PostgreSQL中Timestamp转成世纪秒(Unix时间戳)
  2. 3种Python字典合并方法
  3. vSphere5.0配置分布式交换机
  4. [转]简单介绍如何用Reporting Service制作报表
  5. ElasticSearch入门 附.Net Core例子
  6. C++实现utf8和gbk编码字符串互相转换
  7. 无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang
  8. phpstorm配置yaf代码自动补全提示
  9. 开源数据库这么香,为什么我们还要下功夫自研?
  10. 【openMV】oenMV之图像基本运算操作
  11. c++分割字符串方法
  12. 软件安装下载的镜像站、国内源
  13. 机器学习基础(四)——持久化分类器
  14. d1分辨率和960分辨率_选择2D艺术资产的分辨率
  15. 注塑成型工艺流程四大知识点总结
  16. 大数据、人工智能、VR、Docker、前端,双11技术视频、讲义、文章一键get
  17. mybatis 配置多数据源 java,SpringBoot+MyBatisPlus配置多数据源读写分离
  18. vue3.0需要学习的技术栈
  19. XMU2018摸底测试 星际战争I(Easy)
  20. 个人小作品之迷你音乐播放器(移动端)

热门文章

  1. 真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法
  2. JS疑惑-2(作用域)
  3. Bootstrap模态框遮罩问题
  4. JS 中判断一个对象是否为数组对象?
  5. android 获取sim卡,Android 获取手机SIM卡运营商
  6. 使用rem的简单处理
  7. vue的props实现父组件变化子组件一起变化
  8. DIV布局的设置(水平或者垂直居中)
  9. 导入时间过长,请求变成404,导入成功后后台会出现java.io.IOException: 您的主机中的软件中止了一个已建立的连接
  10. 人工机器:深度学习CNN到底实现了什么